0 txs
6 calls
constructor
constructor()
functions
_totalSupply
viewfunction _totalSupply() view returns (uint256)
allowance
viewfunction allowance(address _owner, address _spender) view returns (uint256 remaining)
allowed
viewfunction allowed(address, address) view returns (uint256)
balanceDetail
viewfunction balanceDetail(address who) view returns (uint256 balance, uint256 depositAmount)
balanceOf
viewfunction balanceOf(address _owner) view returns (uint256 balance)
balances
viewfunction balances(address) view returns (uint256)
basisPointsRate
viewfunction basisPointsRate() view returns (uint256)
decimals
viewfunction decimals() view returns (uint256)
depositBalanceOf
viewfunction depositBalanceOf(address _owner) view returns (uint256 depositBalance, uint256 depositTotalBalance)
getAddressLevel
viewfunction getAddressLevel(address who) view returns (uint8 level, uint256 rewardRate, uint256 redeemFeeRate)
getBlackListStatus
viewfunction getBlackListStatus(address _maker) view returns (bool)
getConfigs
viewfunction getConfigs() view returns (uint256 interestFee, uint256 lockPeriod, uint256 redeemRewardFee, tuple[] levelConfigs)
getDepositData
viewfunction getDepositData(bytes12 reqId) view returns (tuple data)
getDepositIds
viewfunction getDepositIds(address who) view returns (bytes12[] ids)
geTotalSupply
viewfunction geTotalSupply(uint8 index) view returns (uint256)
getOwner
viewfunction getOwner() view returns (address)
getRedeemData
viewfunction getRedeemData(bytes12 reqId) view returns (tuple data)
initialed
viewfunction initialed() view returns (bool)
isBlackListed
viewfunction isBlackListed(address) view returns (bool)
MAX_UINT
viewfunction MAX_UINT() view returns (uint256)
maximumFee
viewfunction maximumFee() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
provideTotalBalances
viewfunction provideTotalBalances() view returns (uint256 balance)
supplyBalanceOf
viewfunction supplyBalanceOf() view returns (tuple[] list)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
addBlackList
nonpayablefunction addBlackList(address _evilUser)
approve
nonpayablefunction approve(address _spender, uint256 _value)
batchTransfer
nonpayablefunction batchTransfer(tuple[] trans)
destroyBlackFunds
nonpayablefunction destroyBlackFunds(address _blackListedUser)
initial
nonpayablefunction initial(uint256 _initialSupply, string _name, string _symbol, uint256 _decimals, address _manger)
issue
nonpayablefunction issue(uint256 amount)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(uint256 amount)
redemption
nonpayablefunction redemption(bytes12 reqId, address who, uint256 amount, uint256 baseFee) returns (uint256 fee, uint256 reward)
removeBlackList
nonpayablefunction removeBlackList(address _clearedUser)
setConfigs
nonpayablefunction setConfigs(uint256 interestFee, uint256 lockPeriod, uint256 redeemRewardFee, tuple[] configs)
setParams
nonpayablefunction setParams(uint256 newBasisPoints, uint256 newMaxFee)
startDeposit
nonpayablefunction startDeposit(bytes12 reqId, uint256 amount, uint256 period)
stopDeposit
nonpayablefunction stopDeposit(bytes12 reqId)
transfer
nonpayablefunction transfer(address _to, uint256 _value)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _value)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
AddedBlackList
event AddedBlackList(address _user)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BatchTransferEvent
event BatchTransferEvent()
DepositEvent
event DepositEvent(bytes12 reqId, uint256 amount, uint256 period, uint256 beginTime, uint256 endTime)
Deprecate
event Deprecate(address newAddress)
DestroyedBlackFunds
event DestroyedBlackFunds(address _blackListedUser, uint256 _balance)
Issue
event Issue(uint256 amount)
Params
event Params(uint256 feeBasisPoints, uint256 maxFee)
Pause
event Pause()
Redeem
event Redeem(uint256 amount)
RedemptionEvent
event RedemptionEvent(bytes12 reqId, address who, uint256 amount, uint256 fee, uint256 reward)
RemovedBlackList
event RemovedBlackList(address _user)
SetConfigEvent
event SetConfigEvent()
StopDepositEvent
event StopDepositEvent(bytes12 reqId, uint256 interest, uint256 depositReward)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpause
event Unpause()
errors
No errors.
creation bytecode
0x60806040526000805460ff60a01b1990811682556003829055600491909155601a805490911690553480156200003457600080fd5b506040805160208082018084526000808452845192830190945283825283546001600160a01b03191633178455600184905582516006916200007a9160079190620000c8565b50815162000090906008906020850190620000c8565b506009555050600080546001600160a01b0316815260026020526040902055601a805460ff60a01b1916600160a01b179055620001ab565b828054620000d6906200016e565b90600052602060002090601f016020900481019282620000fa576000855562000145565b82601f106200011557805160ff191683800117855562000145565b8280016001018555821562000145579182015b828111156200014557825182559160200191906001019062000128565b506200015392915062000157565b5090565b5b8082111562000153576000815560010162000158565b600181811c908216806200018357607f821691505b60208210811415620001a557634e487b7160e01b600052602260045260246000fd5b50919050565b61355880620001bb6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80638c7cac6d1161015c578063cc872b66116100ce578063e5b5019a11610087578063e5b5019a14610719578063f1716f1a14610722578063f1b07f4014610735578063f2fde38b1461074a578063f3bdc2281461075d578063fba13bd01461077057600080fd5b8063cc872b661461067b578063db006a751461068e578063dd62ed3e146106a1578063dd644f72146106da578063e47d6060146106e3578063e4997dc51461070657600080fd5b8063a9059cbb11610120578063a9059cbb146105f7578063abdc30331461060a578063b0347f6314610622578063b5d9b31e14610635578063c0324c7714610648578063c5ebc2f71461065b57600080fd5b80638c7cac6d146105ae5780638da5cb5b146105c15780639563ecbd146105d457806395d89b41146105e75780639de94e15146105ef57600080fd5b80633eaaf86b116102005780635c975abb116101b95780635c975abb1461045157806370a08231146104655780637630d1a71461047857806379fd2bf01461056e5780638456cb5914610581578063893d20e81461058957600080fd5b80633eaaf86b146103a65780633f4ba83a146103af578063508d7288146103b75780635199aa82146103da57806359bf1abe146103fa5780635c6581651461042657600080fd5b806323b872dd1161025257806323b872dd1461030757806327e235e31461031a5780632f2157f51461033a5780633104e7ce1461036c578063313ce56714610394578063353907141461039d57600080fd5b8063021c17ad1461028f57806306fdde03146102b8578063095ea7b3146102cd5780630ecb93c0146102e257806318160ddd146102f5575b600080fd5b601a546102a390600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b6102c06107a6565b6040516102af9190613142565b6102e06102db366004612db5565b610834565b005b6102e06102f0366004612d2b565b61085c565b6001545b6040519081526020016102af565b6102e0610315366004612d79565b6108ce565b6102f9610328366004612d2b565b60026020526000908152604090205481565b61034d610348366004612d2b565b610916565b6040805160ff90941684526020840192909252908201526060016102af565b61037f61037a366004612d2b565b610a2f565b604080519283526020830191909152016102af565b6102f960095481565b6102f960045481565b6102f960015481565b6102e0610a5c565b6102f96103c536600461305b565b60ff166000908152600a602052604090205490565b6103ed6103e8366004612e20565b610abf565b6040516102af9190613197565b6102a3610408366004612d2b565b6001600160a01b031660009081526006602052604090205460ff1690565b6102f9610434366004612d46565b600560209081526000928352604080842090915290825290205481565b6000546102a390600160a01b900460ff1681565b6102f9610473366004612d2b565b610b97565b61051e610486366004612e20565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b0319908116600090815260196020908152604091829020825160a0808201855282549081901b9095168152600160601b9094046001600160a01b0316918401919091526001810154918301919091526002810154606083015260030154608082015290565b6040516102af919081516001600160a01b03191681526020808301516001600160a01b03169082015260408083015190820152606080830151908201526080918201519181019190915260a00190565b6102e061057c366004612e7d565b610bca565b6102e0610e4c565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016102af565b6102e06105bc366004612ddf565b610eb6565b600054610596906001600160a01b031681565b6102e06105e2366004612e20565b61101b565b6102c0611349565b600d546102f9565b6102e0610605366004612db5565b611356565b610612611398565b6040516102af9493929190613228565b6102e0610630366004612ffb565b6114f0565b6102e0610643366004612f52565b6115fd565b6102e0610656366004612fd9565b611e62565b61066e610669366004612d2b565b611efb565b6040516102af9190613098565b6102e0610689366004612f39565b611f94565b6102e061069c366004612f39565b612065565b6102f96106af366004612d46565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6102f960035481565b6102a36106f1366004612d2b565b60066020526000908152604090205460ff1681565b6102e0610714366004612d2b565b61213e565b6102f960001981565b61037f610730366004612e3b565b6121a6565b61073d6123b8565b6040516102af91906130e6565b6102e0610758366004612d2b565b6124f5565b6102e061076b366004612d2b565b61253a565b61037f61077e366004612d2b565b6001600160a01b03166000908152601560209081526040808320546016909252909120549091565b600780546107b39061343e565b80601f01602080910402602001604051908101604052809291908181526020018280546107df9061343e565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b505050505081565b60406108418160046132e3565b36101561084d57600080fd5b61085783836125f7565b505050565b6000546001600160a01b0316331461087357600080fd5b6001600160a01b038116600081815260066020908152604091829020805460ff1916600117905590519182527f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc91015b60405180910390a150565b600054600160a01b900460ff16156108e557600080fd5b6001600160a01b03831660009081526006602052604090205460ff161561090b57600080fd5b6108578383836126ab565b6001600160a01b03811660009081526015602052604081205481908190815b601454811015610a2657600060148281548110610954576109546134d6565b60009182526020808320818304015460ff601f9093166101000a9004821680845260138252604093849020845160a08101865281546001600160401b038082168352600160401b90910416938101939093526001810154948301859052600281015460608401526003015490921660808201529092509084108015906109de575083816060015110155b15610a11578060800151965080602001516001600160401b0316955080600001516001600160401b031694505050610a26565b50508080610a1e90613479565b915050610935565b50509193909250565b600080610a3b83610b97565b6001600160a01b039093166000908152601560205260409020549293915050565b6000546001600160a01b03163314610a7357600080fd5b600054600160a01b900460ff16610a8957600080fd5b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b610ac7612af2565b6001600160a01b0319808316600090815260176020908152604091829020825161014081018452815460a081811b9096168252600160601b90046001600160a01b031692810192909252600181015492820192909252600280830154606083015260038301546080830152600483015493820193909352600582015460c0820152600682015460e082015260078201546101008201526008820154909261012084019160ff1690811115610b7d57610b7d6134c0565b6002811115610b8e57610b8e6134c0565b90525092915050565b6001600160a01b0381166000908152601560209081526040808320546002909252822054610bc491612733565b92915050565b6000610bd533610b97565b905082811015610c115760405162461bcd60e51b81526020600482015260026024820152610c8d60f21b60448201526064015b60405180910390fd5b601154821015610c485760405162461bcd60e51b8152602060048201526002602482015261323560f01b6044820152606401610c08565b426000610c56846018613408565b610c6290610e10613408565b610c6c90836132e3565b6001600160a01b0319871660009081526017602052604090209091506001600882015460ff166002811115610ca357610ca36134c0565b14158015610cca57506002600882015460ff166002811115610cc757610cc76134c0565b14155b610cfb5760405162461bcd60e51b8152602060048201526002602482015261191b60f11b6044820152606401610c08565b600160601b330260a088901c178155600180820187905560028201869055600382018490556004820183905560088201805460ff191682800217905550336000818152601860209081526040808320805460018082018355918552838520600282040180546bffffffffffffffffffffffff93909216600c026101000a9283021990911660a08e901c92909202919091179055928252601590522054610da187826132e3565b33600090815260156020908152604080832093909355601690522054610dc78189612756565b33600090815260166020526040902055600e54610de49089612756565b600e55604080516001600160a01b03198b168152602081018a905290810188905260608101869052608081018590527fa95cf94a679d5bf1f58a47f2e64bb41db4894fa0c0906b2df2f0bea684c4b3a99060a0015b60405180910390a1505050505050505050565b6000546001600160a01b03163314610e6357600080fd5b600054600160a01b900460ff1615610e7a57600080fd5b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b601a546001600160a01b0316331480610ed957506000546001600160a01b031633145b610ee257600080fd5b60005b81811015610fed576000838383818110610f0157610f016134d6565b905060600201803603810190610f179190612efe565b60208082015160408084015160ff166000908152600b9093528220549293509091610f4191612756565b60408084015160ff166000908152600a6020522054909150811115610f8d5760405162461bcd60e51b8152602060048201526002602482015261191960f11b6044820152606401610c08565b600f5482516020840151610fab926001600160a01b03169190612775565b60408083015160ff166000908152600b6020908152919020829055820151600d54610fd591612756565b600d5550819050610fe581613479565b915050610ee5565b506040517fa21fb12e2da7773201ad4fad53de68a8f898a6c51a6a51688742ee577365673d90600090a15050565b6001600160a01b0319811660009081526017602052604090206001600882015460ff16600281111561104f5761104f6134c0565b146110815760405162461bcd60e51b8152602060048201526002602482015261032360f41b6044820152606401610c08565b8054600160601b90046001600160a01b031633146110c65760405162461bcd60e51b8152602060048201526002602482015261062760f31b6044820152606401610c08565b80600401544210156110ff5760405162461bcd60e51b8152602060048201526002602482015261313960f01b6044820152606401610c08565b6000610e1060188360030154426111169190613427565b61112091906132fb565b61112a91906132fb565b9050600061016d6127108360105486600101546111479190613408565b6111519190613408565b61115b91906132fb565b61116591906132fb565b9050801561118457600f54611184906001600160a01b03163383612775565b60088301805460ff1916600217905560058301819055426007840155600080806111ad33610916565b9194509250905060006127106111c38487613408565b6111cd91906132fb565b60068801819055905080156112ce57600f546111f3906001600160a01b03163383612775565b60086000908152600b6020527f71f482bdabd1ea844d62c952b094e632959690d7448ca2aab34034ec985693585461122b9083612756565b6008600052600a6020527f2c1fd36ba11b13b555f58753742999069764391f450ca8727fe8a3eeffe677755490915081111561128e5760405162461bcd60e51b8152602060048201526002602482015261323160f01b6044820152606401610c08565b6008600052600b6020527f71f482bdabd1ea844d62c952b094e632959690d7448ca2aab34034ec98569358819055600d546112c99083612756565b600d55505b3360009081526015602052604090205460018801546112ee908290612733565b336000908152601560209081526040918290209290925580516001600160a01b03198c16815291820188905281018390527f9ba6508a4df3759b89290f70b17c5eff1ac726e5e4dfa55f89bd3bafe6db5d6190606001610e39565b600880546107b39061343e565b600054600160a01b900460ff161561136d57600080fd5b3360009081526006602052604090205460ff161561138a57600080fd5b61139482826128e3565b5050565b6010546011546012546014546060906001600160401b038111156113be576113be6134ec565b60405190808252806020026020018201604052801561141757816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816113dc5790505b50905060005b6014548110156114e95760006014828154811061143c5761143c6134d6565b60009182526020808320818304015460ff601f9093166101000a9004821680845260138252604093849020845160a08101865281546001600160401b038082168352600160401b90910416938101939093526001810154948301949094526002840154606083015260039093015490911660808201528451919250908490849081106114ca576114ca6134d6565b60200260200101819052505080806114e190613479565b91505061141d565b5090919293565b601a546001600160a01b031633148061151357506000546001600160a01b031633145b61151c57600080fd5b60108590556011849055601283905560005b818110156115cc57600083838381811061154a5761154a6134d6565b9050606002018036038101906115609190612eb0565b60408082015160ff1660009081526013602052209091506020820151815492516fffffffffffffffffffffffffffffffff19909316600160401b6001600160401b039283160267ffffffffffffffff1916179216919091179055806115c481613479565b91505061152e565b506040517f8a7ceb26b2642176d08afdbc5e9245062effb3c70f4c033271349efacdb4b46890600090a15050505050565b601a54600160a01b900460ff161561163c5760405162461bcd60e51b8152602060048201526002602482015261031360f41b6044820152606401610c08565b601a8054600160a01b60ff60a01b19909116179055600080546001600160a01b031916331790556001859055835161167b906007906020870190612b68565b50825161168f906008906020860190612b68565b506009829055600080546001600160a01b03908116825260026020526040909120869055601a80546001600160a01b03191691831691909117905561030c60105560b460115560ff6012556127106116e9866101f4613408565b6116f391906132fb565b6001600052600a6020527fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc75561271061172e86610320613408565b61173891906132fb565b6002600052600a6020527fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba855612710611773866101f4613408565b61177d91906132fb565b6003600052600a6020527fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa39759556127106117b8866105dc613408565b6117c291906132fb565b6004600052600a6020527fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a841556127106117fc8660fa613408565b61180691906132fb565b6005600052600a6020527ff35035bc2b01d44bd35a1dcdc552315cffb73da35cfd60570b7b777f98036f9f55612710611841866105dc613408565b61184b91906132fb565b6006600052600a6020527f10d9dd018e4cae503383c9f804c1c1603ada5856ee7894375d9b97cd8c8b27db5561271061188686610320613408565b61189091906132fb565b6007600052600a6020527f22e39f61d1e4986b4f116cea9067f62cc77d74dff1780ae9c8b5166d1dd28829556127106118cb86610bb8613408565b6118d591906132fb565b6008600052600a6020527f2c1fd36ba11b13b555f58753742999069764391f450ca8727fe8a3eeffe677755561271061191086610320613408565b61191a91906132fb565b6009600052600a6020527f825eb4cda6b8b44578c55770496c59e6dc3cf2235f690bcdaf51a61898ceb284556127106119558661015e613408565b61195f91906132fb565b7f3e57c57b03145299956be61386751c5b285d460d484d5c2403a6be086d9d6baa555050600c80546001818101835560208083047fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79081018054601f95861661010090810a60ff81810219909316179092558654808601885584810484018054918816840a6002818102918502199093161790558754808701895585810485018054918916850a60038181029186021990931617905588548088018a5586810486018054918a16860a60048181029187021990931617905589548089018b5587810487018054918b16870a6005818102918802199093161790558a54808a018c5588810488018054918c16880a60068102908802199092169190911790558a54808a018c5588810488018054918c16880a60078102908802199092169190911790558a54808a018c5588810488018054918c16880a60088102908802199092169190911790558a54808a018c5588810488018054918c16880a60098102908802199092169190911790558a54808a01909b55878b0490960180549a8a16860a600a810290860219909b169a909a17909955600f80546001600160a01b03191633179055601386527f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf350805460ff19908116891790915560007f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34e819055633b9ac9ff7f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34f557f0b9d2c0c271bb30544eb78c59bdaebdae2728e5f65814c07768a0abe90ed19268054831685179055633b9aca007f0b9d2c0c271bb30544eb78c59bdaebdae2728e5f65814c07768a0abe90ed19245564012a05f1ff7f0b9d2c0c271bb30544eb78c59bdaebdae2728e5f65814c07768a0abe90ed1925557f0d2a6872ef858a7f8ead18dc4f3f2e8d35c853d47e2816cbb9cdd49202554e0f805483168417905564012a05f2007f0d2a6872ef858a7f8ead18dc4f3f2e8d35c853d47e2816cbb9cdd49202554e0d556405d21db9ff7f0d2a6872ef858a7f8ead18dc4f3f2e8d35c853d47e2816cbb9cdd49202554e0e557f01413ff7a3b1d5b6c016c061d48e2c7014700c777a29fcd068fff04265813d60805483168c1790556405d21dba007f01413ff7a3b1d5b6c016c061d48e2c7014700c777a29fcd068fff04265813d5e5564174876e7ff7f01413ff7a3b1d5b6c016c061d48e2c7014700c777a29fcd068fff04265813d5f557ff4b2859895858d6aa26d656e4999d552f6a869b74c43bba7d2a941c4d22c355c8054909216871790915564174876e8007ff4b2859895858d6aa26d656e4999d552f6a869b74c43bba7d2a941c4d22c355a557ff4b2859895858d6aa26d656e4999d552f6a869b74c43bba7d2a941c4d22c355b9c909c556014805480890182559c819052868d047fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec90810180549e8b16870a80870219909f16909e17909d55805480890182558781048e018054918b16870a9485029486021990911693909317909255815480880183558681048d018054918a16860a92830292850219909116919091179055805480870182558581048c018054918916850a998a0299840219909116989098179097558654948501909655918304909701805492909316900a9586029590920219909116939093179092555050565b6000546001600160a01b03163314611e7957600080fd5b60148210611e8657600080fd5b60328110611e9357600080fd5b6003829055600954611eb190611eaa90600a613360565b8290612a3e565b60048190556003546040517fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e92611eef928252602082015260400190565b60405180910390a15050565b6001600160a01b038116600090815260186020908152604091829020805483518184028101840190945280845260609392830182828015611f8857602002820191906000526020600020906000905b82829054906101000a900460a01b6001600160a01b031916815260200190600c0190602082600b01049283019260010382029150808411611f4a5790505b50505050509050919050565b6000546001600160a01b03163314611fab57600080fd5b600154611fb882826132e3565b11611fc257600080fd5b600080546001600160a01b0316815260026020526040902054611fe582826132e3565b11611fef57600080fd5b600080546001600160a01b0316815260026020526040812080548392906120179084906132e3565b92505081905550806001600082825461203091906132e3565b90915550506040518181527fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a906020016108c3565b6000546001600160a01b0316331461207c57600080fd5b80600154101561208b57600080fd5b600080546001600160a01b03168152600260205260409020548111156120b057600080fd5b600080546120ca916001600160a01b039091169083612a73565b80600160008282546120dc9190613427565b9091555050600080546001600160a01b031681526002602052604081208054839290612109908490613427565b90915550506040518181527f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44906020016108c3565b6000546001600160a01b0316331461215557600080fd5b6001600160a01b038116600081815260066020908152604091829020805460ff1916905590519182527fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c91016108c3565b601a5460009081906001600160a01b03163314806121ce57506000546001600160a01b031633145b6121d757600080fd5b60008060006121e588610916565b919450925090506127106121f98288613408565b61220391906132fb565b9450612710601254886122169190613408565b61222091906132fb565b60076000908152600b6020527ff5559028dc9ba50d75343c779b2f75e13a84a14662932fc67a486f263ca31a96549195509061225c9086612756565b6007600052600a6020527f22e39f61d1e4986b4f116cea9067f62cc77d74dff1780ae9c8b5166d1dd288295490915081116122eb576007600052600b6020527ff5559028dc9ba50d75343c779b2f75e13a84a14662932fc67a486f263ca31a96819055600d546122cc9086612756565b600d55600f546122e6906001600160a01b03168a87612775565b6122f0565b600094505b6001600160a01b03198a16600090815260196020526040908190206001600160a01b038b16600160601b0260a08d901c178155600181018a9055600281018790556003810188905590517f7d8c40bff4bef5bd187583821e7907a891c36e57b95be5c35566843429db995d906123a2908d908d908d908c908c906001600160a01b03199590951685526001600160a01b0393909316602085015260408401919091526060830152608082015260a00190565b60405180910390a1505050505094509492505050565b600c546060906001600160401b038111156123d5576123d56134ec565b60405190808252806020026020018201604052801561242d57816020015b61241a60405180606001604052806000815260200160008152602001600060ff1681525090565b8152602001906001900390816123f35790505b50905060005b600c548110156124f1576000600c8281548110612452576124526134d6565b60009182526020808320818304015460408051606081018252601f9094166101000a90910460ff16808552600b835281852054600a9093529320549293509091829161249d91613427565b815260ff83166000818152600a602090815260409182902054908401529091015283518490849081106124d2576124d26134d6565b60200260200101819052505080806124e990613479565b915050612433565b5090565b6000546001600160a01b0316331461250c57600080fd5b6001600160a01b0381161561253757600080546001600160a01b0319166001600160a01b0383161790555b50565b6000546001600160a01b0316331461255157600080fd5b6001600160a01b03811660009081526006602052604090205460ff1661257657600080fd5b600061258182610b97565b6001600160a01b03831660009081526002602052604081208190556001805492935083929091906125b3908490613427565b9091555050604080516001600160a01b0384168152602081018390527f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c69101611eef565b60406126048160046132e3565b36101561261057600080fd5b811580159061264157503360009081526005602090815260408083206001600160a01b038716845290915290205415155b1561264b57600080fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60606126b88160046132e3565b3610156126c457600080fd5b6001600160a01b0384166000908152600560209081526040808320338452909152902054600019811015612721576126fc8184612733565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b61272c858585612775565b5050505050565b60008282111561274557612745613494565b61274f8284613427565b9392505050565b60008061276383856132e3565b90508381101561274f5761274f613494565b612780838383612a73565b60006127a361271061279d60035485612a3e90919063ffffffff16565b90612add565b90506004548111156127b457506004545b60006127c08383612733565b6001600160a01b0386166000908152600260205260409020549091506127e69084612733565b6001600160a01b0380871660009081526002602052604080822093909355908616815220546128159082612756565b6001600160a01b03851660009081526002602052604090205581156128a157600080546001600160a01b03168152600260205260409020546128579083612756565b600080546001600160a01b03908116825260026020908152604080842094909455915492518581529281169290881691600080516020613503833981519152910160405180910390a35b836001600160a01b0316856001600160a01b0316600080516020613503833981519152836040516128d491815260200190565b60405180910390a35050505050565b60406128f08160046132e3565b3610156128fc57600080fd5b612907338484612a73565b600061292461271061279d60035486612a3e90919063ffffffff16565b905060045481111561293557506004545b60006129418483612733565b3360009081526002602052604090205490915061295e9085612733565b33600090815260026020526040808220929092556001600160a01b0387168152205461298a9082612756565b6001600160a01b0386166000908152600260205260409020558115612a1357600080546001600160a01b03168152600260205260409020546129cc9083612756565b600080546001600160a01b03908116825260026020908152604080842094909455915492518581529216913391600080516020613503833981519152910160405180910390a35b6040518181526001600160a01b038616903390600080516020613503833981519152906020016128d4565b600082612a4d57506000610bc4565b6000612a598385613408565b905082612a6685836132fb565b1461274f5761274f613494565b6001600160a01b0383166000908152601560209081526040808320546002909252822054612aa091612733565b905081811015612ad75760405162461bcd60e51b8152602060048201526002602482015261313160f01b6044820152606401610c08565b50505050565b600080612aea83856132fb565b949350505050565b60405180610140016040528060006001600160a01b031916815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006002811115612b6357612b636134c0565b905290565b828054612b749061343e565b90600052602060002090601f016020900481019282612b965760008555612bdc565b82601f10612baf57805160ff1916838001178555612bdc565b82800160010185558215612bdc579182015b82811115612bdc578251825591602001919060010190612bc1565b506124f19291505b808211156124f15760008155600101612be4565b80356001600160a01b0381168114612c0f57600080fd5b919050565b60008083601f840112612c2657600080fd5b5081356001600160401b03811115612c3d57600080fd5b602083019150836020606083028501011115612c5857600080fd5b9250929050565b80356001600160a01b031981168114612c0f57600080fd5b600082601f830112612c8857600080fd5b81356001600160401b0380821115612ca257612ca26134ec565b604051601f8301601f19908116603f01168101908282118183101715612cca57612cca6134ec565b81604052838152866020858801011115612ce357600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160401b0381168114612c0f57600080fd5b803560ff81168114612c0f57600080fd5b600060208284031215612d3d57600080fd5b61274f82612bf8565b60008060408385031215612d5957600080fd5b612d6283612bf8565b9150612d7060208401612bf8565b90509250929050565b600080600060608486031215612d8e57600080fd5b612d9784612bf8565b9250612da560208501612bf8565b9150604084013590509250925092565b60008060408385031215612dc857600080fd5b612dd183612bf8565b946020939093013593505050565b60008060208385031215612df257600080fd5b82356001600160401b03811115612e0857600080fd5b612e1485828601612c14565b90969095509350505050565b600060208284031215612e3257600080fd5b61274f82612c5f565b60008060008060808587031215612e5157600080fd5b612e5a85612c5f565b9350612e6860208601612bf8565b93969395505050506040820135916060013590565b600080600060608486031215612e9257600080fd5b612e9b84612c5f565b95602085013595506040909401359392505050565b600060608284031215612ec257600080fd5b612eca6132bb565b612ed383612d03565b8152612ee160208401612d03565b6020820152612ef260408401612d1a565b60408201529392505050565b600060608284031215612f1057600080fd5b612f186132bb565b612f2183612bf8565b815260208301356020820152612ef260408401612d1a565b600060208284031215612f4b57600080fd5b5035919050565b600080600080600060a08688031215612f6a57600080fd5b8535945060208601356001600160401b0380821115612f8857600080fd5b612f9489838a01612c77565b95506040880135915080821115612faa57600080fd5b50612fb788828901612c77565b93505060608601359150612fcd60808701612bf8565b90509295509295909350565b60008060408385031215612fec57600080fd5b50508035926020909101359150565b60008060008060006080868803121561301357600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561303e57600080fd5b61304a88828901612c14565b969995985093965092949392505050565b60006020828403121561306d57600080fd5b61274f82612d1a565b6003811061309457634e487b7160e01b600052602160045260246000fd5b9052565b6020808252825182820181905260009190848201906040850190845b818110156130da5783516001600160a01b031916835292840192918401916001016130b4565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561313557815180518552868101518786015285015160ff168585015260609093019290850190600101613103565b5091979650505050505050565b600060208083528351808285015260005b8181101561316f57858101830151858201604001528201613153565b81811115613181576000604083870101525b50601f01601f1916929092016040019392505050565b81516001600160a01b0319168152610140810160208301516131c460208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161322082850182613076565b505092915050565b6000608080830187845260208781860152604087818701526060848188015283885180865260a095508589019150848a0160005b828110156132a857815180516001600160401b0390811686528882015116888601528681015187860152858101518686015289015160ff1689850152928701929086019060010161325c565b50919d9c50505050505050505050505050565b604051606081016001600160401b03811182821017156132dd576132dd6134ec565b60405290565b600082198211156132f6576132f66134aa565b500190565b60008261331857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561335857816000190482111561333e5761333e6134aa565b8085161561334b57918102915b93841c9390800290613322565b509250929050565b600061274f838360008261337657506001610bc4565b8161338357506000610bc4565b816001811461339957600281146133a3576133bf565b6001915050610bc4565b60ff8411156133b4576133b46134aa565b50506001821b610bc4565b5060208310610133831016604e8410600b84101617156133e2575081810a610bc4565b6133ec838361331d565b8060001904821115613400576134006134aa565b029392505050565b6000816000190483118215151615613422576134226134aa565b500290565b600082821015613439576134396134aa565b500390565b600181811c9082168061345257607f821691505b6020821081141561347357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561348d5761348d6134aa565b5060010190565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209480b7b53beccb9efb86bafea65439655f981fe37b0949f3c25747efe3bc98d264736f6c63430008070033