0 txs
12 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balance
viewfunction balance() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
balancer
viewfunction balancer() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
earned
viewfunction earned(address _account, address _rewardToken) view returns (uint256)
ependle
viewfunction ependle() view returns (address)
ePendleRewardPool
viewfunction ePendleRewardPool() view returns (address)
eqb
viewfunction eqb() view returns (address)
FEE_PRECISION
viewfunction FEE_PRECISION() view returns (uint256)
feeRecipient
viewfunction feeRecipient() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
harvestFeeRate
viewfunction harvestFeeRate() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isRewardToken
viewfunction isRewardToken(address) view returns (bool)
name
viewfunction name() view returns (string)
paused
viewfunction paused() view returns (bool)
pendle
viewfunction pendle() view returns (address)
rewards
viewfunction rewards(address) view returns (uint256 rewardPerTokenStored, uint256 queuedRewards)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
smartConvertor
viewfunction smartConvertor() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
userHarvest
viewfunction userHarvest() view returns (bool)
userRewards
viewfunction userRewards(address, address) view returns (uint256 userRewardPerTokenPaid, uint256 rewards)
weth
viewfunction weth() view returns (address)
withdrawalFeeRate
viewfunction withdrawalFeeRate() view returns (uint256)
xEqb
viewfunction xEqb() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 _amount) returns (uint256)
depositAll
nonpayablefunction depositAll() returns (uint256)
getReward
nonpayablefunction getReward(address _account)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
harvest
nonpayablefunction harvest()
inCaseTokensGetStuck
nonpayablefunction inCaseTokensGetStuck(address _token)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(string _name, string _symbol)
pause
nonpayablefunction pause()
queueNewRewards
nonpayablefunction queueNewRewards(address _rewardToken, uint256 _rewards)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setHarvestFeeRate
nonpayablefunction setHarvestFeeRate(uint256 _feeRate)
setParams
nonpayablefunction setParams(address _pendle, address _ependle, address _ePendleRewardPool, address _feeRecipient, address _wethAddr, address _balancerAddr, address _smartConvertor, address _eqb, address _xEqb, bytes32 _banlancerWethPendlePoolId)
setUserHarvest
nonpayablefunction setUserHarvest(bool _userHarvest)
setWithdrawalFeeRate
nonpayablefunction setWithdrawalFeeRate(uint256 _feeRate)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 _shares) returns (uint256)
withdrawAll
nonpayablefunction withdrawAll() returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposited
event Deposited(address indexed _user, uint256 _amount)
Harvested
event Harvested(address indexed _rewardToken, uint256 _amount, uint256 _harvestFee)
HarvestFeeRateUpdated
event HarvestFeeRateUpdated(uint256 _feeRate)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
RewardAdded
event RewardAdded(address indexed _rewardToken, uint256 _reward)
RewardPaid
event RewardPaid(address indexed _user, address indexed _rewardToken, uint256 _reward)
RewardTokenAdded
event RewardTokenAdded(address indexed _rewardToken)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
WithdrawalFeeRateUpdated
event WithdrawalFeeRateUpdated(uint256 _feeRate)
Withdrawn
event Withdrawn(address indexed _user, uint256 _share, uint256 _amount, uint256 _withdrawalFee)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614b1d80620000f46000396000f3fe6080604052600436106103595760003560e01c80637bb7bed1116101bb578063b5fd73f8116100f7578063db3015e611610095578063def68a9c1161006f578063def68a9c14610a5d578063e563037e14610a7d578063e63a391f14610a9e578063e8f6fd7f14610ab557600080fd5b8063db3015e6146109eb578063dd62ed3e14610a02578063de5f626814610a4857600080fd5b8063c00007b0116100d1578063c00007b01461096f578063c772c9ad1461098f578063d547741f146109aa578063d8e0cf07146109ca57600080fd5b8063b5fd73f814610909578063b69ef8a81461093a578063b6b55f251461094f57600080fd5b80639d5b9f6511610164578063a2c530da1161013e578063a2c530da14610869578063a457c2d714610889578063a9059cbb146108a9578063a980356a146108c957600080fd5b80639d5b9f651461081d578063a217fddf1461083d578063a223f8211461085257600080fd5b806391d148541161019557806391d14854146107a257806393d484b0146107e857806395d89b411461080857600080fd5b80637bb7bed1146107585780638456cb5914610778578063853828b61461078d57600080fd5b80633950935111610295578063507c6d72116102335780635c975abb1161020d5780635c975abb14610697578063646fcdd2146106ce57806370a08231146106ee57806375b238fc1461072457600080fd5b8063507c6d72146106365780635293388a1461065657806355d4c2441461067657600080fd5b80634641257d1161026f5780634641257d146105c057806346904840146105d55780634822c431146105f65780634cd88b761461061657600080fd5b806339509351146105535780633f4ba83a146105735780633fc8cef31461058857600080fd5b8063211dc32d116103025780632e1a7d4d116102dc5780632e1a7d4d146104d75780632f2ff15d146104f7578063313ce5671461051757806336568abe1461053357600080fd5b8063211dc32d1461046757806323b872dd14610487578063248a9ca3146104a757600080fd5b80630700037d116103335780630700037d146103de578063095ea7b31461042857806318160ddd1461044857600080fd5b806301ffc9a71461036557806304d0c2c51461039a57806306fdde03146103bc57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b506103856103803660046142d7565b610ad5565b60405190151581526020015b60405180910390f35b3480156103a657600080fd5b506103ba6103b5366004614316565b610b3e565b005b3480156103c857600080fd5b506103d1610b7f565b6040516103919190614392565b3480156103ea57600080fd5b506104136103f93660046143a5565b610109602052600090815260409020805460019091015482565b60408051928352602083019190915201610391565b34801561043457600080fd5b50610385610443366004614316565b610c11565b34801561045457600080fd5b506035545b604051908152602001610391565b34801561047357600080fd5b506104596104823660046143c2565b610c29565b34801561049357600080fd5b506103856104a23660046143fb565b610ce1565b3480156104b357600080fd5b506104596104c236600461443c565b60009081526097602052604090206001015490565b3480156104e357600080fd5b506104596104f236600461443c565b610d05565b34801561050357600080fd5b506103ba610512366004614455565b61106e565b34801561052357600080fd5b5060405160128152602001610391565b34801561053f57600080fd5b506103ba61054e366004614455565b611093565b34801561055f57600080fd5b5061038561056e366004614316565b61111f565b34801561057f57600080fd5b506103ba61115e565b34801561059457600080fd5b5060fd546105a8906001600160a01b031681565b6040516001600160a01b039091168152602001610391565b3480156105cc57600080fd5b506103ba611193565b3480156105e157600080fd5b50610103546105a8906001600160a01b031681565b34801561060257600080fd5b506103ba61061136600461447a565b611b24565b34801561062257600080fd5b506103ba6106313660046145f8565b611f12565b34801561064257600080fd5b506103ba61065136600461466a565b612058565b34801561066257600080fd5b5060fc546105a8906001600160a01b031681565b34801561068257600080fd5b50610101546105a8906001600160a01b031681565b3480156106a357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610385565b3480156106da57600080fd5b5060fe546105a8906001600160a01b031681565b3480156106fa57600080fd5b506104596107093660046143a5565b6001600160a01b031660009081526033602052604090205490565b34801561073057600080fd5b506104597fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561076457600080fd5b506105a861077336600461443c565b612097565b34801561078457600080fd5b506103ba6120c2565b34801561079957600080fd5b506104596120f4565b3480156107ae57600080fd5b506103856107bd366004614455565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156107f457600080fd5b5060ff546105a8906001600160a01b031681565b34801561081457600080fd5b506103d1612121565b34801561082957600080fd5b506103ba61083836600461443c565b612130565b34801561084957600080fd5b50610459600081565b34801561085e57600080fd5b506104596101075481565b34801561087557600080fd5b5060fb546105a8906001600160a01b031681565b34801561089557600080fd5b506103856108a4366004614316565b6121ea565b3480156108b557600080fd5b506103856108c4366004614316565b612294565b3480156108d557600080fd5b506104136108e43660046143c2565b61010b6020908152600092835260408084209091529082529020805460019091015482565b34801561091557600080fd5b506103856109243660046143a5565b61010a6020526000908152604090205460ff1681565b34801561094657600080fd5b506104596122a2565b34801561095b57600080fd5b5061045961096a36600461443c565b61238b565b34801561097b57600080fd5b506103ba61098a3660046143a5565b61261b565b34801561099b57600080fd5b50610105546103859060ff1681565b3480156109b657600080fd5b506103ba6109c5366004614455565b61281b565b3480156109d657600080fd5b50610102546105a8906001600160a01b031681565b3480156109f757600080fd5b506104596101065481565b348015610a0e57600080fd5b50610459610a1d3660046143c2565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b348015610a5457600080fd5b50610459612840565b348015610a6957600080fd5b506103ba610a783660046143a5565b6128b3565b348015610a8957600080fd5b50610100546105a8906001600160a01b031681565b348015610aaa57600080fd5b50610459620f424081565b348015610ac157600080fd5b506103ba610ad036600461443c565b6129bc565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3857507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b610b46612a6e565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610b7081612aca565b610b7a8383612ad4565b505050565b606060368054610b8e90614687565b80601f0160208091040260200160405190810160405280929190818152602001828054610bba90614687565b8015610c075780601f10610bdc57610100808354040283529160200191610c07565b820191906000526020600020905b815481529060010190602001808311610bea57829003601f168201915b5050505050905090565b600033610c1f818585612ba8565b5060019392505050565b6001600160a01b03808216600081815261010960209081526040808320815180830183528154815260019182015481850152958816845261010b83528184209484529382528083208151808301909252805480835294015491810182905284519294939092670de0b6b3a764000091610ca1916146d7565b6001600160a01b038816600090815260336020526040902054610cc491906146ea565b610cce9190614701565b610cd89190614723565b95945050505050565b600033610cef858285612d00565b610cfa858585612d92565b506001949350505050565b6000610d0f612a6e565b600260c95403610d665760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260c95561010554339060ff168015610d8257610d82611193565b60005b61010454811015610e185760006101048281548110610da657610da6614736565b60009182526020808320909101546001600160a01b03878116845261010b83526040808520919092168085529252909120909150610de48583610c29565b60018201556001600160a01b0390911660009081526101096020526040902054905580610e108161474c565b915050610d85565b5060008411610e8f5760405162461bcd60e51b815260206004820152603760248201527f5661756c744550656e646c652077697468647261773a20616d6f756e74206d7560448201527f73742062652067726561746572207468616e207a65726f0000000000000000006064820152608401610d5d565b6000610e9a60355490565b85610ea36122a2565b610ead91906146ea565b610eb79190614701565b9050610ec33386612fb4565b60fc546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f309190614765565b905081811015610fa757610101546001600160a01b0316632e1a7d4d610f5683856146d7565b6040518263ffffffff1660e01b8152600401610f7491815260200190565b600060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050505b6000620f42406101075484610fbc91906146ea565b610fc69190614701565b6101035460fc54919250610fe7916001600160a01b03908116911683613145565b61100833610ff583866146d7565b60fc546001600160a01b03169190613145565b337f75e161b3e824b114fc1a33274bd7091918dd4e639cede50b78b15a4eea956a218861103584876146d7565b604080519283526020830191909152810184905260600160405180910390a261105e81846146d7565b600160c955979650505050505050565b60008281526097602052604090206001015461108981612aca565b610b7a83836131bd565b6001600160a01b03811633146111115760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610d5d565b61111b828261325f565b5050565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610c1f9082908690611159908790614723565b612ba8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61118881612aca565b6111906132e2565b50565b61119b612a6e565b61010154604080517fc4f59f9b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c4f59f9b91600480830192869291908290030181865afa1580156111fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611226919081019061477e565b905080516000036112345750565b6000815160026112449190614723565b67ffffffffffffffff81111561125c5761125c614541565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b5060fe5481519192506001600160a01b03169082906000906112a9576112a9614736565b6001600160a01b03928316602091820292909201015260ff548251911690829060019081106112da576112da614736565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b82518110156113ea5760fe5483516001600160a01b039091169084908390811061132957611329614736565b60200260200101516001600160a01b03161415801561137a575060ff5483516001600160a01b039091169084908390811061136657611366614736565b60200260200101516001600160a01b031614155b156113d85782818151811061139157611391614736565b6020026020010151828260026113a79190614723565b815181106113b7576113b7614736565b60200260200101906001600160a01b031690816001600160a01b0316815250505b806113e28161474c565b9150506112fd565b506000815167ffffffffffffffff81111561140757611407614541565b604051908082528060200260200182016040528015611430578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561144f5761144f614541565b604051908082528060200260200182016040528015611478578160200160208202803683370190505b50905060005b83518110156115205760006001600160a01b03168482815181106114a4576114a4614736565b60200260200101516001600160a01b03161461150e576114ef308583815181106114d0576114d0614736565b60200260200101516001600160a01b031661335490919063ffffffff16565b83828151811061150157611501614736565b6020026020010181815250505b806115188161474c565b91505061147e565b50610101546040517fc00007b00000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039091169063c00007b090602401600060405180830381600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b5050505060005b835181101561161e5760006001600160a01b03168482815181106115c1576115c1614736565b60200260200101516001600160a01b03161461160c576115ed308583815181106114d0576114d0614736565b8282815181106115ff576115ff614736565b6020026020010181815250505b806116168161474c565b91505061159b565b5060005b83518110156118d15760006001600160a01b031684828151811061164857611648614736565b60200260200101516001600160a01b031603156118bf57600083828151811061167357611673614736565b602002602001015183838151811061168d5761168d614736565b602002602001015161169f91906146d7565b905060008111611715578482815181106116bb576116bb614736565b60200260200101516001600160a01b03167f81ca9b2c230070eaa84787556b1aaf18bf1e2f07ea5d3dae4819db77a1a5b224600080604051611707929190918252602082015260400190565b60405180910390a2506118bf565b6000620f4240610106548361172a91906146ea565b6117349190614701565b905061178361010360009054906101000a90046001600160a01b03168288868151811061176357611763614736565b60200260200101516001600160a01b03166133fc9092919063ffffffff16565b600061178f82846146d7565b90508684815181106117a3576117a3614736565b602090810291909101015160fd546001600160a01b039081169116148015906117f757508684815181106117d9576117d9614736565b602090810291909101015160fb546001600160a01b03908116911614155b801561182e575086848151811061181057611810614736565b602090810291909101015160fc546001600160a01b03908116911614155b156118565761185687858151811061184857611848614736565b602002602001015182612ad4565b86848151811061186857611868614736565b60200260200101516001600160a01b03167f81ca9b2c230070eaa84787556b1aaf18bf1e2f07ea5d3dae4819db77a1a5b22482846040516118b3929190918252602082015260400190565b60405180910390a25050505b806118c98161474c565b915050611622565b5060fd546040516370a0823160e01b8152306004820152611945916001600160a01b0316906370a0823190602401602060405180830381865afa15801561191c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119409190614765565b613435565b5060fb546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561198f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b39190614765565b90508015611a4657610102546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063b6b55f25906024016020604051808303816000875af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190614765565b505b60fc546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab39190614765565b90508015611b1b576101015460405163534a7e1d60e11b8152600481018390526001600160a01b039091169063a694fc3a90602401600060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050505b5050505050505b565b6000611b2f81612aca565b6001600160a01b038b16611b855760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205f70656e646c6521000000000000000000000000000000006044820152606401610d5d565b6001600160a01b038a16611bdb5760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964205f6570656e646c65210000000000000000000000000000006044820152606401610d5d565b6001600160a01b038716611c315760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964205f77657468416464722100000000000000000000000000006044820152606401610d5d565b6001600160a01b038416611c875760405162461bcd60e51b815260206004820152600d60248201527f696e76616c6964205f65716221000000000000000000000000000000000000006044820152606401610d5d565b6001600160a01b038316611cdd5760405162461bcd60e51b815260206004820152600e60248201527f696e76616c6964205f78457162210000000000000000000000000000000000006044820152606401610d5d565b6001600160a01b038616611d335760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964205f62616c616e6365724164647221000000000000000000006044820152606401610d5d565b6001600160a01b038516611d895760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964205f736d617274436f6e766572746f722100000000000000006044820152606401610d5d565b6001600160a01b038916611ddf5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964205f6550656e646c65526577617264506f6f6c2100000000006044820152606401610d5d565b6001600160a01b038816611e355760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964205f666565526563697069656e7421000000000000000000006044820152606401610d5d565b60fb805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038e811691821790935560fc805483168e851617905560fd805483168b851617905560fe8054831688851617905560ff80548316878516179055610100805483168a8516179055610101805483168d8516179055610103805483168c85161790556101088590556101028054909216928816929092179055610105805460ff19166001179055611eec9086600019613598565b60fc54611f05906001600160a01b03168a600019613598565b5050505050505050505050565b600054610100900460ff1615808015611f325750600054600160ff909116105b80611f4c5750303b158015611f4c575060005460ff166001145b611fbe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d5d565b6000805460ff191660011790558015611fe1576000805461ff0019166101001790555b611fe96136e6565b611ff46000336131bd565b611ffc613751565b6120046137c3565b61200e8383613859565b8015610b7a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561208281612aca565b50610105805460ff1916911515919091179055565b61010481815481106120a857600080fd5b6000918252602090912001546001600160a01b0316905081565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6120ec81612aca565b6111906138dd565b33600090815260336020526040812054600081156121185761211582610d05565b90505b610b383361261b565b606060378054610b8e90614687565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561215a81612aca565b606461216a620f424060056146ea565b6121749190614701565b8211156121ac5760405162461bcd60e51b8152600401610d5d906020808252600490820152630216361760e41b604082015260600190565b6101078290556040518281527f5ad5a5610bf17c59c7c6c81db49613989fb650e74d98d24827244e8f146bff81906020015b60405180910390a15050565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156122875760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d5d565b610cfa8286868403612ba8565b600033610c1f818585612d92565b610101546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190614765565b60fc546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237c9190614765565b6123869190614723565b905090565b6000612395612a6e565b600260c954036123e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d5d565b600260c95561010554339060ff16801561240357612403611193565b60005b61010454811015612499576000610104828154811061242757612427614736565b60009182526020808320909101546001600160a01b03878116845261010b835260408085209190921680855292529091209091506124658583610c29565b60018201556001600160a01b03909116600090815261010960205260409020549055806124918161474c565b915050612406565b50600084116125105760405162461bcd60e51b815260206004820152603660248201527f5661756c744550656e646c65206465706f7369743a20616d6f756e74206d757360448201527f742062652067726561746572207468616e207a65726f000000000000000000006064820152608401610d5d565b600061251a6122a2565b60fc54909150612535906001600160a01b0316333088613938565b600061254060355490565b60000361254e57508461256f565b8161255860355490565b61256290886146ea565b61256c9190614701565b90505b6125793382613989565b6101015460405163534a7e1d60e11b8152600481018890526001600160a01b039091169063a694fc3a90602401600060405180830381600087803b1580156125c057600080fd5b505af11580156125d4573d6000803e3d6000fd5b50506040518881523392507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2600160c95595945050505050565b612623612a6e565b600260c954036126755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d5d565b600260c955806000805b6101045481101561271257600061010482815481106126a0576126a0614736565b60009182526020808320909101546001600160a01b03878116845261010b835260408085209190921680855292529091209091506126de8583610c29565b60018201556001600160a01b039091166000908152610109602052604090205490558061270a8161474c565b91505061267f565b5060005b61010454811015612810576000610104828154811061273757612737614736565b60009182526020808320909101546001600160a01b03888116845261010b835260408085209190921680855292529091206001015490915080156127fb576001600160a01b03808716600090815261010b60209081526040808320938616808452939091528120600101556127ad9087836133fc565b816001600160a01b0316866001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e836040516127f291815260200190565b60405180910390a35b505080806128089061474c565b915050612716565b5050600160c9555050565b60008281526097602052604090206001015461283681612aca565b610b7a838361325f565b60fc546040516370a0823160e01b8152336004820152600091612386916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561288f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190614765565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756128dd81612aca565b60fc546001600160a01b039081169083160361293b5760405162461bcd60e51b815260206004820152600660248201527f21746f6b656e00000000000000000000000000000000000000000000000000006044820152606401610d5d565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a69190614765565b9050610b7a6001600160a01b0384163383613145565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756129e681612aca565b60646129f6620f4240601e6146ea565b612a009190614701565b821115612a385760405162461bcd60e51b8152600401610d5d906020808252600490820152630216361760e41b604082015260600190565b6101068290556040518281527fbb38c661e58966e6bf8e850f06f5e0693e52fbfea191953c2d7a77617d73ef54906020016121de565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b22576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111908133613a74565b612add82613af4565b6001600160a01b038216600090815261010960205260409020603554600003612b1a57818160010154612b109190614723565b6001909101555050565b6001810154612b299083614723565b600060018301559150612b3b60355490565b612b4d83670de0b6b3a76400006146ea565b612b579190614701565b8154612b639190614723565b81556040518281526001600160a01b038416907fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e299060200160405180910390a2505050565b6001600160a01b038316612c235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d5d565b6001600160a01b038216612c9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d5d565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114612d8c5781811015612d7f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d5d565b612d8c8484848403612ba8565b50505050565b6001600160a01b038316612e0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d5d565b6001600160a01b038216612e8a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d5d565b612e95838383613c0d565b6001600160a01b03831660009081526033602052604090205481811015612f245760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d5d565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290612f5b908490614723565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fa791815260200190565b60405180910390a3612d8c565b6001600160a01b0382166130305760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610d5d565b61303c82600083613c0d565b6001600160a01b038216600090815260336020526040902054818110156130cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610d5d565b6001600160a01b03831660009081526033602052604081208383039055603580548492906130fa9084906146d7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6040516001600160a01b038316602482015260448101829052610b7a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152613c85565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff1661111b5760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561321b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff161561111b5760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6132ea613d6d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b600073efefefefefefefefefefefefefefefefefefefef6001600160a01b0384160361338b57506001600160a01b03811631610b38565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156133d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f59190614765565b9050610b38565b73efefefefefefefefefefefefefefefefefefefef6001600160a01b0384160361342a57610b7a8282613dc8565b610b7a838383613e76565b600081600003613443575090565b61348f6040805160c0810190915260008082526020820190815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001606081525090565b6101085481526000602080830182905260fd546001600160a01b03908116604080860182905260fb54831660608088019190915260808088018a90528251908101835294850186905284019490945230808452938301939093526101005491926134fc9290911686613598565b610100546040517f52bbbe290000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906352bbbe299061354d90859085906000904290600401614830565b6020604051808303816000875af115801561356c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135909190614765565b949350505050565b80158061362b57506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136299190614765565b155b61369d5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610d5d565b6040516001600160a01b038316602482015260448101829052610b7a9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401613171565b600054610100900460ff16611b225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d5d565b600054610100900460ff166137bc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d5d565b600160c955565b600054610100900460ff1661382e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d5d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b600054610100900460ff166138c45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d5d565b60366138d08382614956565b506037610b7a8282614956565b6138e5612a6e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613336565b6040516001600160a01b0380851660248301528316604482015260648101829052612d8c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613171565b6001600160a01b0382166139df5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d5d565b6139eb60008383613c0d565b80603560008282546139fd9190614723565b90915550506001600160a01b03821660009081526033602052604081208054839290613a2a908490614723565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff1661111b57613ab2816001600160a01b03166014613fcc565b613abd836020613fcc565b604051602001613ace929190614a16565b60408051601f198184030181529082905262461bcd60e51b8252610d5d91600401614392565b6001600160a01b038116613b4a5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964205f726577617264546f6b656e2100000000000000000000006044820152606401610d5d565b6001600160a01b038116600090815261010a602052604090205460ff1615613b6f5750565b610104805460018082019092557f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155600081815261010a6020526040808220805460ff1916909417909355915190917ff3e4c2c64e71e6ba2eaab9a599bced62f9eb91d2cda610bf41aa8c80ff2cf82691a250565b6001600160a01b03831615801590613c2d57506001600160a01b03821615155b15610b7a5760405162461bcd60e51b815260206004820152602260248201527f5661756c744550656e646c653a207472616e73666572206e6f7420616c6c6f77604482015261195960f21b6064820152608401610d5d565b6000613cda826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166141b49092919063ffffffff16565b9050805160001480613cfb575080806020019051810190613cfb9190614a97565b610b7a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d5d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b22576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613e15576040519150601f19603f3d011682016040523d82523d6000602084013e613e1a565b606091505b5050905080610b7a5760405162461bcd60e51b815260206004820152602260248201527f5472616e7366657248656c7065723a2053656e64696e6720455448206661696c604482015261195960f21b6064820152608401610d5d565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790529151600092839290871691613ee79190614ab4565b6000604051808303816000865af19150503d8060008114613f24576040519150601f19603f3d011682016040523d82523d6000602084013e613f29565b606091505b5091509150818015613f53575080511580613f53575080806020019051810190613f539190614a97565b613fc55760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610d5d565b5050505050565b60606000613fdb8360026146ea565b613fe6906002614723565b67ffffffffffffffff811115613ffe57613ffe614541565b6040519080825280601f01601f191660200182016040528015614028576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061405f5761405f614736565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106140aa576140aa614736565b60200101906001600160f81b031916908160001a90535060006140ce8460026146ea565b6140d9906001614723565b90505b600181111561415e577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061411a5761411a614736565b1a60f81b82828151811061413057614130614736565b60200101906001600160f81b031916908160001a90535060049490941c9361415781614ad0565b90506140dc565b5083156141ad5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d5d565b9392505050565b6060613590848460008585600080866001600160a01b031685876040516141db9190614ab4565b60006040518083038185875af1925050503d8060008114614218576040519150601f19603f3d011682016040523d82523d6000602084013e61421d565b606091505b509150915061422e87838387614239565b979650505050505050565b606083156142a85782516000036142a1576001600160a01b0385163b6142a15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d5d565b5081613590565b61359083838151156142bd5781518083602001fd5b8060405162461bcd60e51b8152600401610d5d9190614392565b6000602082840312156142e957600080fd5b81356001600160e01b0319811681146141ad57600080fd5b6001600160a01b038116811461119057600080fd5b6000806040838503121561432957600080fd5b823561433481614301565b946020939093013593505050565b60005b8381101561435d578181015183820152602001614345565b50506000910152565b6000815180845261437e816020860160208601614342565b601f01601f19169290920160200192915050565b6020815260006141ad6020830184614366565b6000602082840312156143b757600080fd5b81356141ad81614301565b600080604083850312156143d557600080fd5b82356143e081614301565b915060208301356143f081614301565b809150509250929050565b60008060006060848603121561441057600080fd5b833561441b81614301565b9250602084013561442b81614301565b929592945050506040919091013590565b60006020828403121561444e57600080fd5b5035919050565b6000806040838503121561446857600080fd5b8235915060208301356143f081614301565b6000806000806000806000806000806101408b8d03121561449a57600080fd5b8a356144a581614301565b995060208b01356144b581614301565b985060408b01356144c581614301565b975060608b01356144d581614301565b965060808b01356144e581614301565b955060a08b01356144f581614301565b945060c08b013561450581614301565b935060e08b013561451581614301565b92506101008b013561452681614301565b809250506101208b013590509295989b9194979a5092959850565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561458057614580614541565b604052919050565b600082601f83011261459957600080fd5b813567ffffffffffffffff8111156145b3576145b3614541565b6145c6601f8201601f1916602001614557565b8181528460208386010111156145db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561460b57600080fd5b823567ffffffffffffffff8082111561462357600080fd5b61462f86838701614588565b9350602085013591508082111561464557600080fd5b5061465285828601614588565b9150509250929050565b801515811461119057600080fd5b60006020828403121561467c57600080fd5b81356141ad8161465c565b600181811c9082168061469b57607f821691505b6020821081036146bb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3857610b386146c1565b8082028115828204841417610b3857610b386146c1565b60008261471e57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3857610b386146c1565b634e487b7160e01b600052603260045260246000fd5b60006001820161475e5761475e6146c1565b5060010190565b60006020828403121561477757600080fd5b5051919050565b6000602080838503121561479157600080fd5b825167ffffffffffffffff808211156147a957600080fd5b818501915085601f8301126147bd57600080fd5b8151818111156147cf576147cf614541565b8060051b91506147e0848301614557565b81815291830184019184810190888411156147fa57600080fd5b938501935b83851015614824578451925061481483614301565b82825293850193908501906147ff565b98975050505050505050565b60e08152845160e0820152600060208601516002811061486057634e487b7160e01b600052602160045260246000fd5b61010083015260408601516001600160a01b031661012083015260608601516148956101408401826001600160a01b03169052565b50608086015161016083015260a086015160c06101808401526148bc6101a0840182614366565b9150506148fe60208301866001600160a01b03808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b60a082019390935260c0015292915050565b601f821115610b7a57600081815260208120601f850160051c810160208610156149375750805b601f850160051c820191505b81811015611b1b57828155600101614943565b815167ffffffffffffffff81111561497057614970614541565b6149848161497e8454614687565b84614910565b602080601f8311600181146149b957600084156149a15750858301515b600019600386901b1c1916600185901b178555611b1b565b600085815260208120601f198616915b828110156149e8578886015182559484019460019091019084016149c9565b5085821015614a065787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614a4e816017850160208801614342565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614a8b816028840160208801614342565b01602801949350505050565b600060208284031215614aa957600080fd5b81516141ad8161465c565b60008251614ac6818460208701614342565b9190910192915050565b600081614adf57614adf6146c1565b50600019019056fea2646970667358221220b215da7af1ee1f76b92a222f1c1c52169f7ff8a6b58e998256f5662f65948f0d64736f6c63430008110033