4.4k txs
4.4k calls
constructor
constructor(address _commissionContract, address _token, address _stakeApy, address _oracle, address _networkAddress, address _usdToken)
functions
calculateEarnedUsd
viewfunction calculateEarnedUsd(uint256 _value, uint256 _startTime, uint256 _unlockTime, uint256 _poolId, uint256 _canEarnUsd) view returns (uint256)
calculateTokenEarnedMulti
viewfunction calculateTokenEarnedMulti(uint256[] _stakeIds) view returns (uint256)
calculateTokenEarnedStake
viewfunction calculateTokenEarnedStake(uint256 _stakeId) view returns (uint256)
checkCanClaim
viewfunction checkCanClaim(uint256 _stakeId) view returns (bool)
checkCanClaimMulti
viewfunction checkCanClaimMulti(uint256[] _stakeIds, address _userAddress) view returns (bool)
feeBnb
viewfunction feeBnb() view returns (uint256)
getDetailStake
viewfunction getDetailStake(uint256 _stakeId) view returns (tuple)
getStakePool
viewfunction getStakePool(uint256 _poolId) view returns (tuple)
getTokenUsdPrice
viewfunction getTokenUsdPrice() view returns (uint256)
getTotalUserClaimedToken
viewfunction getTotalUserClaimedToken(address _userId) view returns (uint256)
getTotalUserClaimedUsd
viewfunction getTotalUserClaimedUsd(address _userId) view returns (uint256)
getTotalUserStakedToken
viewfunction getTotalUserStakedToken(address _userId) view returns (uint256)
getTotalUserStakedUsd
viewfunction getTotalUserStakedUsd(address _userId) view returns (uint256)
getTotalUserWithdrawToken
viewfunction getTotalUserWithdrawToken(address _userId) view returns (uint256)
openSwap
viewfunction openSwap() view returns (bool)
owner
viewfunction owner() view returns (address)
percentSwap
viewfunction percentSwap() view returns (uint256)
percentSwapToBurn
viewfunction percentSwapToBurn() view returns (uint256)
priceFeedDecimal
viewfunction priceFeedDecimal() view returns (uint256)
rewardFee
viewfunction rewardFee() view returns (uint256)
stakeApy
viewfunction stakeApy() view returns (address)
stakeIndex
viewfunction stakeIndex() view returns (uint256)
stakeTokenPoolLength
viewfunction stakeTokenPoolLength() view returns (uint256)
swapContract
viewfunction swapContract() view returns (address)
timeOpenStaking
viewfunction timeOpenStaking() view returns (uint256)
token
viewfunction token() view returns (address)
tokenDecimal
viewfunction tokenDecimal() view returns (uint256)
totalClaimedToken
viewfunction totalClaimedToken() view returns (uint256)
totalClaimedUsd
viewfunction totalClaimedUsd() view returns (uint256)
totalFeeClaimUsd
viewfunction totalFeeClaimUsd() view returns (uint256)
totalFeeWithdrawToken
viewfunction totalFeeWithdrawToken() view returns (uint256)
totalStakedToken
viewfunction totalStakedToken() view returns (uint256)
totalStakedUsd
viewfunction totalStakedUsd() view returns (uint256)
totalUser
viewfunction totalUser() view returns (uint256)
totalWithdrawToken
viewfunction totalWithdrawToken() view returns (uint256)
usdPercent
viewfunction usdPercent() view returns (uint256)
usdtDecimal
viewfunction usdtDecimal() view returns (uint256)
usdToken
viewfunction usdToken() view returns (address)
addStakeAdmin
nonpayablefunction addStakeAdmin(uint256 _poolId, address _userAddress, uint256 _totalValueStake, bool _payRef, bool _updateRanking, bool _payCom)
addStakeMigrate
nonpayablefunction addStakeMigrate(uint256 _stakeId, address _userAddress, uint256 poolId, uint256 unlockTime, uint256 startTime, uint256 totalValueStake, uint256 totalValueStakeUsd, uint256 totalValueClaimedToken, bool isWithdraw, uint256 totalValueClaimedUsd)
addStakeMigrateMulti
nonpayablefunction addStakeMigrateMulti(uint256[] _stakeId, address[] _userAddress, uint256[] poolId, uint256[] unlockTime, uint256[] startTime, uint256[] totalValueStake, uint256[] totalValueStakeUsd, uint256[] totalValueClaimedToken, bool[] isWithdraw, uint256[] totalValueClaimedUsd)
claim
payablefunction claim(uint256 _stakeId) payable
claimAll
payablefunction claimAll(uint256[] _stakeIds) payable
recoverLostBNB
nonpayablefunction recoverLostBNB()
renounceOwnership
nonpayablefunction renounceOwnership()
setApyContract
nonpayablefunction setApyContract(address _stakeApy)
setCommissionAddress
nonpayablefunction setCommissionAddress(address _commissionContract)
setFeeBnb
nonpayablefunction setFeeBnb(uint256 _feeBnb)
setNetworkAddress
nonpayablefunction setNetworkAddress(address _address)
setOpenSwap
nonpayablefunction setOpenSwap(bool _isOpen)
setOracleAddress
nonpayablefunction setOracleAddress(address _oracleAddress)
setPercentSwap
nonpayablefunction setPercentSwap(uint256 _value)
setPercentSwapToBurn
nonpayablefunction setPercentSwapToBurn(uint256 _value)
setRewardFee
nonpayablefunction setRewardFee(uint256 _rewardFee)
setStakeIndex
nonpayablefunction setStakeIndex(uint256 _stakeIndex)
setStakePool
nonpayablefunction setStakePool(uint256 _poolId, uint256 _maxStakePerWallet, uint256 _duration, bool _payProfit, bool _payRanking, bool _payCommission, bool _payDirect, bool _isMaxEarn, bool _isWithdrawFull)
setSwapContract
nonpayablefunction setSwapContract(address _swapAddress)
setTokenContract
nonpayablefunction setTokenContract(address _token)
setTotalClaimedToken
nonpayablefunction setTotalClaimedToken(uint256 _totalToken)
setTotalStakedToken
nonpayablefunction setTotalStakedToken(uint256 _totalStakedToken)
setTotalStakedUsd
nonpayablefunction setTotalStakedUsd(uint256 _totalStakedUsd)
setTotalUser
nonpayablefunction setTotalUser(uint256 _totalUser)
setTotalUserClaimedToken
nonpayablefunction setTotalUserClaimedToken(uint256 _totalToken, address _userId)
setTotalUserClaimedUsd
nonpayablefunction setTotalUserClaimedUsd(uint256 _totalClaimedUsd, address _userId)
setTotalUserStakedToken
nonpayablefunction setTotalUserStakedToken(uint256 _totalStakedToken, address _userId)
setTotalUserStakedUsd
nonpayablefunction setTotalUserStakedUsd(uint256 _totalStakedUsd, address _userId)
setTotalUserWithdrawToken
nonpayablefunction setTotalUserWithdrawToken(uint256 _totalUserWithdrawToken, address _userId)
setTotalWithdrawToken
nonpayablefunction setTotalWithdrawToken(uint256 _totalWithdrawToken)
setUsdContract
nonpayablefunction setUsdContract(address _usdAddress)
setUsdPercent
nonpayablefunction setUsdPercent(uint256 _usdPercent)
stake
payablefunction stake(uint256 _poolId, uint256 _stakeValue) payable
stakeMixed
payablefunction stakeMixed(uint256 _poolId, uint256 _totalUsd) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateOwnerAndStatus
nonpayablefunction updateOwnerAndStatus(uint256 _stakeId, address _userAddress, bool _isWithdraw)
withdraw
payablefunction withdraw(uint256 _stakeId) payable
withdrawPool
payablefunction withdrawPool(uint256[] _stakeIds) payable
withdrawTokenEmergency
nonpayablefunction withdrawTokenEmergency(address _token, uint256 _amount)
events
Claimed
event Claimed(uint256 indexed id, address indexed staker, uint256 claimAmount)
Harvested
event Harvested(uint256 indexed id)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
StakedBToken
event StakedBToken(uint256 indexed id, uint256 poolId, address indexed staker, uint256 stakeValue, uint256 startTime, uint256 unlockTime)
errors
No errors.
creation bytecode
0x60806040526364b8169060019081556002819055670de0b6b3a76400006003556305f5e100600490815560006005819055600980546001600160a01b03191673803dbae1e1f781e5fa6c86052f2dd06ee12693301790556014919091556015819055610258601e55601f805460ff1916909217909155602a6020556064602155620f42406022556024553480156200009657600080fd5b50604051620060a6380380620060a6833981016040819052620000b9916200044e565b620000c433620003e1565b600b80546001600160a01b038781166001600160a01b03199283168117909355600780548a8316908416179055600a805488831690841617905560068054878316908416179055600880548683169084161790556023805491851691909216179055601660205260007f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd8190557f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153de8190557f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153df8190557f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153e48054600160d01b600163ffffff0160b81b0319909116841717905560017f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf49557f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf4a8190556101687f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf4b557f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf50805464010100010160a81b600160a01b6001600160a81b03199283168617811765ffffff00ffff60a81b19908116831790945560027fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab2885648557fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab288564985905561021c7fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab288564a557fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab288564f805484168717821785168317905560038086527ff06d282f967055cb1eee17e04aa005b9682a620f4bbcfaee55ba78607a3d87ae557ff06d282f967055cb1eee17e04aa005b9682a620f4bbcfaee55ba78607a3d87af949094556102d07ff06d282f967055cb1eee17e04aa005b9682a620f4bbcfaee55ba78607a3d87b0557ff06d282f967055cb1eee17e04aa005b9682a620f4bbcfaee55ba78607a3d87b58054909216909417909217169091179055505050505050620004cf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200044957600080fd5b919050565b60008060008060008060c087890312156200046857600080fd5b620004738762000431565b9550620004836020880162000431565b9450620004936040880162000431565b9350620004a36060880162000431565b9250620004b36080880162000431565b9150620004c360a0880162000431565b90509295509295509295565b615bc780620004df6000396000f3fe6080604052600436106104515760003560e01c806373c574ba1161023f578063b4346a4a11610139578063d375370e116100b6578063f29a7ef91161007a578063f29a7ef914610e55578063f2fde38b14610e6b578063f897a22b14610e8b578063fc0c546a14610eab578063fe0ec97b14610ecb57600080fd5b8063d375370e14610dd6578063df79ebf614610df6578063e1604b7014610e09578063e6f7388e14610e1f578063ef3eb5e814610e3557600080fd5b8063cb6d8ee6116100fd578063cb6d8ee614610d3e578063cc229b8f14610d54578063cde2682b14610d6a578063cfdcc3d214610da0578063d259ab4214610db657600080fd5b8063b4346a4a14610cbc578063bb19f62414610cdc578063bbcd5bbe14610cf2578063c903b85314610d12578063c99f492914610d2857600080fd5b80638b424267116101c757806397e3b7811161018b57806397e3b78114610c1b5780639dd5dde314610c30578063a51dda1614610c50578063ac5b7a4114610c70578063afc903ba14610ca657600080fd5b80638b42426714610b915780638da5cb5b14610ba75780638ea8303114610bc5578063941d82d614610be557806396dd1cdc14610bfb57600080fd5b80637b0472f01161020e5780637b0472f014610ae85780637d61b69914610afb5780638664ddfe14610b1b5780638850e22914610b3b57806388c732d614610b5b57600080fd5b806373c574ba14610a7557806376dc623214610a9557806377d5366d14610ab557806379b77f8514610ac857600080fd5b80633d61aba8116103505780635be436d9116102d85780636220debc1161029c5780636220debc146109d257806362b080e8146109e8578063668fbce114610a0857806368127b7114610a28578063715018a614610a6057600080fd5b80635be436d9146109375780635caed0291461094c5780635d14aa42146109625780635d9d2ea51461097c5780635ff5276e1461099c57600080fd5b8063466e515c1161031f578063466e515c146108945780634c69c00f146108c15780634e75e7e9146108e157806353d48c2b146109015780635a2357a41461091757600080fd5b80633d61aba8146108145780633ffa9cc61461083457806340fff80c1461085457806341a2ac701461087457600080fd5b80630a8a7c06116103de5780632e1a7d4d116103a25780632e1a7d4d1461078c5780632ed4b3511461079f578063362efc3d146107d5578063379607f5146107eb5780633b7007f7146107fe57600080fd5b80630a8a7c061461059157806310da6429146107235780631a4d24281461074357806328c77820146107595780632c8bb0e31461076c57600080fd5b80630582d9f5116104255780630582d9f5146104e157806305f5dc9514610511578063070c40b61461053157806309bb84911461055157806309d3fefe1461057157600080fd5b8062321a2d1461045657806301189cc214610478578063023e1321146104985780630388bf1e146104b8575b600080fd5b34801561046257600080fd5b50610476610471366004615123565b610eeb565b005b34801561048457600080fd5b50610476610493366004615123565b610ef8565b3480156104a457600080fd5b506104766104b336600461514a565b610f05565b3480156104c457600080fd5b506104ce60045481565b6040519081526020015b60405180910390f35b3480156104ed57600080fd5b506105016104fc366004615259565b610f20565b60405190151581526020016104d8565b34801561051d57600080fd5b5061047661052c3660046152ab565b610fc0565b34801561053d57600080fd5b5061047661054c366004615123565b611051565b34801561055d57600080fd5b5061047661056c366004615390565b61105e565b34801561057d57600080fd5b506104ce61058c36600461551b565b6113a4565b34801561059d57600080fd5b506107166105ac366004615123565b604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091525060009081526016602090815260409182902082516101e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007909101546001600160a01b03811660e083015260ff600160a01b820481161515610100840152600160a81b820481161515610120840152600160b01b820481161515610140840152600160b81b820481161515610160840152600160c01b820481161515610180840152600160c81b8204811615156101a0840152600160d01b9091041615156101c082015290565b6040516104d89190615558565b34801561072f57600080fd5b5061047661073e366004615123565b6113f9565b34801561074f57600080fd5b506104ce60145481565b61047661076736600461551b565b611406565b34801561077857600080fd5b506104766107873660046152ab565b611515565b61047661079a366004615123565b61153f565b3480156107ab57600080fd5b506104ce6107ba3660046152ab565b6001600160a01b03166000908152601c602052604090205490565b3480156107e157600080fd5b506104ce60225481565b6104766107f9366004615123565b611b3f565b34801561080a57600080fd5b506104ce601e5481565b34801561082057600080fd5b5061047661082f36600461561e565b611b98565b34801561084057600080fd5b5061047661084f36600461564a565b611ca9565b34801561086057600080fd5b5061047661086f3660046152ab565b611ccb565b34801561088057600080fd5b5061047661088f366004615123565b611d5b565b3480156108a057600080fd5b506108b46108af366004615123565b611d68565b6040516104d8919061566f565b3480156108cd57600080fd5b506104766108dc3660046152ab565b611e5b565b3480156108ed57600080fd5b506104766108fc3660046156f5565b611ee7565b34801561090d57600080fd5b506104ce600d5481565b34801561092357600080fd5b506104766109323660046152ab565b612081565b34801561094357600080fd5b506104ce6120ab565b34801561095857600080fd5b506104ce60035481565b34801561096e57600080fd5b50601f546105019060ff1681565b34801561098857600080fd5b5061047661099736600461564a565b6120ba565b3480156109a857600080fd5b506104ce6109b73660046152ab565b6001600160a01b03166000908152601b602052604090205490565b3480156109de57600080fd5b506104ce60135481565b3480156109f457600080fd5b50610476610a03366004615123565b6120dc565b348015610a1457600080fd5b50610476610a23366004615796565b6120e9565b348015610a3457600080fd5b50600a54610a48906001600160a01b031681565b6040516001600160a01b0390911681526020016104d8565b348015610a6c57600080fd5b506104766123d9565b348015610a8157600080fd5b50610501610a90366004615123565b6123ed565b348015610aa157600080fd5b50610476610ab0366004615123565b6126bd565b610476610ac336600461551b565b6126ca565b348015610ad457600080fd5b50610476610ae336600461564a565b61277c565b610476610af6366004615806565b61279e565b348015610b0757600080fd5b50610476610b16366004615828565b612e73565b348015610b2757600080fd5b50610476610b3636600461564a565b6130e7565b348015610b4757600080fd5b50610476610b563660046158b0565b613109565b348015610b6757600080fd5b506104ce610b763660046152ab565b6001600160a01b031660009081526018602052604090205490565b348015610b9d57600080fd5b506104ce60055481565b348015610bb357600080fd5b506000546001600160a01b0316610a48565b348015610bd157600080fd5b50600954610a48906001600160a01b031681565b348015610bf157600080fd5b506104ce60155481565b348015610c0757600080fd5b50610476610c1636600461564a565b61315b565b348015610c2757600080fd5b5061047661317d565b348015610c3c57600080fd5b506104ce610c4b3660046158f2565b6131b3565b348015610c5c57600080fd5b50610476610c6b366004615123565b6134f9565b348015610c7c57600080fd5b506104ce610c8b3660046152ab565b6001600160a01b03166000908152601a602052604090205490565b348015610cb257600080fd5b506104ce60245481565b348015610cc857600080fd5b506104ce610cd7366004615123565b613506565b348015610ce857600080fd5b506104ce60215481565b348015610cfe57600080fd5b50610476610d0d3660046152ab565b61392d565b348015610d1e57600080fd5b506104ce600f5481565b348015610d3457600080fd5b506104ce60015481565b348015610d4a57600080fd5b506104ce600c5481565b348015610d6057600080fd5b506104ce60205481565b348015610d7657600080fd5b506104ce610d853660046152ab565b6001600160a01b031660009081526019602052604090205490565b348015610dac57600080fd5b506104ce600e5481565b348015610dc257600080fd5b50610476610dd13660046152ab565b613957565b348015610de257600080fd5b50610476610df1366004615123565b6139e1565b610476610e04366004615806565b613a24565b348015610e1557600080fd5b506104ce60125481565b348015610e2b57600080fd5b506104ce60105481565b348015610e4157600080fd5b50610476610e50366004615123565b614527565b348015610e6157600080fd5b506104ce60115481565b348015610e7757600080fd5b50610476610e863660046152ab565b61456a565b348015610e9757600080fd5b50602354610a48906001600160a01b031681565b348015610eb757600080fd5b50600b54610a48906001600160a01b031681565b348015610ed757600080fd5b50610476610ee6366004615123565b6145e3565b610ef36145f0565b601255565b610f006145f0565b602455565b610f0d6145f0565b601f805460ff1916911515919091179055565b600080610f2c846113a4565b600754604051637f6408d360e01b81529192506000916001600160a01b0390911690637f6408d390610f64908790869060040161592d565b60206040518083038186803b158015610f7c57600080fd5b505afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190615946565b91909114949350505050565b610fc86145f0565b6001600160a01b03811661102f5760405162461bcd60e51b815260206004820152602360248201527f434f4d4d495353494f4e3a20494e56414c4944204e4554574f524b204144445260448201526245535360e81b60648201526084015b60405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6110596145f0565b601355565b6110666145f0565b895189511461109f5760405162461bcd60e51b815260206004820152600560248201526454533a493160d81b6044820152606401611026565b87518951146110d85760405162461bcd60e51b81526020600482015260056024820152642a299d249960d91b6044820152606401611026565b86518951146111115760405162461bcd60e51b815260206004820152600560248201526454533a493360d81b6044820152606401611026565b855189511461114a5760405162461bcd60e51b81526020600482015260056024820152641514ce924d60da1b6044820152606401611026565b84518951146111835760405162461bcd60e51b815260206004820152600560248201526454533a493560d81b6044820152606401611026565b83518951146111bc5760405162461bcd60e51b81526020600482015260056024820152642a299d249b60d91b6044820152606401611026565b82518951146111f55760405162461bcd60e51b815260206004820152600560248201526454533a493760d81b6044820152606401611026565b805189511461122e5760405162461bcd60e51b81526020600482015260056024820152640a8a67492760db1b6044820152606401611026565b81518951146112675760405162461bcd60e51b815260206004820152600560248201526454533a493960d81b6044820152606401611026565b60005b89518110156113975760008a82815181106112875761128761595f565b602002602001015190506113848c83815181106112a6576112a661595f565b6020026020010151828c85815181106112c1576112c161595f565b60200260200101518c86815181106112db576112db61595f565b60200260200101518c87815181106112f5576112f561595f565b60200260200101518c888151811061130f5761130f61595f565b60200260200101518c89815181106113295761132961595f565b60200260200101518c8a815181106113435761134361595f565b60200260200101518c8b8151811061135d5761135d61595f565b60200260200101518c8c815181106113775761137761595f565b6020026020010151612e73565b508061138f8161598b565b91505061126a565b5050505050505050505050565b600080805b83518110156113f2576113d48482815181106113c7576113c761595f565b6020026020010151613506565b6113de90836159a6565b9150806113ea8161598b565b9150506113a9565b5092915050565b6114016145f0565b600c55565b60245434146114275760405162461bcd60e51b8152600401611026906159be565b60006114338233610f20565b905060018115151461147f5760405162461bcd60e51b81526020600482015260156024820152745354414b494e473a2043414e4e4f5420434c41494d60581b6044820152606401611026565b60008251116114d05760405162461bcd60e51b815260206004820152601f60248201527f544f4b454e205354414b453a20494e56414c4944205354414b45204c495354006044820152606401611026565b60005b8251811015611510576114fe8382815181106114f1576114f161595f565b6020026020010151611b3f565b806115088161598b565b9150506114d3565b505050565b61151d6145f0565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001146115615760405162461bcd60e51b8152600401611026906159f5565b600060025560245434146115875760405162461bcd60e51b8152600401611026906159be565b6000818152601760209081526040918290208251610140810184528154815260018201546001600160a01b03169281018390526002820154938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e0840152600881015460ff1615156101008401526009015461012083015233146116705760405162461bcd60e51b815260206004820152602760248201527f5354414b453a204f4e4c59204f574e4552204f46205354414b452043414e20576044820152664954484452415760c81b6064820152608401611026565b806101000151156116bb5760405162461bcd60e51b81526020600482015260156024820152745354414b453a2057495448445241572046414c534560581b6044820152606401611026565b42816060015111611b36576116cf8261464a565b60408082015160c080840151600086815260176020908152858220600801805460ff191660019081179091558583526016825286832087516101e0810189528154815291810154928201929092526002820154968101969096526003810154606087015260048101546080870152600581015460a08701526006810154938601939093526007909201546001600160a01b03811660e0860152600160a01b810460ff9081161515610100870152600160a81b820481161515610120870152600160b01b820481161515610140870152600160b81b820481161515610160870152600160c01b820481161515610180870152600160c81b8204811615156101a0870152600160d01b9091041615156101c08501529192906117ed6120ab565b6004546117fa9085615a24565b6118049190615a43565b9050816101c0015115611818575060a08401515b8015611b315760e08201516040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b15801561186357600080fd5b505afa158015611877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189b9190615946565b101561190f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e205354414b494e473a204e4f5420454e4f55474820544f4b454e2060448201527f42414c414e434520544f205041592055534552205354414b452056414c5545006064820152608401611026565b60e0820151602086015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161194691859060040161592d565b602060405180830381600087803b15801561196057600080fd5b505af1158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190615a65565b611a0a5760405162461bcd60e51b815260206004820152603c60248201527f5354414b494e473a20554e41424c4520544f205452414e5346455220434f4d4d60448201527f495353494f4e205041594d454e5420544f205354414b452055534552000000006064820152608401611026565b81610100015115611a7d576007546020860151604051632351afaf60e21b81526001600160a01b0390921691638d46bebc91611a4a91879060040161592d565b600060405180830381600087803b158015611a6457600080fd5b505af1158015611a78573d6000803e3d6000fd5b505050505b336000908152601d60209081526040808320878452909152812054611aa3908390615a82565b60008681526016602052604081206003015491925090611ac4908490615a82565b336000908152601d602090815260408083208a8452825280832086905560169091528120600301829055601380549293508592909190611b059084906159a6565b9091555050336000908152601c602052604081208054859290611b299084906159a6565b909155505050505b505050505b50506001600255565b600254600114611b615760405162461bcd60e51b8152600401611026906159f5565b60006002556024543414611b875760405162461bcd60e51b8152600401611026906159be565b611b908161464a565b506001600255565b611ba06145f0565b60008111611be15760405162461bcd60e51b815260206004820152600e60248201526d1253959053125108105353d5539560921b6044820152606401611026565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90611c0f903390859060040161592d565b602060405180830381600087803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c619190615a65565b611ca55760405162461bcd60e51b815260206004820152601560248201527421a0a72727aa102ba4aa24222920ab902a27a5a2a760591b6044820152606401611026565b5050565b611cb16145f0565b6001600160a01b03166000908152601a6020526040902055565b611cd36145f0565b6001600160a01b038116611d395760405162461bcd60e51b815260206004820152602760248201527f4d41524b4554504c4143453a20494e56414c494420434f4d4d495353494f4e206044820152664144445245535360c81b6064820152608401611026565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611d636145f0565b600555565b611dc96040518061014001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b506000908152601760209081526040918290208251610140810184528154815260018201546001600160a01b0316928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015460ff16151561010082015260099091015461012082015290565b611e636145f0565b6001600160a01b038116611ec55760405162461bcd60e51b815260206004820152602360248201527f4d41524b4554504c4143453a20494e56414c4944204f5241434c45204144445260448201526245535360e81b6064820152608401611026565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611eef6145f0565b88601660008b81526020019081526020016000206000018190555087601660008b81526020019081526020016000206001018190555086601660008b81526020019081526020016000206002018190555085601660008b815260200190815260200160002060070160146101000a81548160ff02191690831515021790555083601660008b815260200190815260200160002060070160156101000a81548160ff02191690831515021790555084601660008b815260200190815260200160002060070160166101000a81548160ff02191690831515021790555082601660008b815260200190815260200160002060070160196101000a81548160ff02191690831515021790555081601660008b815260200190815260200160002060070160186101000a81548160ff02191690831515021790555080601660008b8152602001908152602001600020600701601a6101000a81548160ff021916908315150217905550600089600161206391906159a6565b90506014548111156120755760148190555b50505050505050505050565b6120896145f0565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006120b5614db7565b905090565b6120c26145f0565b6001600160a01b03166000908152601c6020526040902055565b6120e46145f0565b601e55565b6120f16145f0565b600854604051636158993b60e11b81526001600160a01b038781166004830152600092169063c2b132769060240160206040518083038186803b15801561213757600080fd5b505afa15801561214b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216f9190615a99565b90506001600160a01b0381166121ad5760405162461bcd60e51b815260206004820152600360248201526213929560ea1b6044820152606401611026565b6001600160a01b0386166000908152601d602090815260408083208a84529091528120546121dc9087906159a6565b600089815260166020526040902060010154909150158061220e57506000888152601660205260409020600101548111155b61222a5760405162461bcd60e51b815260040161102690615ab6565b60006004546122376120ab565b6122419089615a24565b61224b9190615a43565b60008a81526016602090815260409182902082516101e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007909101546001600160a01b03811660e083015260ff600160a01b820481161580156101008501819052600160a81b840483161515610120860152600160b01b840483161515610140860152600160b81b840483161515610160860152600160c01b840483161515610180860152600160c81b8404831615156101a0860152600160d01b90930490911615156101c084015292935090916123495750845b156123cc5760075460405163656df4ed60e11b81526001600160a01b038b811660048301526024820185905289151560448301528815156064830152600160848301529091169063cadbe9da9060a401600060405180830381600087803b1580156123b357600080fd5b505af11580156123c7573d6000803e3d6000fd5b505050505b6120758a8a8a8686614e67565b6123e16145f0565b6123eb60006150d3565b565b6000806017600084815260200190815260200160002060405180610140016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a900460ff161515151581526020016009820154815250509050600081604001519050600082602001519050600060166000848152602001908152602001600020604051806101e0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016007820160149054906101000a900460ff161515151581526020016007820160159054906101000a900460ff161515151581526020016007820160169054906101000a900460ff161515151581526020016007820160179054906101000a900460ff161515151581526020016007820160189054906101000a900460ff161515151581526020016007820160199054906101000a900460ff1615151515815260200160078201601a9054906101000a900460ff1615151515815250509050600061261d87613506565b6101808301519091508190156126b257600754604051637f6408d360e01b81526001600160a01b0390911690637f6408d39061265f908790869060040161592d565b60206040518083038186803b15801561267757600080fd5b505afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af9190615946565b90505b149695505050505050565b6126c56145f0565b601155565b60245434146126eb5760405162461bcd60e51b8152600401611026906159be565b600081511161273c5760405162461bcd60e51b815260206004820152601f60248201527f544f4b454e205354414b453a20494e56414c4944205354414b45204c495354006044820152606401611026565b60005b8151811015611ca55761276a82828151811061275d5761275d61595f565b602002602001015161153f565b806127748161598b565b91505061273f565b6127846145f0565b6001600160a01b0316600090815260196020526040902055565b6002546001146127c05760405162461bcd60e51b8152600401611026906159f5565b600060025560245434146127e65760405162461bcd60e51b8152600401611026906159be565b600082815260166020908152604080832081516101e08101835281548152600182015493810193909352600281015483830152600381015460608401526004808201546080850152600582015460a0850152600682015460c08501526007909101546001600160a01b0380821660e086015260ff600160a01b830481161515610100870152600160a81b830481161515610120870152600160b01b830481161515610140870152600160b81b830481161515610160870152600160c01b830481161515610180870152600160c81b8304811615156101a0870152600160d01b90920490911615156101c08501526008549251636158993b60e11b81523392810192909252929392919091169063c2b132769060240160206040518083038186803b15801561291357600080fd5b505afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b9190615a99565b90506001600160a01b0381166129895760405162461bcd60e51b815260206004820152600360248201526213929560ea1b6044820152606401611026565b60e08201516040516370a0823160e01b815233600482015284916001600160a01b0316906370a082319060240160206040518083038186803b1580156129ce57600080fd5b505afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a069190615946565b1015612a655760405162461bcd60e51b815260206004820152602860248201527f544f4b454e205354414b453a204e6f7420656e6f7567682062616c616e636520604482015267746f207374616b6560c01b6064820152608401611026565b60e0820151604051636eb1769f60e11b815233600482015230602482015284916001600160a01b03169063dd62ed3e9060440160206040518083038186803b158015612ab057600080fd5b505afa158015612ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae89190615946565b1015612b365760405162461bcd60e51b815260206004820152601f60248201527f544f4b454e205354414b453a204d75737420617070726f7665206669727374006044820152606401611026565b60e08201516040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015612b8a57600080fd5b505af1158015612b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc29190615a65565b612c285760405162461bcd60e51b815260206004820152603160248201527f544f4b454e205354414b453a205472616e7366657220746f6b656e20746f205460448201527013d2d1538814d51052d14819985a5b1959607a1b6064820152608401611026565b336000908152601d60209081526040808320878452909152812054612c4e9085906159a6565b6000868152601660205260409020600101549091501580612c8057506000858152601660205260409020600101548111155b612c9c5760405162461bcd60e51b815260040161102690615ab6565b600085815260166020908152604080832081516101e08101835281548152600182015493810193909352600281015491830191909152600381015460608301526004808201546080840152600582015460a0840152600682015460c08401526007909101546001600160a01b03811660e084015260ff600160a01b820481161515610100850152600160a81b820481161515610120850152600160b01b820481161515610140850152600160b81b820481161515610160850152600160c01b820481161515610180850152600160c81b8204811615156101a0850152600160d01b9091041615156101c083015254909190612d956120ab565b612d9f9088615a24565b612da99190615a43565b905081610100015115612e5857600780546000898152601660205260409081902090920154915163656df4ed60e11b81523360048201526024810184905260ff600160c81b8404811615156044830152600160b01b90930490921615156064830152600160848301526001600160a01b03169063cadbe9da9060a401600060405180830381600087803b158015612e3f57600080fd5b505af1158015612e53573d6000803e3d6000fd5b505050505b612e658733888685614e67565b505060016002555050505050565b612e7b6145f0565b60008a81526017602052604090208a81556001810180546001600160a01b0319166001600160a01b038c1617905560028101899055600381018890556004810187905560058101869055600681018590556007810184905560088101805460ff19168415159081179091556009909101829055612f2b576001600160a01b0389166000908152601d602090815260408083208b845290915281208054879290612f259084906159a6565b90915550505b60008881526016602052604081206003018054879290612f4c9084906159a6565b909155505060008881526016602052604081206004018054869290612f729084906159a6565b9250508190555084600c6000828254612f8b91906159a6565b925050819055508360116000828254612fa491906159a6565b90915550506001600160a01b03891660009081526018602052604081208054879290612fd19084906159a6565b90915550506001600160a01b0389166000908152601b602052604081208054869290612ffe9084906159a6565b9091555050600088815260166020526040812060050180548592906130249084906159a6565b90915550506000888152601660205260408120600601805483929061304a9084906159a6565b9250508190555082600f600082825461306391906159a6565b92505081905550806010600082825461307c91906159a6565b90915550506001600160a01b038916600090815260196020526040812080548592906130a99084906159a6565b90915550506001600160a01b0389166000908152601a6020526040812080548392906130d69084906159a6565b909155505050505050505050505050565b6130ef6145f0565b6001600160a01b03166000908152601b6020526040902055565b6131116145f0565b60008381526017602052604090209283556001830180546001600160a01b0319166001600160a01b0393909316929092179091556008909101805460ff1916911515919091179055565b6131636145f0565b6001600160a01b0316600090815260186020526040902055565b6131856145f0565b604051339081904780156108fc02916000818181858888f19350505050158015611ca5573d6000803e3d6000fd5b600a54604051635325f64f60e11b815260048101849052600091829182916001600160a01b03169063a64bec9e9060240160206040518083038186803b1580156131fc57600080fd5b505afa158015613210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132349190615946565b90506000805b828110156134d357600a54604051635e15f0df60e11b8152600481018990526000916001600160a01b03169063bc2be1be9060240160006040518083038186803b15801561328757600080fd5b505afa15801561329b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132c39190810190615b00565b82815181106132d4576132d461595f565b6020908102919091010151600a54604051639067b67760e01b8152600481018b90529192506000916001600160a01b0390911690639067b6779060240160006040518083038186803b15801561332957600080fd5b505afa15801561333d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133659190810190615b00565b83815181106133765761337661595f565b6020908102919091010151600a54604051635d416d0960e01b8152600481018c90529192506001600160a01b031690635d416d099060240160006040518083038186803b1580156133c657600080fd5b505afa1580156133da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134029190810190615b00565b83815181106134135761341361595f565b602002602001015193508a82101561342b578a61342d565b815b915060008a1561344a57428b10613444574261344c565b8a61344c565b425b905081156134685780821115613462578061346a565b8161346a565b805b91508183116134bd57620186a06301da9c008e876134888787615a82565b6134929190615a24565b61349c9190615a24565b6134a69190615a43565b6134b09190615a43565b6134ba90886159a6565b96505b50505080806134cb9061598b565b91505061323a565b508483116134e25760006134ec565b6134ec8584615a82565b9998505050505050505050565b6135016145f0565b601555565b60008181526017602090815260408083208151610140810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e0830152600881015460ff161580156101008401526009909101546101208301526135a15750600092915050565b600a546040808301519051635325f64f60e11b815260009283926001600160a01b039091169163a64bec9e916135dd9160040190815260200190565b60206040518083038186803b1580156135f557600080fd5b505afa158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d9190615946565b90506000805b828110156138ff57600a546040868101519051635e15f0df60e11b815260048101919091526000916001600160a01b03169063bc2be1be9060240160006040518083038186803b15801561368657600080fd5b505afa15801561369a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136c29190810190615b00565b82815181106136d3576136d361595f565b6020908102919091010151600a546040808901519051639067b67760e01b81529293506000926001600160a01b0390921691639067b6779161371b9160040190815260200190565b60006040518083038186803b15801561373357600080fd5b505afa158015613747573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261376f9190810190615b00565b83815181106137805761378061595f565b6020908102919091010151600a546040898101519051635d416d0960e01b815260048101919091529192506001600160a01b031690635d416d099060240160006040518083038186803b1580156137d657600080fd5b505afa1580156137ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138129190810190615b00565b83815181106138235761382361595f565b602002602001015193508660800151821015613843578660800151613845565b815b91506000876060015160001461387057428860600151106138665742613872565b8760600151613872565b425b9050811561388e57808211156138885780613890565b81613890565b805b91508183116138e957620186a06301da9c008960c001518786866138b49190615a82565b6138be9190615a24565b6138c89190615a24565b6138d29190615a43565b6138dc9190615a43565b6138e690886159a6565b96505b50505080806138f79061598b565b915050613633565b508361012001518311613913576000613923565b6101208401516139239084615a82565b9695505050505050565b6139356145f0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b61395f6145f0565b6001600160a01b0381166139bf5760405162461bcd60e51b815260206004820152602160248201527f4d41524b4554504c4143453a20494e56414c49442053574150204144445245536044820152605360f81b6064820152608401611026565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6139e96145f0565b6064811115613a1f5760405162461bcd60e51b81526020600482015260026024820152614e4360f01b6044820152606401611026565b602155565b600254600114613a465760405162461bcd60e51b8152600401611026906159f5565b60006002556024543414613a6c5760405162461bcd60e51b8152600401611026906159be565b60008111613aad5760405162461bcd60e51b815260206004820152600e60248201526d1253959053125108105353d5539560921b6044820152606401611026565b600082815260166020908152604080832081516101e081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600701546001600160a01b03811660e0830181905260ff600160a01b830481161515610100850152600160a81b830481161515610120850152600160b01b830481161515610140850152600160b81b830481161515610160850152600160c01b830481161515610180850152600160c81b8304811615156101a0850152600160d01b90920490911615156101c0830152601e549192909190613baf826103e8615a82565b9050600060225460035487613bc49190615a24565b613bce9190615a43565b905060006103e8613bdf8584615a24565b613be99190615a43565b905060006103e8613bfa8585615a24565b613c049190615a43565b600654600b5460405163049eca8760e11b81529293506000926001600160a01b039283169263093d950e92613c4092911690869060040161592d565b60206040518083038186803b158015613c5857600080fd5b505afa158015613c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c909190615946565b90508015613eb9576040516370a0823160e01b815233600482015281906001600160a01b038916906370a082319060240160206040518083038186803b158015613cd957600080fd5b505afa158015613ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d119190615946565b1015613d485760405162461bcd60e51b81526004016110269060208082526004908201526354533a4560e01b604082015260600190565b604051636eb1769f60e11b815233600482015230602482015281906001600160a01b0389169063dd62ed3e9060440160206040518083038186803b158015613d8f57600080fd5b505afa158015613da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc79190615946565b1015613dfe5760405162461bcd60e51b81526004016110269060208082526004908201526354533a4160e01b604082015260600190565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038816906323b872dd90606401602060405180830381600087803b158015613e4c57600080fd5b505af1158015613e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e849190615a65565b613eb95760405162461bcd60e51b8152600401611026906020808252600490820152631514ce9560e21b604082015260600190565b821561427f57600060035460225485613ed29190615a24565b613edc9190615a43565b6023546040516370a0823160e01b815233600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b158015613f2457600080fd5b505afa158015613f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5c9190615946565b1015613f935760405162461bcd60e51b815260206004820152600660248201526554533a452d5560d01b6044820152606401611026565b602354604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e9060440160206040518083038186803b158015613fdc57600080fd5b505afa158015613ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140149190615946565b101561404b5760405162461bcd60e51b815260206004820152600660248201526554533a412d5560d01b6044820152606401611026565b6023546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561409d57600080fd5b505af11580156140b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d59190615a65565b61410a5760405162461bcd60e51b815260206004820152600660248201526554533a542d5560d01b6044820152606401611026565b601f5460ff16801561412657506009546001600160a01b031615155b1561427d576020541561427d5760006064602054836141459190615a24565b61414f9190615a43565b60235460095460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92614187921690859060040161592d565b602060405180830381600087803b1580156141a157600080fd5b505af11580156141b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d99190615a65565b61420a5760405162461bcd60e51b815260206004820152600260248201526122a960f11b6044820152606401611026565b600954602054602154604051637e0867cb60e11b815260048101929092526024820152604481018490526001600160a01b039091169063fc10cf9690606401600060405180830381600087803b15801561426357600080fd5b505af1158015614277573d6000803e3d6000fd5b50505050505b505b6000831561431057600654600b5460405163049eca8760e11b81526001600160a01b039283169263093d950e926142bd92911690889060040161592d565b60206040518083038186803b1580156142d557600080fd5b505afa1580156142e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061430d9190615946565b90505b60008b815260166020908152604080832081516101e081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600701546001600160a01b03811660e083015260ff600160a01b820481161515610100840152600160a81b820481161515610120840152600160b01b820481161515610140840152600160b81b820481161515610160840152600160c01b820481161515610180840152600160c81b8204811615156101a0840152600160d01b9091041615156101c08201529061440583856159a6565b336000908152601d6020908152604080832086518452909152812054919250906144309083906159a6565b9050826020015160001480614449575080836020015110155b6144655760405162461bcd60e51b815260040161102690615ab6565b82610100015115614505576007546101a0840151610140850151604051637009d65560e01b8152336004820152602481018c9052604481018b9052606481018a90529115156084830152151560a4820152600160c48201526001600160a01b0390911690637009d6559060e401600060405180830381600087803b1580156144ec57600080fd5b505af1158015614500573d6000803e3d6000fd5b505050505b6145128e3384848c614e67565b50506001600255505050505050505050505050565b61452f6145f0565b60648111156145655760405162461bcd60e51b81526020600482015260026024820152614e4360f01b6044820152606401611026565b602055565b6145726145f0565b6001600160a01b0381166145d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611026565b6145e0816150d3565b50565b6145eb6145f0565b600f55565b6000546001600160a01b031633146123eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611026565b6000614655826123ed565b90506001811515146146a15760405162461bcd60e51b81526020600482015260156024820152745354414b494e473a2043414e4e4f5420434c41494d60581b6044820152606401611026565b60006146ac83613506565b6000848152601760209081526040918290208251610140810184528154815260018201546001600160a01b03169281018390526002820154938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e0840152600881015460ff161515610100840152600901546101208301529192509033146147985760405162461bcd60e51b815260206004820152602660248201527f5354414b494e473a204f4e4c59204f574e4552204f46205354414b452043414e60448201526520434c41494d60d01b6064820152608401611026565b6040808201516000818152601660209081529083902083516101e081018552815481526001820154928101929092526002810154938201939093526003830154606082015260048301546080820152600583015460a0820152600683015460c08201526007909201546001600160a01b03811660e084015260ff600160a01b820481161515610100850152600160a81b820481161515610120850152600160b01b820481161515610140850152600160b81b820481161515610160850152600160c01b820481161515610180850152600160c81b8204811615156101a0850152600160d01b9091041615156101c0830152908315614daf57600554156148dc576000612710600554866148ab9190615a24565b6148b59190615a43565b90506148c18186615a82565b945080600d60008282546148d591906159a6565b9091555050505b8315614daf57600654600b5460405163049eca8760e11b81526000926001600160a01b039081169263093d950e9261491c9290911690899060040161592d565b60206040518083038186803b15801561493457600080fd5b505afa158015614948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061496c9190615946565b600b546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b1580156149b457600080fd5b505afa1580156149c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149ec9190615946565b1015614a605760405162461bcd60e51b815260206004820152603b60248201527f544f4b454e205354414b453a204e4f5420454e4f55474820544f4b454e20424160448201527f4c414e434520544f2050415920554e5354414b452052455741524400000000006064820152608401611026565b600b5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90614a92903390859060040161592d565b602060405180830381600087803b158015614aac57600080fd5b505af1158015614ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ae49190615a65565b614b565760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e205354414b453a20554e41424c4520544f205452414e534645522060448201527f434f4d4d495353494f4e205041594d454e5420544f20524543495049454e54006064820152608401611026565b6000878152601760209081526040808320600201548352601690915281206005018054839290614b879084906159a6565b90915550506000878152601760209081526040808320600201548352601690915281206006018054879290614bbd9084906159a6565b9250508190555080600f6000828254614bd691906159a6565b925050819055508460106000828254614bef91906159a6565b909155505060008781526017602052604081206007018054839290614c159084906159a6565b909155505060008781526017602052604081206009018054879290614c3b9084906159a6565b90915550503360009081526019602052604081208054839290614c5f9084906159a6565b9091555050336000908152601a602052604081208054879290614c839084906159a6565b909155505061018082015115614cf857600754604051630afbd3a160e21b81526001600160a01b0390911690632bef4e8490614cc5903390899060040161592d565b600060405180830381600087803b158015614cdf57600080fd5b505af1158015614cf3573d6000803e3d6000fd5b505050505b81610120015115614d76576007546101408301516040516336fd4be560e11b81523360048201526024810188905290151560448201526001600160a01b0390911690636dfa97ca90606401600060405180830381600087803b158015614d5d57600080fd5b505af1158015614d71573d6000803e3d6000fd5b505050505b604051858152339088907f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060200160405180910390a3505b505050505050565b600654600b5460035460405163049eca8760e11b815260009384936001600160a01b039182169363093d950e93614df4939092169160040161592d565b60206040518083038186803b158015614e0c57600080fd5b505afa158015614e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e449190615946565b905080600454600354614e579190615a24565b614e619190615a43565b91505090565b601554614e759060016159a6565b6015556001600160a01b038416600090815260186020526040902054614ea757601254614ea39060016159a6565b6012555b60008581526016602052604081206002015415614eec57600086815260166020526040902060020154614edd9062015180615a24565b614ee790426159a6565b614eef565b60005b601580546000818152601760209081526040808320938455600190930180546001600160a01b0319166001600160a01b038c16908117909155845483528383206002018c90558454835283832060039081018790558554845284842042600490910155855484528484206005018b9055855484528484206006018990558554845284842060070184905594548352838320600801805460ff191690558252601d81528282208b835281528282208890556016905290812090910180549293508692909190614fbe9084906159a6565b909155505060008681526016602052604081206004018054849290614fe49084906159a6565b9250508190555083600c6000828254614ffd91906159a6565b92505081905550816011600082825461501691906159a6565b90915550506001600160a01b038516600090815260186020526040812080548692906150439084906159a6565b90915550506001600160a01b0385166000908152601b6020526040812080548492906150709084906159a6565b9091555050601554604080518881526020810187905242818301526060810184905290516001600160a01b03881692917f23f0b0cdc0ca65ec8cd8e57dcd05650c04a2df9db5c249d8a4e752f33ac20406919081900360800190a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561513557600080fd5b5035919050565b80151581146145e057600080fd5b60006020828403121561515c57600080fd5b81356151678161513c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156151ad576151ad61516e565b604052919050565b600067ffffffffffffffff8211156151cf576151cf61516e565b5060051b60200190565b600082601f8301126151ea57600080fd5b813560206151ff6151fa836151b5565b615184565b82815260059290921b8401810191818101908684111561521e57600080fd5b8286015b848110156152395780358352918301918301615222565b509695505050505050565b6001600160a01b03811681146145e057600080fd5b6000806040838503121561526c57600080fd5b823567ffffffffffffffff81111561528357600080fd5b61528f858286016151d9565b92505060208301356152a081615244565b809150509250929050565b6000602082840312156152bd57600080fd5b813561516781615244565b600082601f8301126152d957600080fd5b813560206152e96151fa836151b5565b82815260059290921b8401810191818101908684111561530857600080fd5b8286015b8481101561523957803561531f81615244565b835291830191830161530c565b600082601f83011261533d57600080fd5b8135602061534d6151fa836151b5565b82815260059290921b8401810191818101908684111561536c57600080fd5b8286015b848110156152395780356153838161513c565b8352918301918301615370565b6000806000806000806000806000806101408b8d0312156153b057600080fd5b8a3567ffffffffffffffff808211156153c857600080fd5b6153d48e838f016151d9565b9b5060208d01359150808211156153ea57600080fd5b6153f68e838f016152c8565b9a5060408d013591508082111561540c57600080fd5b6154188e838f016151d9565b995060608d013591508082111561542e57600080fd5b61543a8e838f016151d9565b985060808d013591508082111561545057600080fd5b61545c8e838f016151d9565b975060a08d013591508082111561547257600080fd5b61547e8e838f016151d9565b965060c08d013591508082111561549457600080fd5b6154a08e838f016151d9565b955060e08d01359150808211156154b657600080fd5b6154c28e838f016151d9565b94506101008d01359150808211156154d957600080fd5b6154e58e838f0161532c565b93506101208d01359150808211156154fc57600080fd5b506155098d828e016151d9565b9150509295989b9194979a5092959850565b60006020828403121561552d57600080fd5b813567ffffffffffffffff81111561554457600080fd5b615550848285016151d9565b949350505050565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e08301516155bb60e08401826001600160a01b03169052565b5061010083810151151590830152610120808401511515908301526101408084015115159083015261016080840151151590830152610180808401511515908301526101a0808401511515908301526101c0928301511515929091019190915290565b6000806040838503121561563157600080fd5b823561563c81615244565b946020939093013593505050565b6000806040838503121561565d57600080fd5b8235915060208301356152a081615244565b81518152602080830151610140830191615693908401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516156e48285018215159052565b505061012092830151919092015290565b60008060008060008060008060006101208a8c03121561571457600080fd5b8935985060208a0135975060408a0135965060608a01356157348161513c565b955060808a01356157448161513c565b945060a08a01356157548161513c565b935060c08a01356157648161513c565b925060e08a01356157748161513c565b91506101008a01356157858161513c565b809150509295985092959850929598565b60008060008060008060c087890312156157af57600080fd5b8635955060208701356157c181615244565b94506040870135935060608701356157d88161513c565b925060808701356157e88161513c565b915060a08701356157f88161513c565b809150509295509295509295565b6000806040838503121561581957600080fd5b50508035926020909101359150565b6000806000806000806000806000806101408b8d03121561584857600080fd5b8a35995060208b013561585a81615244565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b01356158958161513c565b809250506101208b013590509295989b9194979a5092959850565b6000806000606084860312156158c557600080fd5b8335925060208401356158d781615244565b915060408401356158e78161513c565b809150509250925092565b600080600080600060a0868803121561590a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561595857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561599f5761599f615975565b5060010190565b600082198211156159b9576159b9615975565b500190565b60208082526019908201527f496e636f72726563742066656520616d6f756e742073656e7400000000000000604082015260600190565b6020808252601590820152741513d2d1538814d51052d25391ce881313d0d2d151605a1b604082015260600190565b6000816000190483118215151615615a3e57615a3e615975565b500290565b600082615a6057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615a7757600080fd5b81516151678161513c565b600082821015615a9457615a94615975565b500390565b600060208284031215615aab57600080fd5b815161516781615244565b6020808252602a908201527f544f4b454e205354414b453a2055736572207374616b65206d61782076616c75604082015269329037b3103a37b5b2b760b11b606082015260800190565b60006020808385031215615b1357600080fd5b825167ffffffffffffffff811115615b2a57600080fd5b8301601f81018513615b3b57600080fd5b8051615b496151fa826151b5565b81815260059190911b82018301908381019087831115615b6857600080fd5b928401925b82841015615b8657835182529284019290840190615b6d565b97965050505050505056fea2646970667358221220fa6fc82b829a820449b09043a80527f5aaa198b93bb156c32767f0863cc3e93264736f6c6343000808003300000000000000000000000007985c70f427d5fdf906003f90073fbd2456f4a90000000000000000000000000052074d3eb1429f39e5ea529b54a650c21f5aa40000000000000000000000001b848d2a3f105f43bdc171f59fb93d86784b6a4200000000000000000000000010d2c95568b6fcba3bda088c2552d4ff25387771000000000000000000000000ddc8ce177504e50885de21c79df3e2b58581897f000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f