0 txs
0 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
BRIDGER_ROLE
viewfunction BRIDGER_ROLE() view returns (bytes32)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
dstLzChainId
viewfunction dstLzChainId() view returns (uint32)
feeBps
viewfunction feeBps() view returns (uint256)
feeEarnedInETH
viewfunction feeEarnedInETH() view returns (uint256)
feeEarnedInToken
viewfunction feeEarnedInToken(address token) view returns (uint256 feeEarned)
getETHBalanceMinusFees
viewfunction getETHBalanceMinusFees() view returns (uint256)
getMinAmount
purefunction getMinAmount(uint256 amount, uint256 slippageTolerance) pure returns (uint256)
getNativeFee
viewfunction getNativeFee(uint256 amount, uint256 minAmount) view returns (uint256)
getRate
viewfunction getRate() view returns (uint256)
getReceiver
viewfunction getReceiver() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSupportedTokens
viewfunction getSupportedTokens() view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isEthDepositEnabled
viewfunction isEthDepositEnabled() view returns (bool)
l1VaultETHForL2Chain
viewfunction l1VaultETHForL2Chain() view returns (address)
LEGACY_MANAGER_ROLE
viewfunction LEGACY_MANAGER_ROLE() view returns (bytes32)
legacyFeeEarnedInWstETH
viewfunction legacyFeeEarnedInWstETH() view returns (uint256)
legacyWstETH_ETHOracle
viewfunction legacyWstETH_ETHOracle() view returns (address)
legacyWstETH
viewfunction legacyWstETH() view returns (address)
name
viewfunction name() view returns (string)
rsETHOracle
viewfunction rsETHOracle() view returns (address)
stargatePool
viewfunction stargatePool() view returns (address)
supportedTokenList
viewfunction supportedTokenList(uint256) view returns (address)
supportedTokenOracle
viewfunction supportedTokenOracle(address token) view returns (address oracle)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
viewSwapRsETHAmountAndFee
viewfunction viewSwapRsETHAmountAndFee(uint256 amount, address token) view returns (uint256 rsETHAmount, uint256 fee)
viewSwapRsETHAmountAndFee
viewfunction viewSwapRsETHAmountAndFee(uint256 amount) view returns (uint256 rsETHAmount, uint256 fee)
wrsETH
viewfunction wrsETH() view returns (address)
addSupportedToken
nonpayablefunction addSupportedToken(address token, address oracle)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
bridgeAssets
payablefunction bridgeAssets(uint256 amount, uint256 minAmount, uint256 nativeFee) payable
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(address token, uint256 amount, string referralId)
deposit
payablefunction deposit(string referralId) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address admin, address manager, address _rsETH, address _wstETH, uint256 _feeBps, address _rsETHOracle, address _wstETH_ETHOracle)
moveAssetsForBridging
nonpayablefunction moveAssetsForBridging()
moveAssetsForBridging
nonpayablefunction moveAssetsForBridging(address token)
reinitialize
nonpayablefunction reinitialize(address _l1VaultETHForL2Chain, address _stargatePool, uint32 _dstLzChainId)
removeSupportedToken
nonpayablefunction removeSupportedToken(address token, uint256 tokenIndex)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFeeBps
nonpayablefunction setFeeBps(uint256 _feeBps)
setIsEthDepositEnabled
nonpayablefunction setIsEthDepositEnabled(bool _isEthDepositEnabled)
setL1VaultETHForL2Chain
nonpayablefunction setL1VaultETHForL2Chain(address _l1VaultETHForL2Chain)
setRSETHOracle
nonpayablefunction setRSETHOracle(address _rsETHOracle)
setStargatePool
nonpayablefunction setStargatePool(address _stargatePool)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdrawFees
nonpayablefunction withdrawFees(address receiver, address token)
withdrawFees
nonpayablefunction withdrawFees(address receiver)
events
AddSupportedToken
event AddSupportedToken(address token)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AssetsMovedForBridging
event AssetsMovedForBridging(uint256 ethBalanceMinusFees)
AssetsMovedForBridging
event AssetsMovedForBridging(uint256 tokenBalanceMinusFees, address token)
BridgedETHToL1
event BridgedETHToL1(uint32 lzChainId, address l1Receiver, uint256 amountSent, uint256 amountReceived)
FeeBpsSet
event FeeBpsSet(uint256 feeBps)
FeesWithdrawn
event FeesWithdrawn(uint256 feeEarnedInETH, address token)
FeesWithdrawn
event FeesWithdrawn(uint256 feeEarnedInETH)
Initialized
event Initialized(uint8 version)
IsEthDepositEnabled
event IsEthDepositEnabled(bool isEthDepositEnabled)
L1VaultETHForL2ChainSet
event L1VaultETHForL2ChainSet(address l1VaultETHForL2Chain)
OracleSet
event OracleSet(address oracle)
RemovedSupportedToken
event RemovedSupportedToken(address token)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
StargatePoolSet
event StargatePoolSet(address stargatePool)
SwapOccurred
event SwapOccurred(address indexed user, uint256 rsETHAmount, uint256 fee, string referralId)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
AlreadySupportedToken
error AlreadySupportedToken()
EthDepositDisabled
error EthDepositDisabled()
InsufficientETHBalance
error InsufficientETHBalance()
InsufficientNativeFee
error InsufficientNativeFee()
InvalidAmount
error InvalidAmount()
InvalidMinAmount
error InvalidMinAmount()
InvalidSlippageTolerance
error InvalidSlippageTolerance()
TokenNotFoundError
error TokenNotFoundError()
TransferFailed
error TransferFailed()
UnsupportedOracle
error UnsupportedOracle()
UnsupportedToken
error UnsupportedToken()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61417280620000ed5f395ff3fe608060405260043610610371575f3560e01c806372599fdf116101c8578063a9059cbb116100fd578063d547741f1161009d578063f08442e81161006d578063f08442e814610ac5578063f255527814610ae4578063f2b27cac14610b03578063f64f721514610b2f575f80fd5b8063d547741f14610a24578063dd62ed3e14610a43578063e129200f14610a87578063e9f3c0e014610aa6575f80fd5b8063bfe07da6116100d8578063bfe07da6146109a6578063c2b7be16146109c5578063d1d12b97146109e4578063d3c7c2c714610a03575f80fd5b8063a9059cbb14610954578063af3ba3cf14610973578063b22c63ed14610992575f80fd5b806391ca47c71161016857806398aca9221161014357806398aca922146108f1578063a217fddf1461090f578063a26e118614610922578063a457c2d714610935575f80fd5b806391ca47c71461087957806391d148541461089957806395d89b41146108dd575f80fd5b80637beb5929116101a35780637beb5929146107dc5780637de1c7ed146108265780638231cdad1461084557806390ed579b14610864575f80fd5b806372599fdf1461076c57806372c27b621461078b578063794240c8146107aa575f80fd5b80632f2ff15d116102a9578063453f14d411610249578063679aefce11610219578063679aefce146106f0578063687b0a11146107045780636ba782c01461071857806370a0823114610738575f80fd5b8063453f14d41461066a57806345f22d2b1461069e578063513b5064146106bd57806354d1d5e4146106d0575f80fd5b806336568abe1161028457806336568abe146105da57806339509351146105f95780633bd927ba146106185780633d75e45114610637575f80fd5b80632f2ff15d146105815780632fd9470f146105a0578063313ce567146105bf575f80fd5b806318160ddd11610314578063248a9ca3116102ef578063248a9ca3146104ea57806324a9d853146105185780632b2a878d1461052d5780632b60c82214610562575f80fd5b806318160ddd146104845780631df341681461049857806323b872dd146104cb575f80fd5b80630eaf43f21161034f5780630eaf43f2146103e95780631092ca9e1461040a578063132272fb14610442578063164e68de14610465575f80fd5b806301ffc9a71461037557806306fdde03146103a9578063095ea7b3146103ca575b5f80fd5b348015610380575f80fd5b5061039461038f36600461370a565b610b4e565b60405190151581526020015b60405180910390f35b3480156103b4575f80fd5b506103bd610be6565b6040516103a091906137b4565b3480156103d5575f80fd5b506103946103e43660046137e1565b610c76565b3480156103f4575f80fd5b50610408610403366004613809565b610c8d565b005b348015610415575f80fd5b506101055461042a906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b34801561044d575f80fd5b5061045760ff5481565b6040519081526020016103a0565b348015610470575f80fd5b5061040861047f366004613883565b610f60565b34801561048f575f80fd5b50603554610457565b3480156104a3575f80fd5b506104577f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b3480156104d6575f80fd5b506103946104e536600461389c565b611056565b3480156104f5575f80fd5b506104576105043660046138d5565b5f9081526097602052604090206001015490565b348015610523575f80fd5b5061045760fd5481565b348015610538575f80fd5b5061042a610547366004613883565b6101036020525f90815260409020546001600160a01b031681565b34801561056d575f80fd5b5061042a61057c3660046138d5565b611079565b34801561058c575f80fd5b5061040861059b3660046138ec565b6110a2565b3480156105ab575f80fd5b506104086105ba366004613883565b6110cb565b3480156105ca575f80fd5b50604051601281526020016103a0565b3480156105e5575f80fd5b506104086105f43660046138ec565b61114d565b348015610604575f80fd5b506103946106133660046137e1565b6111d9565b348015610623575f80fd5b50610457610632366004613916565b611217565b348015610642575f80fd5b506104577fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a881565b348015610675575f80fd5b506106896106843660046138ec565b611383565b604080519283526020830191909152016103a0565b3480156106a9575f80fd5b506104086106b8366004613936565b6114c7565b6104086106cb366004613982565b611689565b3480156106db575f80fd5b506101005461042a906001600160a01b031681565b3480156106fb575f80fd5b5061045761192b565b34801561070f575f80fd5b506104086119b5565b348015610723575f80fd5b506101015461042a906001600160a01b031681565b348015610743575f80fd5b50610457610752366004613883565b6001600160a01b03165f9081526033602052604090205490565b348015610777575f80fd5b50610457610786366004613916565b611aa9565b348015610796575f80fd5b506104086107a53660046138d5565b611b0d565b3480156107b5575f80fd5b50610101546103949074010000000000000000000000000000000000000000900460ff1681565b3480156107e7575f80fd5b50610106546108119074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016103a0565b348015610831575f80fd5b506104086108403660046139b8565b611b88565b348015610850575f80fd5b5061040861085f3660046137e1565b611c0c565b34801561086f575f80fd5b5061045760fe5481565b348015610884575f80fd5b506101065461042a906001600160a01b031681565b3480156108a4575f80fd5b506103946108b33660046138ec565b5f9182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156108e8575f80fd5b506103bd611de3565b3480156108fc575f80fd5b50610105546001600160a01b0316610457565b34801561091a575f80fd5b506104575f81565b610408610930366004613aa7565b611df2565b348015610940575f80fd5b5061039461094f3660046137e1565b611f90565b34801561095f575f80fd5b5061039461096e3660046137e1565b612039565b34801561097e575f80fd5b5060fc5461042a906001600160a01b031681565b34801561099d575f80fd5b50610457612046565b3480156109b1575f80fd5b506104086109c0366004613ad9565b612055565b3480156109d0575f80fd5b506104086109df366004613b2c565b61221a565b3480156109ef575f80fd5b506104086109fe366004613883565b6123d3565b348015610a0e575f80fd5b50610a1761253f565b6040516103a09190613b54565b348015610a2f575f80fd5b50610408610a3e3660046138ec565b61259f565b348015610a4e575f80fd5b50610457610a5d366004613b2c565b6001600160a01b039182165f90815260346020908152604080832093909416825291909152205490565b348015610a92575f80fd5b5060fb5461042a906001600160a01b031681565b348015610ab1575f80fd5b50610408610ac0366004613883565b6125c3565b348015610ad0575f80fd5b50610408610adf366004613883565b61263d565b348015610aef575f80fd5b50610408610afe366004613b2c565b6126b7565b348015610b0e575f80fd5b50610457610b1d366004613883565b6101026020525f908152604090205481565b348015610b3a575f80fd5b50610689610b493660046138d5565b6127a5565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610be057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060368054610bf590613ba0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2190613ba0565b8015610c6c5780601f10610c4357610100808354040283529160200191610c6c565b820191905f5260205f20905b815481529060010190602001808311610c4f57829003601f168201915b5050505050905090565b5f33610c83818585612802565b5060019392505050565b5f54610100900460ff1615808015610cab57505f54600160ff909116105b80610cc45750303b158015610cc457505f5460ff166001145b610d3b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610d97575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610da086612959565b610da985612959565b610e1d6040518060400160405280600581526020017f72734554480000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f7273455448000000000000000000000000000000000000000000000000000000815250612999565b610e25612a1f565b610e2d612a9d565b610e375f89612b21565b610e617f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0889612bdf565b610e8b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0888612bdf565b60fb80546001600160a01b038089167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc805488841690831617905560fd86905561010080548684169083161790556101018054928516929091169190911790558015610f56575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a8610f8a81612be9565b60fe80545f918290556040519091906001600160a01b0385169083908381818185875af1925050503d805f8114610fdc576040519150601f19603f3d011682016040523d82523d5f602084013e610fe1565b606091505b505090508061101c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f9800e6f57aeb4360eaa72295a820a4293e1e66fbfcabcd8874ae141304a76deb906020015b60405180910390a150505050565b5f33611063858285612bf3565b61106e858585612ca2565b506001949350505050565b6101048181548110611089575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f828152609760205260409020600101546110bc81612be9565b6110c68383612b21565b505050565b5f6110d581612be9565b6110de82612959565b61010680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040519081527f6f7f6cd6f9a78fedb0b8576aec8d9936dd568a97a7bee04c04b6def8ecf94246906020015b60405180910390a15050565b6001600160a01b03811633146111cb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610d32565b6111d58282612e94565b5050565b335f8181526034602090815260408083206001600160a01b0387168452909152812054909190610c839082908690611212908790613c1e565b612802565b5f82821180611224575081155b1561125b576040517f9c68554f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160e081019091526101065463ffffffff740100000000000000000000000000000000000000009091041681525f90602081016112a4610105546001600160a01b031690565b815260208082018790526040808301879052805180830182525f80825260608501919091528151808401835281815260808501528151928301825280835260a0909301919091526101065490517f3b6f743b00000000000000000000000000000000000000000000000000000000815292935090916001600160a01b0390911690633b6f743b9061133b9085908590600401613caf565b6040805180830381865afa158015611355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113799190613d1f565b5195945050505050565b6001600160a01b038082165f9081526101036020526040812054909182918491166113da576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271060fd54866113eb9190613d39565b6113f59190613d50565b91505f6114028387613d88565b90505f61140d61192b565b6001600160a01b038088165f908152610103602090815260408083205481517f679aefce00000000000000000000000000000000000000000000000000000000815291519596509294929093169263679aefce92600480830193928290030181865afa15801561147f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a39190613d9b565b9050816114b08285613d39565b6114ba9190613d50565b9550505050509250929050565b5f54600290610100900460ff161580156114e757505f5460ff8083169116105b6115595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d32565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff83161761010017815561159281612be9565b61159b85612959565b6115a484612959565b5061010580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038681169190911790915561010680549185167fffffffffffffffff000000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000063ffffffff8516021790555f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611048565b611691612f33565b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a86116bb81612be9565b836116c4612046565b10156116fc576040517fbbb20aae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83831180611708575082155b1561173f576040517f9c68554f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81341015611779576040517f9c92bdfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160e081019091526101065463ffffffff740100000000000000000000000000000000000000009091041681525f90602081016117c2610105546001600160a01b031690565b815260208082018890526040808301889052805180830182525f80825260608501919091528151808401835281815260808501528151808401835281815260a090940193909352805180820190915286815290810182905261010654929350916001600160a01b031663c7c7f5b361183a8988613c1e565b8585336040518563ffffffff1660e01b815260040161185b93929190613db2565b60c06040518083038185885af1158015611877573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061189c9190613dee565b61010654610105548251602080850151604080517401000000000000000000000000000000000000000090960463ffffffff1686526001600160a01b03909416918501919091529183015260608201529092507f2bfc0ed497a2253b9aa4e4a88269dcc8efa7489803743d7cfa748ec9c241c6d7915060800160405180910390a1505050506110c6600160c955565b61010054604080517f679aefce00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163679aefce9160048083019260209291908290030181865afa15801561198c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b09190613d9b565b905090565b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a86119df81612be9565b5f60fe54476119ee9190613d88565b6040519091505f90339083908381818185875af1925050503d805f8114611a30576040519150601f19603f3d011682016040523d82523d5f602084013e611a35565b606091505b5050905080611a70576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f52f82c8bf940e02934eb4517dd40f665fd2b0fa3f1d03a1e40edb3d4a12582ed906020015b60405180910390a1505050565b5f6064821115611ae5576040517fc31c0b6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710611af28385613d39565b611afc9190613d50565b611b069084613d88565b9392505050565b5f611b1781612be9565b612710821115611b53576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fd8290556040518281527f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b90602001611141565b5f611b9281612be9565b610101805483151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f65a7948832a4d71913587e81b87941d98ff34699b7cbccd6f18130ef44a50ef09061114190841515815260200190565b5f611c1681612be9565b611c1f83612959565b826001600160a01b03166101048381548110611c3d57611c3d613e75565b5f918252602090912001546001600160a01b031614611c88576040517fa126a3fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f9081526101036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556101048054611cd790600190613d88565b81548110611ce757611ce7613e75565b5f9182526020909120015461010480546001600160a01b039092169184908110611d1357611d13613e75565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550610104805480611d5057611d50613ea2565b5f8281526020908190207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908301810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559091019091556040516001600160a01b03851681527f8acbc8326a37478819015a1cb4a2c1bae94f77521707fcd2cfd3a16cc1a1ccab9101611a9c565b606060378054610bf590613ba0565b611dfa612f33565b6101015474010000000000000000000000000000000000000000900460ff16611e4f576040517f8bf1614200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b345f819003611e8a576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80611e95836127a5565b915091508060fe5f828254611eaa9190613c1e565b909155505060fb546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611f16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3a9190613ecf565b50336001600160a01b03167f6fc20b1cf8f9d1126dbd5964e2517cd71083acf40aed30fb6e0c4850d251c94f838387604051611f7893929190613eea565b60405180910390a2505050611f8d600160c955565b50565b335f8181526034602090815260408083206001600160a01b03871684529091528120549091908381101561202c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d32565b61106e8286868403612802565b5f33610c83818585612ca2565b5f60fe54476119b09190613d88565b61205d612f33565b6001600160a01b038084165f90815261010360205260409020548491166120b0576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036120e9576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120fe6001600160a01b038516333086612f93565b5f8061210a8587611383565b6001600160a01b0388165f9081526101026020526040812080549395509193508392612137908490613c1e565b909155505060fb546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156121a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c79190613ecf565b50336001600160a01b03167f6fc20b1cf8f9d1126dbd5964e2517cd71083acf40aed30fb6e0c4850d251c94f83838760405161220593929190613eea565b60405180910390a25050506110c6600160c955565b5f61222481612be9565b61222d83612959565b61223682612959565b6001600160a01b038381165f90815261010360205260409020541615612288576040517f3ef79e6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b031663679aefce6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e89190613d9b565b5f03612320576040517fe2ec750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101048054600181019091557f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe0180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038681169182179093555f818152610103602090815260409182902080549094169487169490941790925590519081527f147a0287fa31c92ca7aabc769c1be557a8e445302cc2d747ab0bbee74ee44ab69101611a9c565b6001600160a01b038082165f9081526101036020526040902054829116612426576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a861245081612be9565b6001600160a01b0383165f81815261010260205260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919290916370a0823190602401602060405180830381865afa1580156124bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e19190613d9b565b6124eb9190613d88565b90506125016001600160a01b0385163383613062565b604080518281526001600160a01b03861660208201527f7493a63b680cd0d3326c9e387c9e325f1eb18423ba82e0f16da673fc7b7b75d79101611048565b6060610104805480602002602001604051908101604052809291908181526020018280548015610c6c57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612578575050505050905090565b5f828152609760205260409020600101546125b981612be9565b6110c68383612e94565b5f6125cd81612be9565b6125d682612959565b61010580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040519081527f57f23006f7da44c512e8442994ab51a9ebf42c1d21203a72a968013665be22ad90602001611141565b5f61264781612be9565b61265082612959565b61010080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001611141565b6001600160a01b038082165f908152610103602052604090205482911661270a576040517f6a17288200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc809a7fd521f10cdc3c068621a1c61d5fd9bb3f1502a773e53811bc248d919a861273481612be9565b6001600160a01b0383165f8181526101026020526040812080549190559061275d908683613062565b604080518281526001600160a01b03861660208201527f812bcf6853ebc81dc0a1d2323893eedad6cd086a4398311a699e0a7acdf187b3910160405180910390a15050505050565b5f8061271060fd54846127b89190613d39565b6127c29190613d50565b90505f6127cf8285613d88565b90505f6127da61192b565b9050806127ef83670de0b6b3a7640000613d39565b6127f99190613d50565b93505050915091565b6001600160a01b03831661287d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d32565b6001600160a01b0382166128f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d32565b6001600160a01b038381165f8181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038116611f8d576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54610100900460ff16612a155760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d32565b6111d582826130ab565b5f54610100900460ff16612a9b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d32565b565b5f54610100900460ff16612b195760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d32565b612a9b613140565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff166111d5575f8281526097602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612b9b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111d58282612b21565b611f8d81336131bc565b6001600160a01b038381165f908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c9c5781811015612c8f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d32565b612c9c8484848403612802565b50505050565b6001600160a01b038316612d1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d32565b6001600160a01b038216612d9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d32565b6001600160a01b0383165f9081526033602052604090205481811015612e285760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d32565b6001600160a01b038085165f8181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e879086815260200190565b60405180910390a3612c9c565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff16156111d5575f8281526097602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260c95403612f855760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d32565b600260c955565b600160c955565b6040516001600160a01b0380851660248301528316604482015260648101829052612c9c9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261324e565b6040516001600160a01b0383166024820152604481018290526110c69084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612fe0565b5f54610100900460ff166131275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d32565b60366131338382613f55565b5060376110c68282613f55565b5f54610100900460ff16612f8c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d32565b5f8281526097602090815260408083206001600160a01b038516845290915290205460ff166111d5576131ee81613334565b6131f9836020613346565b60405160200161320a92919061406d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610d32916004016137b4565b5f6132a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135699092919063ffffffff16565b905080515f14806132c25750808060200190518101906132c29190613ecf565b6110c65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d32565b6060610be06001600160a01b03831660145b60605f613354836002613d39565b61335f906002613c1e565b67ffffffffffffffff811115613377576133776139d3565b6040519080825280601f01601f1916602001820160405280156133a1576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106133d7576133d7613e75565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061343957613439613e75565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f613473846002613d39565b61347e906001613c1e565b90505b600181111561351a577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106134bf576134bf613e75565b1a60f81b8282815181106134d5576134d5613e75565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049490941c93613513816140ed565b9050613481565b508315611b065760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d32565b606061357784845f8561357f565b949350505050565b6060824710156135f75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d32565b5f80866001600160a01b031685876040516136129190614121565b5f6040518083038185875af1925050503d805f811461364c576040519150601f19603f3d011682016040523d82523d5f602084013e613651565b606091505b50915091506136628783838761366d565b979650505050505050565b606083156136db5782515f036136d4576001600160a01b0385163b6136d45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d32565b5081613577565b61357783838151156136f05781518083602001fd5b8060405162461bcd60e51b8152600401610d3291906137b4565b5f6020828403121561371a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b06575f80fd5b5f5b8381101561376357818101518382015260200161374b565b50505f910152565b5f8151808452613782816020860160208601613749565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f611b06602083018461376b565b80356001600160a01b03811681146137dc575f80fd5b919050565b5f80604083850312156137f2575f80fd5b6137fb836137c6565b946020939093013593505050565b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137c6565b9650613836602089016137c6565b9550613844604089016137c6565b9450613852606089016137c6565b93506080880135925061386760a089016137c6565b915061387560c089016137c6565b905092959891949750929550565b5f60208284031215613893575f80fd5b611b06826137c6565b5f805f606084860312156138ae575f80fd5b6138b7846137c6565b92506138c5602085016137c6565b9150604084013590509250925092565b5f602082840312156138e5575f80fd5b5035919050565b5f80604083850312156138fd575f80fd5b8235915061390d602084016137c6565b90509250929050565b5f8060408385031215613927575f80fd5b50508035926020909101359150565b5f805f60608486031215613948575f80fd5b613951846137c6565b925061395f602085016137c6565b9150604084013563ffffffff81168114613977575f80fd5b809150509250925092565b5f805f60608486031215613994575f80fd5b505081359360208301359350604090920135919050565b8015158114611f8d575f80fd5b5f602082840312156139c8575f80fd5b8135611b06816139ab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112613a0f575f80fd5b813567ffffffffffffffff80821115613a2a57613a2a6139d3565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613a7057613a706139d3565b81604052838152866020858801011115613a88575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215613ab7575f80fd5b813567ffffffffffffffff811115613acd575f80fd5b61357784828501613a00565b5f805f60608486031215613aeb575f80fd5b613af4846137c6565b925060208401359150604084013567ffffffffffffffff811115613b16575f80fd5b613b2286828701613a00565b9150509250925092565b5f8060408385031215613b3d575f80fd5b613b46836137c6565b915061390d602084016137c6565b602080825282518282018190525f9190848201906040850190845b81811015613b945783516001600160a01b031683529284019291840191600101613b6f565b50909695505050505050565b600181811c90821680613bb457607f821691505b602082108103613beb577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610be057610be0613bf1565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e06080850152613c7360e085018261376b565b905060a083015184820360a0860152613c8c828261376b565b91505060c083015184820360c0860152613ca6828261376b565b95945050505050565b604081525f613cc16040830185613c31565b905082151560208301529392505050565b5f60408284031215613ce2575f80fd5b6040516040810181811067ffffffffffffffff82111715613d0557613d056139d3565b604052825181526020928301519281019290925250919050565b5f60408284031215613d2f575f80fd5b611b068383613cd2565b8082028115828204841417610be057610be0613bf1565b5f82613d83577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610be057610be0613bf1565b5f60208284031215613dab575f80fd5b5051919050565b608081525f613dc46080830186613c31565b905083516020830152602084015160408301526001600160a01b0383166060830152949350505050565b5f8082840360c0811215613e00575f80fd5b6080811215613e0d575f80fd5b506040516060810167ffffffffffffffff8282108183111715613e3257613e326139d3565b8160405285518352602086015191508082168214613e4e575f80fd5b506020820152613e618560408601613cd2565b6040820152915061390d8460808501613cd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f60208284031215613edf575f80fd5b8151611b06816139ab565b838152826020820152606060408201525f613ca6606083018461376b565b601f8211156110c6575f81815260208120601f850160051c81016020861015613f2e5750805b601f850160051c820191505b81811015613f4d57828155600101613f3a565b505050505050565b815167ffffffffffffffff811115613f6f57613f6f6139d3565b613f8381613f7d8454613ba0565b84613f08565b602080601f831160018114613fd5575f8415613f9f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613f4d565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561402157888601518255948401946001909101908401614002565b508582101561405d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f83516140a4816017850160208801613749565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516140e1816028840160208801613749565b01602801949350505050565b5f816140fb576140fb613bf1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8251614132818460208701613749565b919091019291505056fea2646970667358221220c16533819993a72d58b506efcac3c43bb81a3065fce3091db17bb0ec8509d07364736f6c63430008150033