107 txs
290 calls
constructor
constructor(address initialOwner_, string name_, string symbol_, address asset_, address tokenPrices_)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
areDepositsPaused
viewfunction areDepositsPaused() view returns (bool)
areWithdrawalsPaused
viewfunction areWithdrawalsPaused() view returns (bool)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
depositFeeBps
viewfunction depositFeeBps() view returns (uint256)
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)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
manager
viewfunction manager() view returns (address)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256 maxAssets)
maxMint
viewfunction maxMint(address) view returns (uint256 maxShares)
maxRedeem
viewfunction maxRedeem(address sharesOwner) view returns (uint256 maxShares)
maxTotalSupply
viewfunction maxTotalSupply() view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address sharesOwner) view returns (uint256 maxAssets)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address sharesOwner) view returns (uint256)
owner
viewfunction owner() view returns (address)
performanceFeeBps
viewfunction performanceFeeBps() view returns (uint48)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256 shares)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256 assets)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256 assets)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256 shares)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenPrices
viewfunction tokenPrices() view returns (address)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
withdrawalFeeBps
viewfunction withdrawalFeeBps() view returns (uint256)
acceptOwner
nonpayablefunction acceptOwner()
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
logPerformanceFeesSet
nonpayablefunction logPerformanceFeesSet(uint256 performanceFees)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256)
permit
nonpayablefunction permit(address sharesOwner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address sharesOwner) returns (uint256)
revokeOwnership
nonpayablefunction revokeOwnership()
seedDeposit
nonpayablefunction seedDeposit(uint256 assets, address receiver, uint256 maxTotalSupply_) returns (uint256 shares)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setManager
nonpayablefunction setManager(address newManager)
setMaxTotalSupply
nonpayablefunction setMaxTotalSupply(uint256 maxTotalSupply_)
setTokenPrices
nonpayablefunction setTokenPrices(address _tokenPrices)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address sharesOwner) returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
EIP712DomainChanged
event EIP712DomainChanged()
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
FeeBpsSet
event FeeBpsSet(uint8 feeType, uint256 feeBps)
InKindFees
event InKindFees(uint8 feeType, uint256 feeBps, uint256 feeAmount)
ManagerSet
event ManagerSet(address indexed manager)
MaxTotalSupplySet
event MaxTotalSupplySet(uint256 maxTotalSupply)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
PerformanceFeeSet
event PerformanceFeeSet(uint256 fee)
TokenPricesSet
event TokenPricesSet(address indexed _tokenPrices)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
errors
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
ERC2612InvalidSigner
error ERC2612InvalidSigner(address signer, address tokensOwner)
ERC4626ExceededMaxDeposit
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
ERC4626ExceededMaxMint
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
ERC4626ExceededMaxRedeem
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
ERC4626ExceededMaxWithdraw
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidParam
error InvalidParam()
InvalidShortString
error InvalidShortString()
InvalidToken
error InvalidToken(address token)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101a06040523480156200001257600080fd5b506040516200422e3803806200422e833981016040819052620000359162000411565b848484848383604051806040016040528060018152602001603160f81b815250858581600390816200006891906200054c565b5060046200007782826200054c565b50620000899150839050600562000236565b610120526200009a81600662000236565b61014052815160208084019190912060e052815190820120610100524660a0526200012860e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052600160075562000141816200026f565b506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a9919062000618565b9050601260ff82161115620001e15760405163961c9a4f60e01b81526001600160a01b03831660048201526024015b60405180910390fd5b620001ee8160126200065a565b620001fb90600a62000773565b61018052506001600160a01b0390811661016052600d80546001600160a01b031916959091169490941790935550620007de95505050505050565b600060208351101562000256576200024e83620002e8565b905062000269565b816200026384826200054c565b5060ff90505b92915050565b6008546001600160a01b0316156200029a57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116620002c657604051634726455360e11b815260006004820152602401620001d8565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600080829050601f8151111562000316578260405163305a27a960e01b8152600401620001d8919062000784565b80516200032382620007b9565b179392505050565b6001600160a01b03811681146200034157600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003775781810151838201526020016200035d565b50506000910152565b600082601f8301126200039257600080fd5b81516001600160401b0380821115620003af57620003af62000344565b604051601f8301601f19908116603f01168101908282118183101715620003da57620003da62000344565b81604052838152866020858801011115620003f457600080fd5b620004078460208301602089016200035a565b9695505050505050565b600080600080600060a086880312156200042a57600080fd5b855162000437816200032b565b60208701519095506001600160401b03808211156200045557600080fd5b6200046389838a0162000380565b955060408801519150808211156200047a57600080fd5b50620004898882890162000380565b93505060608601516200049c816200032b565b6080870151909250620004af816200032b565b809150509295509295909350565b600181811c90821680620004d257607f821691505b602082108103620004f357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054757600081815260208120601f850160051c81016020861015620005225750805b601f850160051c820191505b8181101562000543578281556001016200052e565b5050505b505050565b81516001600160401b0381111562000568576200056862000344565b6200058081620005798454620004bd565b84620004f9565b602080601f831160018114620005b857600084156200059f5750858301515b600019600386901b1c1916600185901b17855562000543565b600085815260208120601f198616915b82811015620005e957888601518255948401946001909101908401620005c8565b5085821015620006085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200062b57600080fd5b815160ff811681146200063d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000269576200026962000644565b600181815b80851115620006b75781600019048211156200069b576200069b62000644565b80851615620006a957918102915b93841c93908002906200067b565b509250929050565b600082620006d05750600162000269565b81620006df5750600062000269565b8160018114620006f85760028114620007035762000723565b600191505062000269565b60ff84111562000717576200071762000644565b50506001821b62000269565b5060208310610133831016604e8410600b841016171562000748575081810a62000269565b62000754838362000676565b80600019048211156200076b576200076b62000644565b029392505050565b60006200063d60ff841683620006bf565b6020815260008251806020840152620007a58160408501602087016200035a565b601f01601f19169190910160400192915050565b80516020808301519190811015620004f35760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516139ca6200086460003960008181611d5f015261278301526000818161042a015281816110dd015261295201526000610e7b01526000610e50015260006122de015260006122b6015260006122110152600061223b0152600061226501526139ca6000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806395d89b41116101bd578063c63d75b6116100f9578063d905777e116100a2578063dd62ed3e1161007c578063dd62ed3e14610718578063ebbc496514610751578063ef8b30f714610759578063f20976111461076c57600080fd5b8063d905777e146106c4578063daeccc79146106d7578063db686a921461070557600080fd5b8063d0ebdbe7116100d3578063d0ebdbe714610696578063d505accf146106a9578063d6c9b0dc146106bc57600080fd5b8063c63d75b61461065d578063c6e6f59214610670578063ce96cb771461068357600080fd5b8063b1f8100d11610166578063b9d4e87911610140578063b9d4e87914610605578063ba08765214610624578063be2f503914610637578063bfccf0ec1461064a57600080fd5b8063b1f8100d146105cc578063b3d7f6b9146105df578063b460af94146105f257600080fd5b8063a9059cbb11610197578063a9059cbb146105a6578063ab8798271461038f578063b1e1fca4146105b957600080fd5b806395d89b4114610578578063a457c2d714610580578063a7229fd91461059357600080fd5b806338d52e0f1161028c57806365c1e09e116102355780637ecebe001161020f5780637ecebe001461050e57806384b0196e146105375780638da5cb5b1461055257806394bf804d1461056557600080fd5b806365c1e09e146104bf5780636e553f65146104d257806370a08231146104e557600080fd5b8063402d267d11610266578063402d267d14610488578063481c6a751461049b5780634cdad506146104ac57600080fd5b806338d52e0f1461042857806339509351146104625780633f3e4c111461047557600080fd5b80630a28a477116102f95780632ab4d052116102d35780632ab4d052146103ff5780632b96895814610407578063313ce567146104115780633644e5151461042057600080fd5b80630a28a477146103d157806318160ddd146103e457806323b872dd146103ec57600080fd5b806306fdde031161032a57806306fdde031461039657806307a2d13a146103ab578063095ea7b3146103be57600080fd5b806301e1d1141461035157806301ffc9a71461036c57806304336bb31461038f575b600080fd5b610359610774565b6040519081526020015b60405180910390f35b61037f61037a3660046132f1565b610800565b6040519015158152602001610363565b6000610359565b61039e610931565b604051610363919061337a565b6103596103b936600461338d565b6109c3565b61037f6103cc3660046133bd565b6109d0565b6103596103df36600461338d565b6109e8565b600254610359565b61037f6103fa3660046133e7565b6109fb565b600b54610359565b61040f610a21565b005b60405160128152602001610363565b610359610b41565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610363565b61037f6104703660046133bd565b610b4b565b61040f61048336600461338d565b610b8a565b610359610496366004613423565b610c66565b600e546001600160a01b031661044a565b6103596104ba36600461338d565b610c71565b6103596104cd36600461343e565b610c7d565b6103596104e0366004613463565b610d67565b6103596104f3366004613423565b6001600160a01b031660009081526020819052604090205490565b61035961051c366004613423565b6001600160a01b03166000908152600c602052604090205490565b61053f610e42565b604051610363979695949392919061348f565b60085461044a906001600160a01b031681565b610359610573366004613463565b610ee7565b61039e610fb3565b61037f61058e3660046133bd565b610fc2565b61040f6105a13660046133e7565b611077565b61037f6105b43660046133bd565b6111b7565b600d5461044a906001600160a01b031681565b61040f6105da366004613423565b6111c5565b6103596105ed36600461338d565b6112ee565b610359610600366004613541565b6112fa565b61060d6113d7565b60405165ffffffffffff9091168152602001610363565b610359610632366004613541565b61146e565b61040f610645366004613423565b61153c565b61040f61065836600461357d565b611651565b61035961066b366004613423565b611839565b61035961067e36600461338d565b611881565b610359610691366004613423565b61188e565b61040f6106a4366004613423565b61189a565b61040f6106b7366004613603565b6119af565b61037f611b1b565b6103596106d2366004613423565b611ba2565b61037f6106e5366004613676565b600960209081526000928352604080842090915290825290205460ff1681565b61040f61071336600461338d565b611bae565b6103596107263660046136a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61040f611c22565b61035961076736600461338d565b611cd6565b61037f611ce2565b600e54604080517f01e1d11400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916301e1d1149160048083019260209291908290030181865afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb91906136ca565b905090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f87dfe5a000000000000000000000000000000000000000000000000000000000148061089357507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b806108df57507fffffffff0000000000000000000000000000000000000000000000000000000082167f84b0196e00000000000000000000000000000000000000000000000000000000145b8061092b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b606060038054610940906136e3565b80601f016020809104026020016040519081016040528092919081815260200182805461096c906136e3565b80156109b95780601f1061098e576101008083540402835291602001916109b9565b820191906000526020600020905b81548152906001019060200180831161099c57829003601f168201915b5050505050905090565b600061092b826000611d45565b6000336109de818585611d9a565b5060019392505050565b60006109f48282611ef2565b5092915050565b600033610a09858285611f1c565b610a14858585611fae565b60019150505b9392505050565b610a4f336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b610a85576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a546001600160a01b031661dead14610adf57600a546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b6008546040516000916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006107fb612204565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906109de9082908690610b85908790613765565b611d9a565b610bb8336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b610bee576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600003610c2a576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8190556040518181527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df284484906020015b60405180910390a150565b600061092b8161232f565b60006109f48282612391565b6000610cad336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b610ce3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025415610d1d576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8290556040518281527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a1610d5f8484610d67565b949350505050565b6000610d716123b8565b600080610d7d8261232f565b905080851115610dd2576040517f79012fb20000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810186905260448101829052606401610ad6565b600080610ddf8785612411565b90925090508015610e27577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb780914042760008583604051610e1e939291906137a7565b60405180910390a15b610e3333878985612438565b509250505061092b6001600755565b600060608082808083610e767f000000000000000000000000000000000000000000000000000000000000000060056124a8565b610ea17f000000000000000000000000000000000000000000000000000000000000000060066124a8565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610ef16123b8565b6000610efc83611839565b905080841115610f51576040517f284ff6670000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810185905260448101829052606401610ad6565b60008080610f5f8784612553565b90925090508015610fa7577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb780914042760008483604051610f9e939291906137a7565b60405180910390a15b610e333387848a612438565b606060048054610940906136e3565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561105f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ad6565b61106c8286868403611d9a565b506001949350505050565b6110a5336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b6110db576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603611151576040517f961c9a4f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610ad6565b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161119691815260200190565b60405180910390a36111b26001600160a01b038416838361257f565b505050565b6000336109de818585611fae565b6111f3336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b611229576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611274576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610ad6565b600a546008546040516001600160a01b038085169381169216907f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d890600090a4600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006109f48282612553565b60006113046123b8565b6000806113118483612646565b905080861115611366576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810187905260448101829052606401610ad6565b6000806113738885611ef2565b909250905080156113bb577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb7809140427600185836040516113b2939291906137a7565b60405180910390a15b6113c83388888b86612694565b5092505050610a1a6001600755565b6000806000600e60009054906101000a90046001600160a01b03166001600160a01b031663b9d4e8796040518163ffffffff1660e01b81526004016040805180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190613808565b61ffff91821693501690506114678183613832565b9250505090565b60006114786123b8565b6000806114858483612743565b9050808611156114da576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810187905260448101829052606401610ad6565b6000806114e78885612391565b9092509050801561152f577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb780914042760018583604051611526939291906137a7565b60405180910390a15b6113c8338888858c612694565b61156a336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b6115a0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166115e3576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401610ad6565b6040516001600160a01b038216907f2781e03d8cf8be1845f40e150af1187b0cdb48dccd761a708f5e5b612a865d1d90600090a2600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61167f336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b6116b5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316611700576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610ad6565b604080518082019091526000808252602082015260005b828110156118325783838281811061173157611731613851565b905060400201803603810190611747919061388e565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b038716600090815260098352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561182b81613912565b9050611717565b5050505050565b600080611845600b5490565b9050600019810361185a575060001992915050565b600061186560025490565b905081811115611879575060009392505050565b900392915050565b600061092b82600061277c565b600061092b8282612646565b6118c8336000357fffffffff000000000000000000000000000000000000000000000000000000001661219b565b6118fe576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611941576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401610ad6565b6040516001600160a01b038216907f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa6990600090a2600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b834211156119ec576040517f6279130200000000000000000000000000000000000000000000000000000000815260048101859052602401610ad6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a398c6001600160a01b03166000908152600c6020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611a94826127c8565b90506000611aa482878787612810565b9050896001600160a01b0316816001600160a01b031614611b04576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b166024820152604401610ad6565b611b0f8a8a8a611d9a565b50505050505050505050565b600e54604080517fd6c9b0dc00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d6c9b0dc9160048083019260209291908290030181865afa158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb919061392c565b600061092b8282612743565b600e546001600160a01b03163314611bf2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fceb20f7f0b19335681096ee1eaa9bb2a6ef5a9a69ba48b6b488e7b7eff2ef04d90602001610c5b565b600a546001600160a01b03163314611c66576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55490600090a3600880547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600a80549091169055565b60006109f48282612411565b600e54604080517ff209761100000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f20976119160048083019260209291908290030181865afa158015611b7e573d6000803e3d6000fd5b6000610a1a611d52610774565b611d5d906001613765565b7f0000000000000000000000000000000000000000000000000000000000000000611d8760025490565b611d919190613765565b85919085612838565b6001600160a01b038316611e155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b038216611e915760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806000611f0285600161277c565b9050611f10818560016128cb565b95908603945092505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611fa85781811015611f9b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ad6565b611fa88484848403611d9a565b50505050565b6001600160a01b03831661202a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0382166120a65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b038316600090815260208190526040902054818110156121355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611fa8565b6008546000906001600160a01b0384811691161480610a1a5750506001600160a01b039190911660009081526009602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000009094168352929052205460ff1690565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561225d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561228757507f000000000000000000000000000000000000000000000000000000000000000090565b6107fb604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008061233b600b5490565b90506000198103612350575060001992915050565b600061235b60025490565b90508181111561236f575060009392505050565b808203612388612381828760016128cb565b6001611d45565b95945050505050565b60008061239f84848361292e565b90945090506123af846000611d45565b91509250929050565b60026007540361240a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad6565b6002600755565b60008061241f84600061277c565b915061242d8284600061292e565b909590945092505050565b6124428483612949565b61244c8382612a0d565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405161249a929190918252602082015260400190565b60405180910390a350505050565b606060ff83146124c2576124bb83612acc565b905061092b565b8180546124ce906136e3565b80601f01602080910402602001604051908101604052809291908181526020018280546124fa906136e3565b80156125475780601f1061251c57610100808354040283529160200191612547565b820191906000526020600020905b81548152906001019060200180831161252a57829003601f168201915b5050505050905061092b565b60008080612563858560016128cb565b90508481039150612575816001611d45565b9250509250929050565b6040516001600160a01b0383166024820152604481018290526111b29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612b0b565b60006001600160a01b03831661265f575060001961092b565b6001600160a01b03831660009081526020819052604081205490506126868184600061292e565b509050610d5f816000611d45565b826001600160a01b0316856001600160a01b0316146126b8576126b8838683611f1c565b6126c28382612bf3565b6002546000036126d2576000600b555b6126dc8285612d5c565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051612734929190918252602082015260400190565b60405180910390a45050505050565b60006001600160a01b03831615612772576001600160a01b038316600090815260208190526040902054610a1a565b5060001992915050565b6000610a1a7f00000000000000000000000000000000000000000000000000000000000000006127ab60025490565b6127b59190613765565b6127bd610774565b611d91906001613765565b600061092b6127d5612204565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061282187878787612dac565b9150915061282e81612e8e565b5095945050505050565b6000612845858585612ff6565b9050600182600181111561285b5761285b613778565b03610d5f57828061286e5761286e613949565b84860915610d5f5760001981101561288857600101610d5f565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610ad6565b6000826000036128dc575082610a1a565b6127108310612917576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083612710039050612388856127108386612838565b60008061293c8585856130e3565b9594869003949350505050565b600e54612983907f00000000000000000000000000000000000000000000000000000000000000009084906001600160a01b031684613107565b600e546040517fb6b55f2500000000000000000000000000000000000000000000000000000000815260001960048201526001600160a01b039091169063b6b55f25906024015b6020604051808303816000875af11580156129e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b291906136ca565b6001600160a01b038216612a635760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad6565b8060026000828254612a759190613765565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60606000612ad983613158565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000612b60826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131999092919063ffffffff16565b9050805160001480612b81575080806020019051810190612b81919061392c565b6111b25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b038216612c6f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b03821660009081526020819052604090205481811015612cfe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600e546040517ef714ce000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0383811660248301529091169062f714ce906044016129ca565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612de35750600090506003612e85565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612e37573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116612e7e57600060019250925050612e85565b9150600090505b94509492505050565b6000816004811115612ea257612ea2613778565b03612eaa5750565b6001816004811115612ebe57612ebe613778565b03612f0b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ad6565b6002816004811115612f1f57612f1f613778565b03612f6c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ad6565b6003816004811115612f8057612f80613778565b03612ff35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b50565b60008080600019858709858702925082811083820303915050806000036130305783828161302657613026613949565b0492505050610a1a565b83811061307a576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610ad6565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006127108381039084106130f9576000612388565b612388858261271086612838565b6040516001600160a01b0380851660248301528316604482015260648101829052611fa89085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016125c4565b600060ff8216601f81111561092b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d5f848460008585600080866001600160a01b031685876040516131c09190613978565b60006040518083038185875af1925050503d80600081146131fd576040519150601f19603f3d011682016040523d82523d6000602084013e613202565b606091505b50915091506132138783838761321e565b979650505050505050565b6060831561328d578251600003613286576001600160a01b0385163b6132865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad6565b5081610d5f565b610d5f83838151156132a25781518083602001fd5b8060405162461bcd60e51b8152600401610ad6919061337a565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146132ec57600080fd5b919050565b60006020828403121561330357600080fd5b610a1a826132bc565b60005b8381101561332757818101518382015260200161330f565b50506000910152565b6000815180845261334881602086016020860161330c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a1a6020830184613330565b60006020828403121561339f57600080fd5b5035919050565b80356001600160a01b03811681146132ec57600080fd5b600080604083850312156133d057600080fd5b6133d9836133a6565b946020939093013593505050565b6000806000606084860312156133fc57600080fd5b613405846133a6565b9250613413602085016133a6565b9150604084013590509250925092565b60006020828403121561343557600080fd5b610a1a826133a6565b60008060006060848603121561345357600080fd5b83359250613413602085016133a6565b6000806040838503121561347657600080fd5b82359150613486602084016133a6565b90509250929050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526134cb60e084018a613330565b83810360408501526134dd818a613330565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561352f57835183529284019291840191600101613513565b50909c9b505050505050505050505050565b60008060006060848603121561355657600080fd5b83359250613566602085016133a6565b9150613574604085016133a6565b90509250925092565b60008060006040848603121561359257600080fd5b61359b846133a6565b9250602084013567ffffffffffffffff808211156135b857600080fd5b818601915086601f8301126135cc57600080fd5b8135818111156135db57600080fd5b8760208260061b85010111156135f057600080fd5b6020830194508093505050509250925092565b600080600080600080600060e0888a03121561361e57600080fd5b613627886133a6565b9650613635602089016133a6565b95506040880135945060608801359350608088013560ff8116811461365957600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561368957600080fd5b613692836133a6565b9150613486602084016132bc565b600080604083850312156136b357600080fd5b6136bc836133a6565b9150613486602084016133a6565b6000602082840312156136dc57600080fd5b5051919050565b600181811c908216806136f757607f821691505b602082108103613730577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561092b5761092b613736565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60608101600285106137e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b938152602081019290925260409091015290565b805161ffff811681146132ec57600080fd5b6000806040838503121561381b57600080fd5b613824836137f6565b9150613486602084016137f6565b65ffffffffffff8181168382160190808211156109f4576109f4613736565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8015158114612ff357600080fd5b6000604082840312156138a057600080fd5b6040516040810181811067ffffffffffffffff821117156138ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526138f6836132bc565b8152602083013561390681613880565b60208201529392505050565b6000600019820361392557613925613736565b5060010190565b60006020828403121561393e57600080fd5b8151610a1a81613880565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000825161398a81846020870161330c565b919091019291505056fea264697066735822122026c2b56e51f444ef376ac7742606058012590df27b95f1ac3dba06fd4f96ac4164736f6c63430008130033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d8000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000dc035d45d973e3ec169d2276ddab16f1e407384f00000000000000000000000043a3cb2cf5ea2331174c166214302f0c3bba6a8500000000000000000000000000000000000000000000000000000000000000194f726967616d69207355534453202b20536b79204661726d7300000000000000000000000000000000000000000000000000000000000000000000000000000773555344532b7300000000000000000000000000000000000000000000000000