0 txs
4k calls
constructor
constructor()
functions
getAmountsFromLiquidity
viewfunction getAmountsFromLiquidity(address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidityAmount) view returns (uint256 amount0Min, uint256 amount1Min)
getLiquidityFromAmounts
viewfunction getLiquidityFromAmounts(address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint256 amount0Desired, uint256 amount1Desired) view returns (uint128 liquidityAmount)
getTokenOracle
viewfunction getTokenOracle(address token) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
convertToMainTokenAndSend
nonpayablefunction convertToMainTokenAndSend(address user, uint256 amount0, uint256 amount1, address token0, address token1, uint24 fee) returns (uint256 totalAmountMainToken)
getBalancedAmounts
nonpayablefunction getBalancedAmounts(address token0Address, address token1Address, uint256 amountDesired, uint24 fee) returns (uint256 amountToken0Desired, uint256 amountToken1Desired)
initialize
nonpayablefunction initialize(address _protocolConfig, address _userManagerAddress)
setProtocolConfigAddress
nonpayablefunction setProtocolConfigAddress(address _newProtocolConfig) returns (bool)
setSlippageParameters
nonpayablefunction setSlippageParameters(uint256 _numerator)
setTokenOracles
nonpayablefunction setTokenOracles(address[] tokens, address[] oracles)
setUserManagerAddress
nonpayablefunction setUserManagerAddress(address _newUserManagerAddress) returns (bool)
swapTokens
nonpayablefunction swapTokens(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, address recipient) returns (uint256 amountOut)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
ProtocolConfigSet
event ProtocolConfigSet()
SlippageParametersUpdated
event SlippageParametersUpdated(uint256 newNumerator)
TokenOracleUpdated
event TokenOracleUpdated(address indexed token, address indexed oracle)
TokensSwapped
event TokensSwapped(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 amountOutMinimum)
Upgraded
event Upgraded(address indexed implementation)
UserManagerSet
event UserManagerSet()
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OS_ADDRESS_UNCHANGED
error OS_ADDRESS_UNCHANGED()
OS_ARRAY_LENGTH_MISMATCH
error OS_ARRAY_LENGTH_MISMATCH()
OS_INVALID_ORACLE_ADDRESS
error OS_INVALID_ORACLE_ADDRESS()
OS_INVALID_PRICE_IN
error OS_INVALID_PRICE_IN()
OS_INVALID_PRICE_OUT
error OS_INVALID_PRICE_OUT()
OS_INVALID_SLIPPAGE_NUMERATOR
error OS_INVALID_SLIPPAGE_NUMERATOR()
OS_INVALID_TOKEN_ADDRESS
error OS_INVALID_TOKEN_ADDRESS()
OS_NOT_ENOUGH_TOKENS
error OS_NOT_ENOUGH_TOKENS()
OS_ORACLE_NOT_SET_IN
error OS_ORACLE_NOT_SET_IN()
OS_ORACLE_NOT_SET_OUT
error OS_ORACLE_NOT_SET_OUT()
OS_POOL_NOT_EXIST
error OS_POOL_NOT_EXIST()
OS_STALE_PRICE_IN
error OS_STALE_PRICE_IN()
OS_STALE_PRICE_OUT
error OS_STALE_PRICE_OUT()
OS_STALE_ROUND_IN
error OS_STALE_ROUND_IN()
OS_STALE_ROUND_OUT
error OS_STALE_ROUND_OUT()
OS_SWAP_ROUTER_NOT_SET
error OS_SWAP_ROUTER_NOT_SET()
OS_ZERO_ADDRESS
error OS_ZERO_ADDRESS()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UAC_EMERGENCY_MODE_ACTIVE
error UAC_EMERGENCY_MODE_ACTIVE()
UAC_NOT_2FA
error UAC_NOT_2FA()
UAC_NOT_GENERAL_ADMIN
error UAC_NOT_GENERAL_ADMIN()
UAC_NOT_GENERAL_OR_MASTER_ADMIN
error UAC_NOT_GENERAL_OR_MASTER_ADMIN()
UAC_NOT_LIQUIDITY_MANAGER
error UAC_NOT_LIQUIDITY_MANAGER()
UAC_NOT_MASTER_ADMIN
error UAC_NOT_MASTER_ADMIN()
UAC_NOT_USER_MANAGER_OR_GENERAL_ADMIN
error UAC_NOT_USER_MANAGER_OR_GENERAL_ADMIN()
UAC_NOT_USER_MANAGER
error UAC_NOT_USER_MANAGER()
UAC_NOT_USER
error UAC_NOT_USER()
UAC_NOT_VAULT_MANAGER
error UAC_NOT_VAULT_MANAGER()
UAC_NOT_VAULT_OR_LIQUIDITY_MANAGER
error UAC_NOT_VAULT_OR_LIQUIDITY_MANAGER()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b604051612d4790816100f08239608051818181610d030152610dd60152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80631417be301461191257806318f5f2a8146117de578063307c527a1461157d5780633c9004411461130e578063485cc9551461117f5780634d1530881461100f5780634f1ef28614610d5a57806352d1902d14610cf0578063663b7f76146108a7578063a0dcd0811461068c578063ad3cb1cc14610610578063c4359683146104a3578063d97ed65a1461037b5763dc64389f146100b657600080fd5b3461036e5760e036600319011261036e576100cf611953565b6100d7611969565b6100df611995565b906100e86119a7565b916100f16119b7565b9360a4359260c435926024602060018060a01b0360005416604051928380926337e26cd160e21b82523360048301525afa9081156102df5760009161033c575b501561032b5761018e926020926001600160a01b0361014e6123fa565b169160405195869485938493630b4c774160e11b8552600485016001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b03915afa9081156102df576000916102fc575b506001600160a01b03169384156102eb5760e060049560405196878092633850c7bd851b82525afa9384156102df576020956000956102a0575b506101e86101ee91612481565b91612481565b9182826001600160a01b0380831690821611610295575b50506001600160a01b0385811695908316861161023a5750506102289350612a54565b6040516001600160801b039091168152f35b919490939192906001600160a01b0382161115610289578291610261916102679594612a54565b93612a11565b6001600160801b03818116908316101561028257505b610228565b9050610228565b91505061027d92612a11565b935091503880610205565b6101ee9195506102ca6101e89160e03d60e0116102d8575b6102c281836119c7565b81019061217e565b5050505050509591506101db565b503d6102b8565b6040513d6000823e3d90fd5b6340fb246d60e01b60005260046000fd5b61031e915060203d602011610324575b61031681836119c7565b810190612150565b386101a1565b503d61030c565b631c113f1760e31b60005260046000fd5b90506020813d602011610373575b81610357602093836119c7565b8101031261036e5761036890611a4b565b38610131565b600080fd5b3d915061034a565b3461036e57602036600319011261036e57610394611953565b600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa9081156102df57600091610469575b5015610458576001600160a01b03168015610447576002546001600160a01b0381168214610436576001600160a01b031916176002556040516020907f74961419d6c00f878abfe2ba8c02be0a4d3dea9950888f4a88351994247498d7600080a160018152f35b638560303960e01b60005260046000fd5b6398f6b2cf60e01b60005260046000fd5b633bda9c4560e11b60005260046000fd5b90506020813d60201161049b575b81610484602093836119c7565b8101031261036e5761049590611a4b565b826103cf565b3d9150610477565b3461036e57602036600319011261036e576104bc611953565b6000546040516350b48de160e01b81523360048201526001600160a01b0382169290602081602481875afa9081156102df576000916105d6575b50801561056a575b15610559576001600160a01b0316918215610447578214610436576001600160a01b0319161760009081556040516020917f3aa8516ef6b9e3e1011337ef06158ac1869f76b2dba1bc42788a46d28109a0859080a160018152f35b63136de93960e21b60005260046000fd5b50604051637bc4162b60e11b8152336004820152602081602481875afa9081156102df5760009161059c575b506104fe565b90506020813d6020116105ce575b816105b7602093836119c7565b8101031261036e576105c890611a4b565b84610596565b3d91506105aa565b90506020813d602011610608575b816105f1602093836119c7565b8101031261036e5761060290611a4b565b846104f6565b3d91506105e4565b3461036e57600036600319011261036e57604080519061063081836119c7565b60058252640352e302e360dc1b6020830152805180926020825280519081602084015260005b8281106106755750506000828201840152601f01601f19168101030190f35b602082820181015187830187015286945001610656565b3461036e57604036600319011261036e576004356001600160401b03811161036e576106bc903690600401611a1b565b6024356001600160401b03811161036e576106db903690600401611a1b565b6000546040516350b48de160e01b815233600482015292949192906001600160a01b0316602082602481845afa9182156102df5760009261086b575b5081156107fa575b5015610559578183036107e95760005b83811061073857005b61074b6107468286856121f8565b61221e565b9061075a6107468286896121f8565b6001600160a01b039092169182156107d8576001600160a01b031680156107c757600083815260036020526040812080546001600160a01b03191683179055600193907f38af5c16b8276594303df55e002ec2a4e461e676aa19663bcb1ff9e1823acdf79080a30161072f565b633b93c71760e21b60005260046000fd5b630304862960e41b60005260046000fd5b636472667b60e11b60005260046000fd5b604051637bc4162b60e11b81523360048201529150602090829060249082905afa9081156102df57600091610831575b508561071f565b90506020813d602011610863575b8161084c602093836119c7565b8101031261036e5761085d90611a4b565b8561082a565b3d915061083f565b9091506020813d60201161089f575b81610887602093836119c7565b8101031261036e5761089890611a4b565b9086610717565b3d915061087a565b3461036e5760c036600319011261036e576108c0611953565b6064356001600160a01b038116916024359160443584820361036e576108e461197f565b9060a4359262ffffff8416840361036e576000546040516337e26cd160e21b815233600482015290602090829060249082906001600160a01b03165afa9081156102df57600091610cb6575b501561032b5761093e6127b2565b96610947612819565b60009788946001600160a01b038716929180610bb4575b5080610ace575b5060009290506001600160a01b0361097b6127b2565b1614906001600160a01b0361098e6127b2565b16149015610a38575091959150508015610a2e576109b89230926001600160a01b03881690611a58565b905b821580610a26575b610a15576020936109d9610a0d93610a08956121eb565b9384926109fa60405194859263a9059cbb60e01b8a850152602484016128d4565b03601f1981018452836119c7565b6129b6565b604051908152f35b63eabeae8160e01b60005260046000fd5b5081156109c2565b50505060006109b8565b9596929591939115610a755750909390508015610a6b57610a659230926001600160a01b03881690611a58565b916109ba565b5050506000610a65565b9195949092908015610ac757610a9a9250309185906001600160a01b038a1690611a58565b938015610abd57610ab79230926001600160a01b03881690611a58565b906109ba565b5050506000610ab7565b5050610a9a565b6040516370a0823160e01b81523060048201529299509091906020826024818d5afa9182156102df57600092610b7e575b50610b0d919230908b612890565b6040516370a0823160e01b8152306004820152906020826024818c5afa80156102df57600090610b4a575b610b4292506120f1565b968980610965565b506020823d602011610b76575b81610b64602093836119c7565b8101031261036e57610b429151610b38565b3d9150610b57565b91506020823d602011610bac575b81610b99602093836119c7565b8101031261036e57610b0d915191610aff565b3d9150610b8c565b6040516370a0823160e01b8152306004820152919690602083602481895afa928315610cab578293610c71575b50610bee90308588612890565b6040516370a0823160e01b8152306004820152602081602481895afa918215610c65578092610c2b575b505090610c24916120f1565b948b61095e565b9091506020823d602011610c5d575b81610c47602093836119c7565b81010312610c5a575051610c248d610c18565b80fd5b3d9150610c3a565b604051903d90823e3d90fd5b9092506020813d602011610ca3575b81610c8d602093836119c7565b81010312610c9f575191610bee610be1565b5080fd5b3d9150610c80565b6040513d84823e3d90fd5b90506020813d602011610ce8575b81610cd1602093836119c7565b8101031261036e57610ce290611a4b565b88610930565b3d9150610cc4565b3461036e57600036600319011261036e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610d49576020604051600080516020612cb28339815191528152f35b63703e46dd60e11b60005260046000fd5b604036600319011261036e57610d6e611953565b602435906001600160401b03821161036e573660238301121561036e57816004013590610d9a82611a00565b91610da860405193846119c7565b8083526020830193366024838301011161036e57816000926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610fec575b50610d4957600054604051637bc4162b60e11b815233600482015290602090829060249082906001600160a01b03165afa9081156102df57600091610fb2575b5015610458576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa60009181610f7e575b50610e8c5784634c9c8ce360e01b60005260045260246000fd5b80600080516020612cb2833981519152869203610f6a5750823b15610f5657600080516020612cb283398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115610f3b5760008091610f31945190845af43d15610f33573d91610f1483611a00565b92610f2260405194856119c7565b83523d6000602085013e612c50565b005b606091612c50565b50505034610f4557005b63b398979f60e01b60005260046000fd5b634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011610faa575b81610f9a602093836119c7565b8101031261036e57519086610e72565b3d9150610f8d565b90506020813d602011610fe4575b81610fcd602093836119c7565b8101031261036e57610fde90611a4b565b84610e41565b3d9150610fc0565b600080516020612cb2833981519152546001600160a01b03161415905084610e01565b3461036e57602036600319011261036e576000546040516350b48de160e01b81523360048281019190915235916001600160a01b0316602082602481845afa9182156102df57600092611143575b5081156110d2575b50156105595761251c81118015906110be575b6110ad576020817f70f7cd1382dfbf491df4472aef3e83ac6f5b022524f457e0f8ea0c45b2de86f992600155604051908152a1005b63e9e56a7760e01b60005260046000fd5b5061ffff6110ca612232565b168111611078565b604051637bc4162b60e11b81523360048201529150602090829060249082905afa9081156102df57600091611109575b5082611065565b90506020813d60201161113b575b81611124602093836119c7565b8101031261036e5761113590611a4b565b82611102565b3d9150611117565b9091506020813d602011611177575b8161115f602093836119c7565b8101031261036e5761117090611a4b565b908361105d565b3d9150611152565b3461036e57604036600319011261036e57611198611953565b6111a0611969565b600080516020612cf283398151915254604081901c60ff161592906001600160401b03811680159081611306575b60011490816112fc575b1590816112f3575b506112e2576001600160401b03198116600117600080516020612cf283398151915255836112b9575b506001600160a01b0316801580156112a8575b6104475760018060a01b031960025416176002556126ac60015560018060a01b031660018060a01b0319600054161760005561125457005b60ff60401b19600080516020612cf28339815191525416600080516020612cf2833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b506001600160a01b0382161561121c565b6001600160481b0319166001600160401b0117600080516020612cf28339815191525583611209565b63f92ee8a960e01b60005260046000fd5b905015856111e0565b303b1591506111d8565b8591506111ce565b3461036e57608036600319011261036e57611327611953565b61132f611969565b906064359162ffffff8316830361036e576000546040516337e26cd160e21b815233600482015290602090829060249082906001600160a01b03165afa9081156102df57600091611543575b501561032b57600061138b6127b2565b91611394612819565b6040516370a0823160e01b815230600482015290936001600160a01b0381169390602083602481885afa928315610cab57829361150d575b506113dd9060443590873091612890565b6040516370a0823160e01b8152306004820152602081602481885afa918215610c655780926114d6575b50509561141785926040986120f1565b956001600160a01b0390811693811691906114306127b2565b168414906001600160a01b036114446127b2565b1683149760011c9788926000146114825750611476956114719261146a92853093611a58565b9680979687955b6122c9565b82519182526020820152f35b915091939492506000146114b157916114716114a78693888796611476983093611a58565b80979687956122c9565b949161147161146a869361147696956114cd30828c8a86611a58565b99853093611a58565b9091506020823d602011611505575b816114f2602093836119c7565b81010312610c5a57505161141785611407565b3d91506114e5565b9092506020813d60201161153b575b81611529602093836119c7565b81010312610c9f5751916113dd6113cc565b3d915061151c565b90506020813d602011611575575b8161155e602093836119c7565b8101031261036e5761156f90611a4b565b8461137b565b3d9150611551565b3461036e5760c036600319011261036e57611596611953565b61159e611969565b906115a7611995565b6115af6119a7565b926115b86119b7565b60a435939092906001600160801b038516850361036e576000546040516337e26cd160e21b815233600482015290602090829060249082906001600160a01b03165afa9081156102df576000916117a4575b501561032b576116309160209161161f612232565b946001600160a01b0361014e6123fa565b03915afa9081156102df57600091611785575b506001600160a01b03169384156102eb5760e060049560405196878092633850c7bd851b82525afa9081156102df57604095600092611756575b5061168a61169091612481565b93612481565b60009390918483836001600160a01b038083169082161161174b575b50506001600160a01b0382811690841681116116fe5750505061147693946116f9926116d79261294b565b6116f361ffff6116ea600154809461210c565b94168094612130565b9461210c565b612130565b9295509092916001600160a01b03831611156117385750848261172c6114769697611732946116f99661294b565b96612908565b936116d7565b946116f992506117329161147695612908565b9450925088806116ac565b61169091925061177761168a9160e03d60e0116102d8576102c281836119c7565b50505050505092915061167d565b61179e915060203d6020116103245761031681836119c7565b85611643565b90506020813d6020116117d6575b816117bf602093836119c7565b8101031261036e576117d090611a4b565b8761160a565b3d91506117b2565b3461036e57602036600319011261036e576117f7611953565b6000546040516350b48de160e01b8152336004820152906001600160a01b0316602082602481845afa9182156102df576000926118d6575b508115611865575b50156105595760018060a01b03166000526003602052602060018060a01b0360406000205416604051908152f35b604051637bc4162b60e11b81523360048201529150602090829060249082905afa9081156102df5760009161189c575b5082611837565b90506020813d6020116118ce575b816118b7602093836119c7565b8101031261036e576118c890611a4b565b82611895565b3d91506118aa565b9091506020813d60201161190a575b816118f2602093836119c7565b8101031261036e5761190390611a4b565b908361182f565b3d91506118e5565b3461036e5760a036600319011261036e576020610a0d611930611953565b611938611969565b90611941611995565b61194961197f565b9260643592611a58565b600435906001600160a01b038216820361036e57565b602435906001600160a01b038216820361036e57565b608435906001600160a01b038216820361036e57565b6044359062ffffff8216820361036e57565b606435908160020b820361036e57565b608435908160020b820361036e57565b601f909101601f19168101906001600160401b038211908210176119ea57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116119ea57601f01601f191660200190565b9181601f8401121561036e578235916001600160401b03831161036e576020808501948460051b01011161036e57565b5190811515820361036e57565b91939290926024602060018060a01b0360005416604051928380926337e26cd160e21b82523360048301525afa9081156102df5760009161206e575b501561032b576002546040516321f8a72160e01b81527f9894d473d4fda0f0cbc06019d4a764e158e9ce8a85359d021f9da293714d471f600482015290602090829060249082906001600160a01b03165afa9081156102df5760009161204f575b506001600160a01b031692831561203e576001600160a01b039081166000818152600360205260408082205497841680835291205490969195929182169116811561202d57801561201c5760a060049260405193848092633fabe5a360e21b82525afa80156102df5760008093600090600093611ff3575b506000851315611fe2578015908115611fcb575b50611fba576001600160501b03908116911610611fa95760a060049160405192838092633fabe5a360e21b82525afa80156102df5760008092600090600093611f72575b506000841315611f61578015908115611f4a575b50611f39576001600160501b03908116911610611f285760405163313ce56760e01b8152916020836004818a5afa9283156102df57600093611eec575b5060405163313ce56760e01b8152906020826004818c5afa80156102df578792600091611eac575b508060ff80921682871610159586600014611ea3570316935b60009015611e39575090611c6a9161210c565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715611e2357611caa611cb092611ca4670de0b6b3a76400009561211f565b9061210c565b90612130565b04915b611cd4611cc26001548561210c565b61ffff611ccd612232565b1690612130565b91611ce08582886122c9565b6040519161010083016001600160401b038111848210176119ea5760409081528784526020840189815262ffffff9a8b168583019081526001600160a01b0393841660608701908152426080880190815260a088018b815260c08901998a52600060e08a01908152955163414bf38960e01b81529851871660048a01529351861660248901529151909c1660448701529a518316606486015299516084850152985160a4840152925160c4830152965190911660e482015294859081905a92600061010492602095f19485156102df57600095611de1575b50600080516020612cd2833981519152916060916040519182528660208301526040820152a390565b90946020823d602011611e1b575b81611dfc602093836119c7565b81010312610c5a57505193600080516020612cd2833981519152611db8565b3d9150611def565b634e487b7160e01b600052601160045260246000fd5b929390611e4c611e5293611ca49261210c565b9161211f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715611e8f5750670de0b6b3a764000091611e8891612130565b0491611cb3565b634e487b7160e01b81526011600452602490fd5b90031693611c57565b9192506020823d602011611ee4575b81611ec8602093836119c7565b81010312610c5a57509060ff611ede88936120fe565b90611c3e565b3d9150611ebb565b90926020823d602011611f20575b81611f07602093836119c7565b81010312610c5a5750611f19906120fe565b9138611c16565b3d9150611efa565b6341e5331360e01b60005260046000fd5b639e2b8af160e01b60005260046000fd5b426201517f19810192508211611e23571038611bd9565b63673064c960e11b60005260046000fd5b92505050611f98915060a03d60a011611fa2575b611f9081836119c7565b8101906120bc565b9293915038611bc5565b503d611f86565b63b990920b60e01b60005260046000fd5b6365a5a82160e11b60005260046000fd5b426201517f19810192508211611e23571038611b81565b639c195b3760e01b60005260046000fd5b9250505061201191925060a03d60a011611fa257611f9081836119c7565b929493915038611b6d565b630895f47360e21b60005260046000fd5b63258f2d3d60e01b60005260046000fd5b635b25915560e11b60005260046000fd5b612068915060203d6020116103245761031681836119c7565b38611af5565b90506020813d6020116120a0575b81612089602093836119c7565b8101031261036e5761209a90611a4b565b38611a94565b3d915061207c565b51906001600160501b038216820361036e57565b908160a091031261036e576120d0816120a8565b916020820151916040810151916120ee6080606084015193016120a8565b90565b91908203918211611e2357565b519060ff8216820361036e57565b81810292918115918404141715611e2357565b60ff16604d8111611e2357600a0a90565b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b9081602091031261036e57516001600160a01b038116810361036e5790565b519061ffff8216820361036e57565b908160e091031261036e5780516001600160a01b038116810361036e579160208201518060020b810361036e57916121b86040820161216f565b916121c56060830161216f565b916121d26080820161216f565b916120ee60c06121e460a085016120fe565b9301611a4b565b91908201809211611e2357565b91908110156122085760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b038116810361036e5790565b60025460405163bd02d0f560e01b81527f6f8c752f16a50d13ae873620fdefd90c2c58e0d13a068366e5a1b685076b71bb600482015290602090829060249082906001600160a01b03165afa80156102df57600090612295575b61ffff91501690565b506020813d6020116122c1575b816122af602093836119c7565b8101031261036e5761ffff905161228c565b3d91506122a2565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa9081156102df576000916123c6575b5061233e9461234c6123216020946000946121eb565b6040519788918683019463095ea7b360e01b8652602484016128d4565b03601f1981018852876119c7565b85519082865af1903d60005190836123a7575b5050501561236c57505050565b610a086123a5936040519063095ea7b360e01b60208301526024820152600060448201526044815261239f6064826119c7565b826129b6565b565b919250906123bc57503b15155b38808061235f565b60019150146123b4565b90506020813d6020116123f2575b816123e1602093836119c7565b8101031261036e575161233e61230b565b3d91506123d4565b6002546040516321f8a72160e01b81527f992f90ffb92c5ad86f1df6829115f18aaea41d6094dadc8955c35086081a7bb9600482015290602090829060249082906001600160a01b03165afa9081156102df57600091612462575b506001600160a01b031690565b61247b915060203d6020116103245761031681836119c7565b38612455565b60020b908160ff1d82810118620d89e8811161279d5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116612781575b60048116612765575b60088116612749575b6010811661272d575b60208116612711575b604081166126f5575b608081166126d9575b61010081166126bd575b61020081166126a1575b6104008116612685575b6108008116612669575b611000811661264d575b6120008116612631575b6140008116612615575b61800081166125f9575b6201000081166125dd575b6202000081166125c2575b6204000081166125a7575b620800001661258e575b600012612585575b0160201c90565b6000190461257e565b6b048a170391f7dc42444e8fa290910260801c90612576565b6d2216e584f5fa1ea926041bedfe9890920260801c9161256c565b916e5d6af8dedb81196699c329225ee6040260801c91612561565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91612556565b916f31be135f97d08fd981231505542fcfa60260801c9161254b565b916f70d869a156d2a1b890bb3df62baf32f70260801c91612541565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91612537565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161252d565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612523565b916ff3392b0822b70005940c7a398e4b70f30260801c91612519565b916ff987a7253ac413176f2b074cf7815e540260801c9161250f565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91612505565b916ffe5dee046a99a2a811c461f1969c30530260801c916124fb565b916fff2ea16466c96a3843ec78b326b528610260801c916124f2565b916fff973b41fa98c081472e6896dfb254c00260801c916124e9565b916fffcb9843d60f6159c9db58835c9266440260801c916124e0565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916124d7565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916124ce565b916ffff97272373d413259a46990580e213a0260801c916124c5565b826345c3193d60e11b60005260045260246000fd5b6002546040516321f8a72160e01b81527f9d0862347ec5034f12a729a07315fc37fb0ad232fb16b27a10fce56899181a56600482015290602090829060249082906001600160a01b03165afa9081156102df5760009161246257506001600160a01b031690565b6002546040516321f8a72160e01b81527f6878742ff510854cb02c186504af5267007c4a6d33f490fc28ec83e83e1458e1600482015290602090829060249082906001600160a01b03165afa9081156102df57600091612877575090565b6120ee915060203d6020116103245761031681836119c7565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526123a591610a086084836119c7565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b039182169082160391908211611e2357565b6120ee9291906001600160a01b0380831690821611612945575b6001600160a01b039161293591906128ef565b16906001600160801b0316612aa8565b90612922565b6120ee92909161299f91906001600160a01b03808216908516116129b0575b6001600160a01b0361297c85836128ef565b6001600160a01b039092169291169060601b600160601b600160e01b0316612b7f565b6001600160a01b0390911690612130565b9261296a565b906000602091828151910182855af1156102df576000513d612a0857506001600160a01b0381163b155b6129e75750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b600114156129e0565b6120ee92612a499290916001600160a01b0380831690821611612a4e575b6001600160a01b0391612a4291906128ef565b1690612af2565b612c02565b90612a2f565b6120ee92612a49929091906001600160a01b0380821690831611612aa2575b612a9b612a8c6001600160a01b03838116908516612aa8565b926001600160a01b03926128ef565b1691612b7f565b90612a73565b818102919060001982820991838084109303928084039384600160601b111561036e5714612ae957600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90606082901b90600019600160601b84099282808510940393808503948584111561036e5714612b78578190600160601b9009818060000316809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b5091500490565b91818302916000198185099383808610950394808603958685111561036e5714612bfa5790829109818060000316809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b505091500490565b6001600160801b03811691908203612c1657565b60405162461bcd60e51b81526020600482015260126024820152716c6971756964697479206f766572666c6f7760701b6044820152606490fd5b90612c765750805115612c6557805190602001fd5b63d6bda27560e01b60005260046000fd5b81511580612ca8575b612c87575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15612c7f56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc56954068a083528ab6b77b9000bdcd8e93373297506f9510bc30e3b0542c5f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b3b3a67284b4f948efadd5184aaa9d1c5d4deaa21a0f81d1c1749ff0c396615e64736f6c634300081e0033