0 txs
5.4k calls
constructor
constructor(address _registry)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
authority
viewfunction authority() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToPrincipal
viewfunction convertToPrincipal(uint256 underlyingAmount) view returns (uint256)
convertToUnderlying
viewfunction convertToUnderlying(uint256 principalAmount) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
flashFee
viewfunction flashFee(address _token, uint256 _amount) view returns (uint256)
getCurrentYieldOfUserInIBT
viewfunction getCurrentYieldOfUserInIBT(address _user) view returns (uint256 _yieldOfUserInIBT)
getDuration
viewfunction getDuration() view returns (uint256)
getIBT
viewfunction getIBT() view returns (address)
getIBTRate
viewfunction getIBTRate() view returns (uint256)
getIBTUnit
viewfunction getIBTUnit() view returns (uint256)
getPTRate
viewfunction getPTRate() view returns (uint256)
getTokenizationFee
viewfunction getTokenizationFee() view returns (uint256)
getTotalFeesInIBT
viewfunction getTotalFeesInIBT() view returns (uint256)
getUnclaimedFeesInIBT
viewfunction getUnclaimedFeesInIBT() view returns (uint256)
getYT
viewfunction getYT() view returns (address)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
maturity
viewfunction maturity() view returns (uint256)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxFlashLoan
viewfunction maxFlashLoan(address _token) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
maxWithdrawIBT
viewfunction maxWithdrawIBT(address owner) view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
paused
viewfunction paused() view returns (bool)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewDepositIBT
viewfunction previewDepositIBT(uint256 ibts) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewRedeemForIBT
viewfunction previewRedeemForIBT(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
previewWithdrawIBT
viewfunction previewWithdrawIBT(uint256 ibts) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
beforeYtTransfer
nonpayablefunction beforeYtTransfer(address _from, address _to)
claimFees
nonpayablefunction claimFees(uint256 _minAssets) returns (uint256 assets)
claimRewards
nonpayablefunction claimRewards(bytes _data)
claimYield
nonpayablefunction claimYield(address _receiver, uint256 _minAssets) returns (uint256 yieldInAsset)
claimYieldInIBT
nonpayablefunction claimYieldInIBT(address _receiver, uint256 _minIBT) returns (uint256 yieldInIBT)
deposit
nonpayablefunction deposit(uint256 assets, address ptReceiver, address ytReceiver, uint256 minShares) returns (uint256 shares)
deposit
nonpayablefunction deposit(uint256 assets, address ptReceiver, address ytReceiver) returns (uint256 shares)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256 shares)
depositIBT
nonpayablefunction depositIBT(uint256 ibts, address ptReceiver, address ytReceiver, uint256 minShares) returns (uint256 shares)
depositIBT
nonpayablefunction depositIBT(uint256 ibts, address ptReceiver, address ytReceiver) returns (uint256 shares)
depositIBT
nonpayablefunction depositIBT(uint256 ibts, address receiver) returns (uint256 shares)
flashLoan
nonpayablefunction flashLoan(address _receiver, address _token, uint256 _amount, bytes _data) returns (bool)
initialize
nonpayablefunction initialize(address _ibt, uint256 _duration, address _initialAuthority)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner, uint256 minAssets) returns (uint256 assets)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256 assets)
redeemForIBT
nonpayablefunction redeemForIBT(uint256 shares, address receiver, address owner, uint256 minIbts) returns (uint256 ibts)
redeemForIBT
nonpayablefunction redeemForIBT(uint256 shares, address receiver, address owner) returns (uint256 ibts)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setRewardsProxy
nonpayablefunction setRewardsProxy(address _rewardsProxy)
storeRatesAtExpiry
nonpayablefunction storeRatesAtExpiry()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
unPause
nonpayablefunction unPause()
updateYield
nonpayablefunction updateYield(address _user) returns (uint256 updatedUserYieldInIBT)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner, uint256 maxShares) returns (uint256 shares)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256 shares)
withdrawIBT
nonpayablefunction withdrawIBT(uint256 ibts, address receiver, address owner, uint256 maxShares) returns (uint256 shares)
withdrawIBT
nonpayablefunction withdrawIBT(uint256 ibts, address receiver, address owner) returns (uint256 shares)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AuthorityUpdated
event AuthorityUpdated(address authority)
EIP712DomainChanged
event EIP712DomainChanged()
FeeClaimed
event FeeClaimed(address indexed user, uint256 indexed redeemedIbts, uint256 indexed receivedAssets)
Initialized
event Initialized(uint64 version)
Mint
event Mint(address indexed from, address indexed to, uint256 amount)
Paused
event Paused(address account)
RatesStoredAtExpiry
event RatesStoredAtExpiry(uint256 indexed ibtRate, uint256 indexed ptRate)
Redeem
event Redeem(address indexed from, address indexed to, uint256 amount)
RewardsProxyChange
event RewardsProxyChange(address indexed oldRewardsProxy, address indexed newRewardsProxy)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
YieldClaimed
event YieldClaimed(address indexed owner, address indexed receiver, uint256 indexed yieldInIBT)
YieldUpdated
event YieldUpdated(address indexed user, uint256 indexed yieldInIBT)
YTDeployed
event YTDeployed(address indexed yt)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressError
error AddressError()
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
BeaconNotSet
error BeaconNotSet()
ClaimRewardsFailed
error ClaimRewardsFailed()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
ERC2612InvalidSigner
error ERC2612InvalidSigner(address signer, address owner)
ERC5143SlippageProtectionFailed
error ERC5143SlippageProtectionFailed()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
FlashLoanCallbackFailed
error FlashLoanCallbackFailed()
FlashLoanExceedsMaxAmount
error FlashLoanExceedsMaxAmount()
InsufficientBalance
error InsufficientBalance()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidDecimals
error InvalidDecimals()
InvalidInitialization
error InvalidInitialization()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
NoRewardsProxy
error NoRewardsProxy()
NotInitializing
error NotInitializing()
PTExpired
error PTExpired()
PTNotExpired
error PTNotExpired()
RateError
error RateError()
RatesAtExpiryAlreadyStored
error RatesAtExpiryAlreadyStored()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnauthorizedCaller
error UnauthorizedCaller()
creation bytecode
0x60a060405234801562000010575f80fd5b5060405162005c5238038062005c5283398101604081905262000033916200012d565b6001600160a01b0381166200005b57604051630c59659760e31b815260040160405180910390fd5b6001600160a01b0381166080526200007262000079565b506200015c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000ca5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200012a5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f602082840312156200013e575f80fd5b81516001600160a01b038116811462000155575f80fd5b9392505050565b608051615aac620001a65f395f8181610c2101528181610e9b01528181611914015281816119a2015281816127b6015281816130520152818161340c01526139b60152615aac5ff3fe608060405234801562000010575f80fd5b506004361062000457575f3560e01c80637a9e5e4b1162000243578063b460af941162000143578063d9d98ce411620000c3578063ef8b30f7116200008f578063ef8b30f714620009d2578063efd98dc214620009e9578063f7b188a514620009f3578063f90d63db14620009fd578063fb9b95dd1462000a14575f80fd5b8063d9d98ce41462000976578063dd62ed3e146200098d578063e190febc14620009a4578063e4cca4b014620009bb575f80fd5b8063c350a1b5116200010f578063c350a1b51462000908578063c644fe94146200091f578063ce96cb771462000931578063d505accf1462000948578063d905777e146200095f575f80fd5b8063b460af9414620008b9578063ba08765214620008d0578063badfc07414620008e7578063bf7e214f14620008fe575f80fd5b80639f40a7b311620001cf578063a9059cbb116200019b578063a9059cbb1462000861578063abfa94461462000878578063ac68a7481462000882578063ad2e8c9b1462000899578063b2afd5a314620008a2575f80fd5b80639f40a7b3146200081f578063a13c91a31462000836578063a1c5b3e11462000840578063a318c1a4146200084a575f80fd5b806385326f45116200020f57806385326f4514620007c35780638a7c31fa14620007da5780638fb3603714620007f157806395d89b411462000815575f80fd5b80637a9e5e4b146200076c5780637ecebe0014620007835780638456cb59146200079a57806384b0196e14620007a4575f80fd5b80632e2d2984116200035b5780635c975abb11620002db57806368c1f7f611620002a757806368c1f7f6146200070c5780636e553f6514620007235780636f307dc3146200073a57806370a08231146200074c578063714d422b1462000763575f80fd5b80635c975abb14620006bd5780635cffe9de14620006c7578063613255ab14620006de57806365edd06414620006f5575f80fd5b8063402d267d1162000327578063402d267d1462000658578063443b6aed146200066f5780634cdad50614620006865780634f5867a4146200069d5780634f72ec2f14620006a6575f80fd5b80632e2d29841462000601578063313ce567146200061857806334b4ddc714620006375780633644e515146200064e575f80fd5b806318160ddd11620003e7578063204f83f911620003b3578063204f83f9146200059a57806320b9353b14620005a357806323b872dd14620005bc57806325a8d87d14620005d35780632a41280614620005ea575f80fd5b806318160ddd146200053b5780631869ebda14620005635780631dc7f521146200057a5780631f2b4f241462000591575f80fd5b806306fdde03116200042757806306fdde0314620004cc578063095ea7b314620004e55780630a28a477146200050d5780630e1b6d891462000524575f80fd5b806277e146146200045b57806301e1d114146200048557806304aa50ad146200048f57806305edf52a14620004b5575b5f80fd5b620004726200046c36600462004958565b62000a2b565b6040519081526020015b60405180910390f35b6200047262000b0c565b6003546001600160a01b03165b6040516001600160a01b0390911681526020016200047c565b62000472620004c63660046200499c565b62000bea565b620004d662000c67565b6040516200047c919062004a05565b620004fc620004f636600462004a19565b62000d15565b60405190151581526020016200047c565b620004726200051e3660046200499c565b62000d30565b620004726200053536600462004a46565b62000daf565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025462000472565b620004726200057436600462004a19565b62000ed8565b620004726200058b3660046200499c565b62000fce565b60045462000472565b60095462000472565b620005ba620005b436600462004a46565b6200104e565b005b620004fc620005cd36600462004a64565b620010b5565b62000472620005e43660046200499c565b620010dc565b62000472620005fb36600462004aa7565b62001158565b620004726200061236600462004958565b62001192565b5f54600160a01b900460ff1660405160ff90911681526020016200047c565b620004726200064836600462004a19565b62001273565b62000472620012f9565b620004726200066936600462004a46565b62001309565b620004726200068036600462004af1565b62001336565b62000472620006973660046200499c565b62001344565b60085462000472565b620005ba620006b736600462004b22565b62001362565b620004fc620013aa565b620004fc620006d836600462004b53565b620013c5565b62000472620006ef36600462004a46565b6200151e565b620004726200070636600462004aa7565b620015a9565b620004726200071d3660046200499c565b620015db565b620004726200073436600462004af1565b620015f2565b6002546001600160a01b03166200049c565b620004726200075d36600462004a46565b62001600565b60075462000472565b620005ba6200077d36600462004a46565b62001631565b620004726200079436600462004a46565b620016c3565b620005ba620016cf565b620007ae620016e6565b6040516200047c979695949392919062004bf3565b62000472620007d436600462004aa7565b62001797565b62000472620007eb3660046200499c565b620017a5565b620007fb620017bd565b6040516001600160e01b031990911681526020016200047c565b620004d6620017f5565b620004726200083036600462004aa7565b62001836565b620005ba62001844565b62000472620018e7565b620004726200085b36600462004aa7565b620018f4565b620004fc6200087236600462004a19565b62001902565b6200047262001911565b62000472620008933660046200499c565b62001995565b600a5462000472565b62000472620008b336600462004958565b62001b2b565b62000472620008ca36600462004958565b62001bd6565b62000472620008e136600462004958565b62001c8e565b62000472620008f836600462004958565b62001da1565b6200049c62001dd3565b620005ba6200091936600462004c8d565b62001def565b6001546001600160a01b03166200049c565b620004726200094236600462004a46565b620025de565b620005ba6200095936600462004cd5565b62002603565b620004726200097036600462004a46565b62002763565b620004726200098736600462004a19565b6200277e565b620004726200099e36600462004b22565b620027db565b620005ba620009b536600462004dba565b62002824565b62000472620009cc36600462004aa7565b6200294e565b62000472620009e33660046200499c565b6200295c565b62000472620029db565b620005ba620029e8565b6200047262000a0e36600462004a46565b620029fd565b6200047262000a2536600462004a46565b62002b8b565b5f62000a3662002bb1565b60015460405163266d6a8360e11b8152600481018690526001600160a01b039091169062000ab2908290634cdad50690602401602060405180830381865afa15801562000a85573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000aab919062004e3c565b8462002bea565b5f8062000abf5f62002c45565b9150915062000ad2878787858562002c73565b935062000aea6001600160a01b038416878962002d9c565b50505062000b0560015f8051602062005a5783398151915255565b9392505050565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316908190634cdad5069082906370a0823190602401602060405180830381865afa15801562000b5d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000b83919062004e3c565b6040518263ffffffff1660e01b815260040162000ba291815260200190565b602060405180830381865afa15801562000bbe573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000be4919062004e3c565b91505090565b5f600954421062000c0e57604051632de15cad60e11b815260040160405180910390fd5b62000c1862002e11565b5f62000c4683307f000000000000000000000000000000000000000000000000000000000000000062002e3a565b905062000c5e62000c58828562004e68565b62002f54565b9150505b919050565b60605f5f80516020620059f78339815191525b905080600301805462000c8d9062004e7e565b80601f016020809104026020016040519081016040528092919081815260200182805462000cbb9062004e7e565b801562000d0a5780601f1062000ce05761010080835404028352916020019162000d0a565b820191905f5260205f20905b81548152906001019060200180831162000cec57829003601f168201915b505050505091505090565b5f3362000d2481858562002f95565b60019150505b92915050565b600154604051630a28a47760e01b8152600481018390525f9182916001600160a01b0390911690630a28a47790602401602060405180830381865afa15801562000d7c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000da2919062004e3c565b905062000c5e81620017a5565b6001600160a01b0381165f908152600c6020526040812054801562000ed2575f8062000ddb5f62002c45565b6001600160a01b038088165f818152600d6020908152604080832054600e9092529182902054600354925163029b3d7b60e31b81529698509496509473622bccf6b8a472a89be0ed4dbee6c02600ce37f3946314d9ebd89462000e50949391928b928a928a928d929091169060040162004eb2565b602060405180830381865af415801562000e6c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e92919062004e3c565b945062000ec0857f000000000000000000000000000000000000000000000000000000000000000062002fa4565b62000ecc908662004e68565b94505050505b50919050565b5f8062000ee46200301f565b60405190915081906001600160a01b0386169033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd7905f90a4801562000fa557600154604051635d043b2960e11b8152600481018390526001600160a01b0386811660248301523060448301529091169063ba087652906064016020604051808303815f875af115801562000f7c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000fa2919062004e3c565b91505b8183111562000fc757604051630f033da760e41b815260040160405180910390fd5b5092915050565b6001545f906001600160a01b0316634cdad50662000fed848462003090565b6040518263ffffffff1660e01b81526004016200100c91815260200190565b602060405180830381865afa15801562001028573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000d2a919062004e3c565b6200105c335b5f36620030ec565b5f80546040516001600160a01b03808516939216917ffa75d5930102c099ee40e7b722369d2c0176a687d495036838777f8130a35e5f91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f33620010c4858285620031fd565b620010d185858562003261565b506001949350505050565b60015460405163ef8b30f760e01b8152600481018390525f9162000d2a916001600160a01b039091169063ef8b30f790602401602060405180830381865afa1580156200112b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001151919062004e3c565b5f620032c4565b5f6200116685858562001da1565b9050818110156200118a57604051630f033da760e41b815260040160405180910390fd5b949350505050565b5f6200119d62002bb1565b6001546002546001600160a01b039182169116620011be813330896200330a565b620011d46001600160a01b038216838862003345565b604051636e553f6560e01b8152600481018790523060248201525f906001600160a01b03841690636e553f65906044016020604051808303815f875af115801562001221573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001247919062004e3c565b905062001256818787620033d3565b935050505062000b0560015f8051602062005a5783398151915255565b5f6200127e6200301f565b905080821115620012a257604051630f033da760e41b815260040160405180910390fd5b60405181906001600160a01b0385169033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd7905f90a4801562000d2a5760015462000d2a906001600160a01b0316848362002d9c565b5f6200130462003528565b905090565b5f62001314620013aa565b806200132257506009544210155b6200132f575f1962000d2a565b5f92915050565b5f62000b0583838462001da1565b6001545f906001600160a01b0316634cdad50662000fed84620015db565b6003546001600160a01b031633146200138e57604051635c427cd960e01b815260040160405180910390fd5b6200139982620029fd565b50620013a581620029fd565b505050565b5f620013045f8051602062005a378339815191525460ff1690565b5f620013d062002e11565b620013db856200151e565b841115620013fc576040516310a5983560e11b815260040160405180910390fd5b5f6200140986866200277e565b9050620014168162003533565b6001546001600160a01b03166200142f81898862002d9c565b6040516323e30c8b60e01b81527f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9906001600160a01b038a16906323e30c8b90620014899033908c908c9089908d908d9060040162004f17565b6020604051808303815f875af1158015620014a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620014cc919062004e3c565b14620014eb57604051637d65916160e01b815260040160405180910390fd5b620015108830620014fd858a62004f5f565b6001600160a01b0385169291906200330a565b506001979650505050505050565b6001545f906001600160a01b0390811690831681146200154057505f92915050565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801562001583573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c5e919062004e3c565b5f620015b785858562000a2b565b9050818111156200118a57604051630f033da760e41b815260040160405180910390fd5b5f620015e662002e11565b62000d2a825f62003090565b5f62000b0583838462001192565b5f805f80516020620059f78339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b336200163c62001dd3565b6001600160a01b0316816001600160a01b0316146200167d5760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03620016b4576040516361798f2f60e11b81526001600160a01b038316600482015260240162001674565b620016bf826200355c565b5050565b5f62000d2a82620035bd565b620016da3362001054565b620016e4620035e6565b565b5f60608082808083815f8051602062005a1783398151915280549091501580156200171357506001810154155b620017595760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640162001674565b620017636200364b565b6200176d6200368c565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f6200116685858562001b2b565b5f620017b062002e11565b62000d2a826001620032c4565b5f80516020620059d783398151915280545f9190600160a01b900460ff16620017e7575f62000be4565b638fb3603760e01b91505090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020620059f78339815191529162000c8d9062004e7e565b5f6200116685858562001c8e565b600954421015620018685760405163790ab91960e11b815260040160405180910390fd5b6200187262002e11565b6001600b540362001896576040516333072e9d60e11b815260040160405180910390fd5b6001600b555f80620018a881620036a4565b600582905560068190556040519193509150829082907f86f6956dfa46dcc6315cbb9f8917848f94efdedd075e2500cb1edfcf91029172905f90a35050565b5f8062000fc75f62002c45565b5f620015b785858562001bd6565b5f3362000d2481858562003261565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abfa94466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200196f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001304919062004e3c565b5f620019a062002e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312fde4b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a23919062004f75565b6001600160a01b0316336001600160a01b03161462001a5557604051635c427cd960e01b815260040160405180910390fd5b5f600781905560405182919033907f534114bde8a4f5487c6eb9d267c214944566cf13de30333c7a2abed6857634cf908390a4600154600754604051635d043b2960e11b815260048101919091523360248201523060448201526001600160a01b039091169063ba087652906064016020604051808303815f875af115801562001ae1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b07919062004e3c565b90508082111562000c6257604051630f033da760e41b815260040160405180910390fd5b5f62001b3662002bb1565b62001b4284836200380e565b62001b4e845f62003090565b9050826001600160a01b0316826001600160a01b03167fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98660405162001b9691815260200190565b60405180910390a3801562001bbe5760015462001bbe906001600160a01b0316848362002d9c565b62000b0560015f8051602062005a5783398151915255565b5f62001be162002bb1565b62001bed848362002bea565b5f8062001bfa5f62002c45565b600154604051632d182be560e21b8152600481018a90526001600160a01b0389811660248301523060448301529395509193505f92169063b460af94906064016020604051808303815f875af115801562001c57573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c7d919062004e3c565b905062001256818787868662002c73565b5f62001c9962002bb1565b62001ca584836200380e565b826001600160a01b0316826001600160a01b03167fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98660405162001ceb91815260200190565b60405180910390a36001546001600160a01b031663ba08765262001d10865f62003090565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b03861660248201523060448201526064016020604051808303815f875af115801562001d61573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d87919062004e3c565b905062000b0560015f8051602062005a5783398151915255565b5f62001dac62002bb1565b60015462001dc6906001600160a01b03163330876200330a565b62001d87848484620033d3565b5f80516020620059d7833981519152546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801562001e355750825b90505f8267ffffffffffffffff16600114801562001e525750303b155b90508115801562001e61575080155b1562001e805760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562001eab57845460ff60401b1916600160401b1785555b6001600160a01b038816158062001ec957506001600160a01b038616155b1562001ee857604051630c59659760e31b815260040160405180910390fd5b876001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f25573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001f4b919062004e3c565b5f0362001f6b5760405163512a0ea160e11b815260040160405180910390fd5b600a87905562001f7c428862004f5f565b600981905550876001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001fbf573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001fe5919062004f75565b60025f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f886001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801562002047573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002070919081019062004f93565b90505f60025f9054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015620020c3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620020ec919081019062004f93565b90505f73a7b7ef3ed22a8ec2378588c4c7029572d1c7eff263bc1122cf84846009546040518463ffffffff1660e01b81526004016200212e9392919062005005565b5f60405180830381865af415801562002149573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002172919081019062004f93565b9050620022028173a7b7ef3ed22a8ec2378588c4c7029572d1c7eff263b21c64fa86866009546040518463ffffffff1660e01b8152600401620021b89392919062005005565b5f60405180830381865af4158015620021d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620021fc919081019062004f93565b620038fc565b6200220d8162003912565b6200221762003944565b6200222162003958565b6200222c896200396c565b60025460405163e6dac70f60e01b81526001600160a01b0390911660048201525f9073622bccf6b8a472a89be0ed4dbee6c02600ce37f39063e6dac70f90602401602060405180830381865af415801562002289573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620022af91906200503e565b90505f8c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200231591906200503e565b905060068260ff1610806200232f57508060ff168260ff16115b806200233e575060128160ff16115b156200235d57604051630692acc560e51b815260040160405180910390fd5b5f805461ffff60a01b1916600160a81b60ff8581169190910260ff60a01b191691909117600160a01b91841691909102179055600180546001600160a01b0319166001600160a01b038f16179055620023b881600a62005155565b600481905550620024408260ff168e6001600160a01b0316634cdad5066004546040518263ffffffff1660e01b8152600401620023f791815260200190565b602060405180830381865afa15801562002413573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002439919062004e3c565b9062003981565b6006556b033b2e3c9fd0803ce8000000600555600954604051631781fdfd60e21b8152620025639173a7b7ef3ed22a8ec2378588c4c7029572d1c7eff291635e07f7f49162002496918a918a9160040162005005565b5f60405180830381865af4158015620024b1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620024da919081019062004f93565b600954604051637b057c8760e11b815273a7b7ef3ed22a8ec2378588c4c7029572d1c7eff29163f60af90e9162002519918b918b919060040162005005565b5f60405180830381865af415801562002534573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200255d919081019062004f93565b620039b2565b60035f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050508315620025d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f620025e9620013aa565b6200132f57620025fd6200058b8362003b28565b62000d2a565b83421115620026295760405163313c898160e11b81526004810185905260240162001674565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888620026948c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f620026f08262003bcf565b90505f620027018287878762003bfe565b9050896001600160a01b0316816001600160a01b0316146200274a576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440162001674565b620027578a8a8a62002f95565b50505050505050505050565b5f6200276e620013aa565b6200132f57620025fd8262003b28565b6001545f906001600160a01b03848116911614620027af57604051630c59659760e31b815260040160405180910390fd5b62000b05827f000000000000000000000000000000000000000000000000000000000000000062003c2e565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6200282f3362001054565b6200283962002e11565b5f546001600160a01b03168015806200285a57506001600160a01b0381163b155b156200287957604051639bc021a960e01b815260040160405180910390fd5b5f806001600160a01b031663e190febc846040516024016200289c919062004a05565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505090505f826001600160a01b031682604051620028e6919062005165565b5f60405180830381855af49150503d805f811462002920576040519150601f19603f3d011682016040523d82523d5f602084013e62002925565b606091505b50509050806200294857604051631bc7e5c360e21b815260040160405180910390fd5b50505050565b5f6200116685858562001192565b60015460405163ef8b30f760e01b8152600481018390525f9182916001600160a01b039091169063ef8b30f790602401602060405180830381865afa158015620029a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620029ce919062004e3c565b905062000c5e8162000bea565b5f8062000b055f62002c45565b620029f33362001054565b620016e462003c70565b5f62002a0862002e11565b5f8062002a1462003cb9565b6001600160a01b0386165f908152600c6020526040902054919350915080821462002a54576001600160a01b0385165f908152600c602052604090208290555b6001600160a01b0385165f908152600d602052604090205483811462002a8f576001600160a01b0386165f908152600d602052604090208490555b811562002b82576001600160a01b038087165f818152600e60205260409081902054600354915163029b3d7b60e31b815273622bccf6b8a472a89be0ed4dbee6c02600ce37f3946314d9ebd89462002afa9490939289928b928a928e92919091169060040162004eb2565b602060405180830381865af415801562002b16573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002b3c919062004e3c565b6001600160a01b0387165f818152600e60205260408082208490555192975087927f18cb9436df0c2ab8f3a0284742076c6ddf8a478776316b4b0d008d79372354909190a35b50505050919050565b5f62002b96620013aa565b6200132f57620025fd62002baa8362003b28565b5f62003090565b5f8051602062005a5783398151915280546001190162002be457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600954421062002c0c57600b5462002c065762002c0662001844565b62002c19565b62002c1781620029fd565b505b62002c2481620025de565b821115620016bf57604051631e9acf1760e31b815260040160405180910390fd5b5f805f600b540362002c665762002c5c83620036a4565b9092509050915091565b5050600554600654915091565b5f825f0362002c955760405163512a0ea160e11b815260040160405180910390fd5b62002ca4868385600162003d19565b90506001600160a01b038416331462002cc45762002cc4843383620031fd565b60095442101562002d39576003546040516377213c1960e11b81526001600160a01b038681166004830152336024830152604482018490529091169063ee427832906064015f604051808303815f87803b15801562002d21575f80fd5b505af115801562002d34573d5f803e3d5ffd5b505050505b62002d45848262003d71565b846001600160a01b0316846001600160a01b03167fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98360405162002d8b91815260200190565b60405180910390a395945050505050565b6040516001600160a01b03838116602483015260448201839052620013a591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505062003da9565b60015f8051602062005a5783398151915255565b62002e1b620013aa565b15620016e45760405163d93c066560e01b815260040160405180910390fd5b6040516311bbd8b360e11b81526001600160a01b0383811660048301523360248301525f916200118a91841690632377b16690604401602060405180830381865afa15801562002e8c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002eb2919062004e3c565b62002ec690670de0b6b3a764000062004e68565b670de0b6b3a7640000600162002f4b866001600160a01b031663abfa94466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f12573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002f38919062004e3c565b8990670de0b6b3a7640000600162003d19565b92919062003d19565b5f805f62002f63600162002c45565b91509150815f0362002f885760405163512a0ea160e11b815260040160405180910390fd5b6200118a84828462003e11565b620013a5838383600162003ed6565b5f62000b05826001600160a01b0316633819e5d36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002fe6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200300c919062004e3c565b8490670de0b6b3a7640000600162003d19565b5f6200302b33620029fd565b9050805f036200303a57505f90565b335f908152600e6020526040812081905562003077827f000000000000000000000000000000000000000000000000000000000000000062002fa4565b9050620030848162003533565b62000be4818362004e68565b5f805f6200309e5f62002c45565b91509150805f03620030c35760405163512a0ea160e11b815260040160405180910390fd5b620030e3828286620030d6575f620030d9565b60015b8892919062003d19565b95945050505050565b5f80516020620059d78339815191525f806200312d6200310b62001dd3565b87306200311c60045f8a8c62005182565b6200312791620051ab565b62003fc1565b9150915081620031f55763ffffffff811615620031d157825460ff60a01b1916600160a01b1783556200315f62001dd3565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016200319093929190620051dc565b5f604051808303815f87803b158015620031a8575f80fd5b505af1158015620031bb573d5f803e3d5ffd5b5050845460ff60a01b1916855550620031f59050565b60405162d1953b60e31b81526001600160a01b038716600482015260240162001674565b505050505050565b5f6200320a8484620027db565b90505f1981146200294857818110156200325157604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640162001674565b6200294884848484035f62003ed6565b6001600160a01b0383166200328c57604051634b637e8f60e11b81525f600482015260240162001674565b6001600160a01b038216620032b75760405163ec442f0560e01b81525f600482015260240162001674565b620013a5838383620040d5565b5f805f620032d25f62002c45565b91509150815f03620032f75760405163512a0ea160e11b815260040160405180910390fd5b620030e3818386620030d6575f620030d9565b6040516001600160a01b038481166024830152838116604483015260648201839052620029489186918216906323b872dd9060840162002dca565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801562003393573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620033b9919062004e3c565b9050620029488484620033cd858562004f5f565b620040ec565b5f6009544210620033f757604051632de15cad60e11b815260040160405180910390fd5b6200340282620029fd565b505f6200343185307f000000000000000000000000000000000000000000000000000000000000000062002e3a565b90506200343e8162003533565b6200344e62001151828762004e68565b9150815f03620034715760405163512a0ea160e11b815260040160405180910390fd5b6200347d848362004182565b6040518281526001600160a01b0385169033907fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f89060200160405180910390a36003546040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052909116906340c10f19906044015f604051808303815f87803b15801562003509575f80fd5b505af11580156200351c573d5f803e3d5ffd5b50505050509392505050565b5f62001304620041ba565b8060075462003543919062004f5f565b6007556008546200355690829062004f5f565b60085550565b5f80516020620059d783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0062001612565b620035f062002e11565b5f8051602062005a37833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f8051602062005a178339815191529162000c8d9062004e7e565b60605f5f8051602062005a1783398151915262000c7a565b6001545f80546004805460405163266d6a8360e11b815291820152919283926001600160a01b0390911691620036f191600160a81b90910460ff16908390634cdad50690602401620023f7565b9150806001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003730573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003756919062004e3c565b158015620037c55750806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200379c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620037c2919062004e3c565b15155b15620037cf575f91505b6006548210620037e25760055462003806565b620038068260065486620037f7575f620037fa565b60015b60055492919062003d19565b925050915091565b6001600160a01b03811633146200382c576200382c813384620031fd565b620038378162003b28565b8211156200385857604051631e9acf1760e31b815260040160405180910390fd5b60095442106200387a57600b5462003874576200387462001844565b620038f0565b6200388581620029fd565b506003546040516377213c1960e11b81526001600160a01b038381166004830152336024830152604482018590529091169063ee427832906064015f604051808303815f87803b158015620038d8575f80fd5b505af1158015620038eb573d5f803e3d5ffd5b505050505b620016bf818362003d71565b6200390662004231565b620016bf82826200427b565b6200391c62004231565b6200394181604051806040016040528060018152602001603160f81b815250620042d2565b50565b6200394e62004231565b620016e462004338565b6200396262004231565b620016e46200435b565b6200397662004231565b620039418162004365565b5f806200399083601b62004e68565b6200399d90600a62005202565b90508084029150838183041462000fc7575f80fd5b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb2004ce6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003a11573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003a37919062004f75565b90506001600160a01b03811662003a615760405163773aae1f60e11b815260040160405180910390fd5b805f6001600160a01b031663077f224a86863060405160240162003a88939291906200520f565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505060405162003ac39062004935565b62003ad092919062005250565b604051809103905ff08015801562003aea573d5f803e3d5ffd5b506040519092506001600160a01b038316907f10aa3cadb8a18de745ab06d0fba238e60656c418d78284b27ab6ea75b7b789e4905f90a25092915050565b5f600954421062003b3e5762000d2a8262001600565b5f62003b4a8362001600565b6003546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003b98573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003bbe919062004e3c565b905080821162000b0557816200118a565b5f62000d2a62003bde62003528565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f8062003c10888888886200437a565b92509250925062003c22828262004447565b50909695505050505050565b5f62000b05826001600160a01b0316632f2f3d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002fe6573d5f803e3d5ffd5b62003c7a62004511565b5f8051602062005a37833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336200362d565b5f805f600954905080421062003cdb57600b5462003cdb5762003cdb62001844565b62003ce65f62002c45565b90935091504281111562003d1457600654821462003d045760068290555b600554831462003d145760058390555b509091565b5f8062003d2886868662003e11565b905062003d358362004539565b801562003d5457505f848062003d4f5762003d4f62005275565b868809115b15620030e35762003d6760018262004f5f565b9695505050505050565b6001600160a01b03821662003d9c57604051634b637e8f60e11b81525f600482015260240162001674565b620016bf825f83620040d5565b5f62003dbf6001600160a01b038416836200456a565b905080515f1415801562003de657508080602001905181019062003de4919062005299565b155b15620013a557604051635274afe760e01b81526001600160a01b038416600482015260240162001674565b5f838302815f1985870982811083820303915050805f0362003e4a5783828162003e3f5762003e3f62005275565b049250505062000b05565b80841162003e6b5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80516020620059f78339815191526001600160a01b03851662003f105760405163e602df0560e01b81525f600482015260240162001674565b6001600160a01b03841662003f3b57604051634a1406b160e11b81525f600482015260240162001674565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811562003fba57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405162003fb191815260200190565b60405180910390a35b5050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525162004031919062005165565b5f60405180830381855afa9150503d805f81146200406b576040519150601f19603f3d011682016040523d82523d5f602084013e62004070565b606091505b50915091508115620040ca576040815110620040a757808060200190518101906200409c9190620052b5565b9094509250620040ca565b6020815110620040ca5780806020019051810190620040c7919062005299565b93505b505094509492505050565b620040df62002e11565b620013a583838362004579565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526200413f8482620046bc565b62002948576040516001600160a01b0384811660248301525f60448301526200417691869182169063095ea7b39060640162002dca565b62002948848262003da9565b6001600160a01b038216620041ad5760405163ec442f0560e01b81525f600482015260240162001674565b620016bf5f8383620040d5565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620041e662004762565b620041f0620047cf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16620016e457604051631afcd79f60e31b815260040160405180910390fd5b6200428562004231565b5f80516020620059f78339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03620042c1848262005334565b506004810162002948838262005334565b620042dc62004231565b5f8051602062005a178339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10262004318848262005334565b506003810162004329838262005334565b505f8082556001909101555050565b6200434262004231565b5f8051602062005a37833981519152805460ff19169055565b62002dfd62004231565b6200436f62004231565b62003941816200355c565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115620043b557505f915060039050826200443d565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562004407573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166200443457505f9250600191508290506200443d565b92505f91508190505b9450945094915050565b5f8260038111156200445d576200445d620053fd565b0362004467575050565b60018260038111156200447e576200447e620053fd565b036200449d5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115620044b457620044b4620053fd565b03620044d75760405163fce698f760e01b81526004810182905260240162001674565b6003826003811115620044ee57620044ee620053fd565b03620016bf576040516335e2f38360e21b81526004810182905260240162001674565b6200451b620013aa565b620016e457604051638dfc202b60e01b815260040160405180910390fd5b5f6002826003811115620045515762004551620053fd565b6200455d919062005411565b60ff166001149050919050565b606062000b0583835f62004816565b5f80516020620059f78339815191526001600160a01b038416620045b85781816002015f828254620045ac919062004f5f565b909155506200462a9050565b6001600160a01b0384165f90815260208290526040902054828110156200460c5760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640162001674565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166200464a57600281018054839003905562004668565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620046ae91815260200190565b60405180910390a350505050565b5f805f846001600160a01b031684604051620046d9919062005165565b5f604051808303815f865af19150503d805f811462004714576040519150601f19603f3d011682016040523d82523d5f602084013e62004719565b606091505b5091509150818015620047475750805115806200474757508080602001905181019062004747919062005299565b8015620030e35750505050506001600160a01b03163b151590565b5f5f8051602062005a17833981519152816200477d6200364b565b8051909150156200479657805160209091012092915050565b81548015620047a6579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f8051602062005a1783398151915281620047ea6200368c565b8051909150156200480357805160209091012092915050565b60018201548015620047a6579392505050565b6060814710156200483d5760405163cd78605960e01b815230600482015260240162001674565b5f80856001600160a01b031684866040516200485a919062005165565b5f6040518083038185875af1925050503d805f811462004896576040519150601f19603f3d011682016040523d82523d5f602084013e6200489b565b606091505b509150915062003d67868383606082620048c057620048ba826200490b565b62000b05565b8151158015620048d857506001600160a01b0384163b155b156200490357604051639996b31560e01b81526001600160a01b038516600482015260240162001674565b508062000b05565b8051156200491c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b610597806200544083390190565b6001600160a01b038116811462003941575f80fd5b5f805f606084860312156200496b575f80fd5b8335925060208401356200497f8162004943565b91506040840135620049918162004943565b809150509250925092565b5f60208284031215620049ad575f80fd5b5035919050565b5f5b83811015620049d0578181015183820152602001620049b6565b50505f910152565b5f8151808452620049f1816020860160208601620049b4565b601f01601f19169290920160200192915050565b602081525f62000b056020830184620049d8565b5f806040838503121562004a2b575f80fd5b823562004a388162004943565b946020939093013593505050565b5f6020828403121562004a57575f80fd5b813562000b058162004943565b5f805f6060848603121562004a77575f80fd5b833562004a848162004943565b9250602084013562004a968162004943565b929592945050506040919091013590565b5f805f806080858703121562004abb575f80fd5b84359350602085013562004acf8162004943565b9250604085013562004ae18162004943565b9396929550929360600135925050565b5f806040838503121562004b03575f80fd5b82359150602083013562004b178162004943565b809150509250929050565b5f806040838503121562004b34575f80fd5b823562004b418162004943565b9150602083013562004b178162004943565b5f805f805f6080868803121562004b68575f80fd5b853562004b758162004943565b9450602086013562004b878162004943565b935060408601359250606086013567ffffffffffffffff8082111562004bab575f80fd5b818801915088601f83011262004bbf575f80fd5b81358181111562004bce575f80fd5b89602082850101111562004be0575f80fd5b9699959850939650602001949392505050565b60ff60f81b881681525f602060e08184015262004c1460e084018a620049d8565b838103604085015262004c28818a620049d8565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b8181101562004c7b5783518352928401929184019160010162004c5d565b50909c9b505050505050505050505050565b5f805f6060848603121562004ca0575f80fd5b833562004cad8162004943565b9250602084013591506040840135620049918162004943565b60ff8116811462003941575f80fd5b5f805f805f805f60e0888a03121562004cec575f80fd5b873562004cf98162004943565b9650602088013562004d0b8162004943565b95506040880135945060608801359350608088013562004d2b8162004cc6565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562004d885762004d8862004d48565b604052919050565b5f67ffffffffffffffff82111562004dac5762004dac62004d48565b50601f01601f191660200190565b5f6020828403121562004dcb575f80fd5b813567ffffffffffffffff81111562004de2575f80fd5b8201601f8101841362004df3575f80fd5b803562004e0a62004e048262004d90565b62004d5c565b81815285602083850101111562004e1f575f80fd5b816020840160208301375f91810160200191909152949350505050565b5f6020828403121562004e4d575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111562000d2a5762000d2a62004e54565b600181811c9082168062004e9357607f821691505b60208210810362000ed257634e487b7160e01b5f52602260045260245ffd5b6001600160a01b039788168152602081019690965260408601949094526060850192909252608084015260a083015290911660c082015260e00190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03878116825286166020820152604081018590526060810184905260a0608082018190525f9062004f53908301848662004eef565b98975050505050505050565b8082018082111562000d2a5762000d2a62004e54565b5f6020828403121562004f86575f80fd5b815162000b058162004943565b5f6020828403121562004fa4575f80fd5b815167ffffffffffffffff81111562004fbb575f80fd5b8201601f8101841362004fcc575f80fd5b805162004fdd62004e048262004d90565b81815285602083850101111562004ff2575f80fd5b620030e3826020830160208601620049b4565b606081525f620050196060830186620049d8565b82810360208401526200502d8186620049d8565b915050826040830152949350505050565b5f602082840312156200504f575f80fd5b815162000b058162004cc6565b600181815b808511156200509c57815f190482111562005080576200508062004e54565b808516156200508e57918102915b93841c939080029062005061565b509250929050565b5f82620050b45750600162000d2a565b81620050c257505f62000d2a565b8160018114620050db5760028114620050e65762005106565b600191505062000d2a565b60ff841115620050fa57620050fa62004e54565b50506001821b62000d2a565b5060208310610133831016604e8410600b84101617156200512b575081810a62000d2a565b6200513783836200505c565b805f19048211156200514d576200514d62004e54565b029392505050565b5f62000b0560ff841683620050a4565b5f825162005178818460208701620049b4565b9190910192915050565b5f808585111562005191575f80fd5b838611156200519e575f80fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015620051d45780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190525f90620030e3908301848662004eef565b5f62000b058383620050a4565b606081525f620052236060830186620049d8565b8281036020840152620052378186620049d8565b91505060018060a01b0383166040830152949350505050565b6001600160a01b03831681526040602082018190525f906200118a90830184620049d8565b634e487b7160e01b5f52601260045260245ffd5b8051801515811462000c62575f80fd5b5f60208284031215620052aa575f80fd5b62000b058262005289565b5f8060408385031215620052c7575f80fd5b620052d28362005289565b9150602083015163ffffffff8116811462004b17575f80fd5b601f821115620013a5575f81815260208120601f850160051c81016020861015620053135750805b601f850160051c820191505b81811015620031f5578281556001016200531f565b815167ffffffffffffffff81111562005351576200535162004d48565b620053698162005362845462004e7e565b84620052eb565b602080601f8311600181146200539f575f8415620053875750858301515b5f19600386901b1c1916600185901b178555620031f5565b5f85815260208120601f198616915b82811015620053cf57888601518255948401946001909101908401620053ae565b5085821015620053ed57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffd5b5f60ff8316806200543057634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fe60a060405260405161059738038061059783398101604081905261002291610376565b61002c828261003e565b506001600160a01b0316608052610465565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e49190610431565b82610209565b505050565b6100f761027c565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d29190610431565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f80846001600160a01b031684604051610225919061044a565b5f60405180830381855af49150503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50909250905061027385838361029d565b95945050505050565b341561029b5760405163b398979f60e01b815260040160405180910390fd5b565b6060826102b2576102ad826102fc565b6102f5565b81511580156102c957506001600160a01b0384163b155b156102f257604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b50805b9392505050565b80511561030c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461033b575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561036e578181015183820152602001610356565b50505f910152565b5f8060408385031215610387575f80fd5b61039083610325565b60208401519092506001600160401b03808211156103ac575f80fd5b818501915085601f8301126103bf575f80fd5b8151818111156103d1576103d1610340565b604051601f8201601f19908116603f011681019083821181831017156103f9576103f9610340565b81604052828152886020848701011115610411575f80fd5b610422836020830160208801610354565b80955050505050509250929050565b5f60208284031215610441575f80fd5b6102f582610325565b5f825161045b818460208701610354565b9190910192915050565b60805161011b61047c5f395f601d015261011b5ff3fe6080604052600a600c565b005b60186014601a565b609d565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156076573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906098919060ba565b905090565b365f80375f80365f845af43d5f803e80801560b6573d5ff35b3d5ffd5b5f6020828403121560c9575f80fd5b81516001600160a01b038116811460de575f80fd5b939250505056fea2646970667358221220ceec42cef7cf2d35c9c3550c2703e337fd84d209c846bfddb86774a2412147b964736f6c63430008140033f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212209d942f3f6157f2888b34c7368906190aa76cbd8a0eb16b79f2653bf965f8e16464736f6c63430008140033000000000000000000000000786da12e9836a9ff9b7d92e8bac1c849e2ace378