1.5k txs
6k calls
constructor
constructor(address owner_, address arcadiaFactory, address routerTrampoline, address positionManager, address uniswapV3Factory)
functions
accountInfo
viewfunction accountInfo(address account) view returns (uint64 maxClaimFee, uint64 maxSwapFee, uint64 upperSqrtPriceDeviation, uint64 lowerSqrtPriceDeviation, uint64 minLiquidityRatio)
accountToInitiator
viewfunction accountToInitiator(address accountOwner, address account) view returns (address initiator)
ARCADIA_FACTORY
viewfunction ARCADIA_FACTORY() view returns (address)
guardian
viewfunction guardian() view returns (address)
isPoolBalanced
purefunction isPoolBalanced(uint256 sqrtPrice, tuple cache) pure returns (bool isBalanced)
isPositionManager
viewfunction isPositionManager(address positionManager) view returns (bool)
metaData
viewfunction metaData(address account) view returns (bytes data)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ROUTER_TRAMPOLINE
viewfunction ROUTER_TRAMPOLINE() view returns (address)
changeGuardian
nonpayablefunction changeGuardian(address guardian_)
compound
nonpayablefunction compound(address account_, tuple initiatorParams)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
pause
nonpayablefunction pause()
setAccountInfo
nonpayablefunction setAccountInfo(address account_, address initiator, uint256 maxClaimFee, uint256 maxSwapFee, uint256 maxTolerance, uint256 minLiquidityRatio, bytes metaData_)
setPauseFlag
nonpayablefunction setPauseFlag(bool paused_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
AccountInfoSet
event AccountInfoSet(address indexed account, address indexed initiator)
Compound
event Compound(address indexed account, address indexed positionManager, uint256 id)
FeePaid
event FeePaid(address indexed account, address indexed receiver, address indexed asset, uint256 amount)
GuardianChanged
event GuardianChanged(address indexed user, address indexed newGuardian)
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
PauseFlagsUpdated
event PauseFlagsUpdated(bool pauseUpdate)
YieldClaimed
event YieldClaimed(address indexed account, address indexed asset, uint256 amount)
errors
InsufficientLiquidity
error InsufficientLiquidity()
InvalidInitiator
error InvalidInitiator()
InvalidPositionManager
error InvalidPositionManager()
InvalidValue
error InvalidValue()
NotAnAccount
error NotAnAccount()
OnlyAccount
error OnlyAccount()
OnlyAccountOwner
error OnlyAccountOwner()
OnlyGuardian
error OnlyGuardian()
OnlyPool
error OnlyPool()
Paused
error Paused()
Reentered
error Reentered()
UnbalancedPool
error UnbalancedPool()
creation bytecode
0x6101003461015257601f61446e38819003918201601f19168301916001600160401b038311848410176101565780849260a094604052833981010312610152576100488161016a565b6100546020830161016a565b916100616040820161016a565b61007960806100726060850161016a565b930161016a565b5f80546001600160a01b0319166001600160a01b039095169485178155604051959194907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36001600160a01b0390811660805290811660a0521660c05260e0526142ef908161017f823960805181818161198101526121fb015260a0518181816102a60152613202015260c0518181816106c901528181610a1001528181610e8101528181610ec901528181610f8701528181611b340152818161201f0152612758015260e05181818161017601526107b40152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101525756fe610140806040526004361015610013575f80fd5b5f610120525f3560e01c9081630686ddd91461278c575080630a73e391146127385780631204f525146126e5578063150b7a021461268f5780632fcb4f041461261c5780633d692da11461216d578063452a9320146121455780635c975abb146121215780637d5ad9cd14611a585780638456cb59146119b05780638cffa277146119695780638da5cb5b1461193c5780638da92e71146118b7578063a129568d146103dc578063a7310b5814610354578063a89d6dd4146102d5578063b699b82b1461028e578063f2fde38b1461020d5763fa461e33146100f3575f80fd5b34610206576060366003190112610206576024356004356044356001600160401b0381116102065761012b606091369060040161295d565b90809291810103126102065761014081612896565b92604061014f60208401612896565b9201359362ffffff85168503610206576001600160a01b039283169492169161019a9085847f000000000000000000000000000000000000000000000000000000000000000061334d565b336001600160a01b03909116036101f157610120518313156101ca57506101c392503390613412565b6101205180f35b9150506101205181136101df575b50506101c3565b6101ea913390613412565b5f806101d8565b634b60273560e01b6101205152600461012051fd5b6101205180fd5b346102065760203660031901126102065761022661286a565b610120515490610240336001600160a01b03841614612a47565b60018060a01b031680916001600160601b0360a01b16176101205155337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06101205161012051a36101205180f35b346102065761012051366003190112610206576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102065760a0366003190112610206576080366023190112610206576040516102fe816128fd565b602435815260443560208201526064356001600160a01b03811681036102065760408201526084356001600160a01b0381168103610206578161034a9160606020940152600435612c02565b6040519015158152f35b34610206576020366003190112610206576001600160a01b0361037561286a565b166101205152600360205260a0604061012051206001600160401b036001825492015416604051916001600160401b03811683526001600160401b038160401c1660208401526001600160401b038160801c16604084015260c01c60608301526080820152f35b34610206576020366003190112610206576004356001600160401b0381116102065761040c90369060040161295d565b90610415612b35565b506002546001600160a01b031633036118a257336101205152600360205260406101205120916001600160401b03600160405194610452866128e2565b80548381168752838160401c166020880152838160801c16604088015260c01c6060870152015416608084015260408282810103126102065761049482612896565b610100526020820135916001600160401b038311610206576101008382018383010312610206576040519261010084018481106001600160401b038211176113a7576040526104e4818301612896565b84526104f4602082840101612af9565b6020850152610507604082840101612b0d565b604085015261051a606082840101612b0d565b606085015260808183010135608085015261053960a082840101612b21565b60a085015261054c60c082840101612b21565b60c085015260e081830101356001600160401b03811161020657838301601f828486010101121561020657610585818385010135612b59565b936105936040519586612918565b8383018201803580875291850191016020011161020657602091838101820180359084018685013761012051930101358301015260e082015260018060a01b03815116916001600160401b0360a0830151166001600160401b0382511610801561187f575b61186a576001600160601b036020830151169160405161014081018181106001600160401b038211176113a7576040526101205181526101205160208201526101205160408201526101205160608201526101205160808201526101205160a08201526101205160c08201526101205160e082015261012051610100820152606061012082015260609360405161068f8682612918565b60028152601f1986013660208301376101208301526020820181905260405163133f757160e31b81526004810191909152610180816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156113375761012051908190819081908190819061181d575b6107609596509062ffffff92916001600160801b036101208a0151961660e08a015260020b60a089015260020b60c088015216604086015261074e82612bde565b6001600160a01b039091169052612bbd565b6001600160a01b03918216905261012082015160049160e09161078290612bbd565b51166107d860018060a01b0361079c610120870151612bde565b51169160018060a01b039262ffffff604088015116917f000000000000000000000000000000000000000000000000000000000000000061334d565b1680845260405192838092633850c7bd851b82525afa801561133757610120519182916117f7575b5060020b60808301526001600160a01b0390811661010083015281516040516334324e9f60e21b81529160209183916004918391165afa9081156113375761012051916117bd575b5060020b606082015261086061012082015151612b8b565b916001600160801b0360408201511661087884612bbd565b526001600160801b0360608201511661089084612bde565b5261089b8351612b8b565b936080820151906040516108ae816128fd565b61012051815261012051602082015261012051604082015287610120519101526001600160401b0360608201511691825f19048111830215670de0b6b3a76400000215610206576001600160401b03604083015116805f19048211810215670de0b6b3a7640000021561020657670de0b6b3a764000061093460c088015160020b6134a4565b9161094560a089015160020b6134a4565b938260405197610954896128fd565b8202048752020460208501526001600160a01b0390811660408501521687830152610100840151610986908390612c02565b156113e7576001600160401b0360a084015116602085015191604051926109ac846128fd565b83526001600160801b036020840130815281604086018181528c8701928284526040519763fc6f786560e01b895251600489015260018060a01b03905116602488015251166044860152511660648401526040836084816101205160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113375761012051938491611788575b50610a5884610a528a612bbd565b51612aa3565b610a6189612bbd565b52610a6f81610a528a612bde565b610a7889612bde565b52825f19048411830215670de0b6b3a7640000021561020657610aaa670de0b6b3a764000084860204610a528b612bbd565b610ab38a612bbd565b52825f19048111830215670de0b6b3a76400000215610206576001600160401b0393610af0670de0b6b3a7640000608095840204610a528c612bde565b610af98b612bde565b526101208801516001600160a01b0390610b1290612bbd565b5116906040519081527ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd760203392a36101208701516001600160a01b0390610b5990612bde565b5116906040519081527ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd760203392a3015160408581015160c08601516001600160401b031660e052610100870151918501516001600160a01b0390811660a0528a86015162ffffff9092169594929391169116610be9610bd889612bbd565b51610be28b612bbd565b5190612ab0565b91610c00610bf68a612bde565b51610be28c612bde565b60c052604051610c0f816128e2565b61012080518252805160208301528051604083015280518d8301528051608090920191909152518185106114ef5750600192809661012051506001600160801b03861161020657815f190464e8d4a51000820260e05101670de0b6b3a76400000311820215670de0b6b3a7640000021561020657610cb390610c8f613d42565b90670de0b6b3a76400008464e8d4a5100060028b0a930260e0510182030204613f2a565b945b6001600160a01b031690878686156114de5750610cd191612ab0565b905b84156114cd57610ce58660c051612aa3565b60a0519391828086116114bf575b506001600160a01b0385168111611460575050610d0f92613e10565b6001600160801b03811690810361145c57925b815f19046001600160801b03851611820215670de0b6b3a764000002156102065760e0515f1904861160e0510215670de0b6b3a7640000021561020657670de0b6b3a764000096600496610df09587958b948f6040519c8d98610d848a6128e2565b8415158a526001600160801b0360208b01968360e0518a0204885260408c0160805216020460805152670de0b6b3a764000060e051860204850390880152608087015215155f1461143157610dde915051610a528d612bbd565b610de78c612bbd565b525b8a8a612e48565b8351604051633850c7bd60e01b81529260e09184919082906001600160a01b03165afa801561133757610e3e9261012051916113fc575b506001600160a01b03166101008501819052612c02565b156113e75751156113c157610e5282612bbd565b51610e69610e5f84612bde565b51610be286612bde565b905b610120830151610eb39082906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691610eac90612bbd565b5116613bfe565b610120830151610ef49083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691610eac90612bde565b6020830151916040519260c084018481106001600160401b038211176113a75760405283526020830191825260408301908152868301610120518152608084019161012051835260a08501934285526040519563219f5d1760e01b87525160048701525160248601525160448501525160648401525160848301525160a4820152848160c4816101205160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561133757610120516101205192610120519261135a575b50610ffb926001600160801b03610fe8921660e0860152610fe286612bbd565b51612ab0565b610ff185612bbd565b52610fe284612bde565b61100483612bde565b526001600160801b0360e0820151166080515111611345576020810151853b156102065760405163095ea7b360e01b815233600482015260248101919091526101205181604481838a5af180156113375761131c575b5061012051600195905b8351811015611198576101208301516001600160a01b0390611087908390612bee565b5116966110948286612bee565b5161109f8388612bee565b51101561116957906110ea6001926110c56110ba8489612bee565b51610be2858b612bee565b6110cf8489612bee565b526110e56110dd8489612bee565b51338c613bfe565b612da7565b975b6110f68288612bee565b51611145575b6111068288612bee565b51604051908152838060a01b036101005116907f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e05663160203392a401611064565b6111646111528389612bee565b51848060a01b03610100511683613412565b6110fc565b96906001916111788287612bee565b516111838389612bee565b52610120516111928388612bee565b526110ec565b5092509092602082015190610120830151956111b2612b35565b506111bc81612b8b565b956111c682612b8b565b9760016111d284612b8b565b936111dc81612b8b565b96896111e78c612bbd565b526111f18c612bbd565b52816111fc86612bbd565b52600261120888612bbd565b521161127c575b50509060209392916112789760405197611228896128fd565b885285880152604087015285015201516040519081527f6c7e7d4cb83a668aef31739dd35dc3fc3d5f31d62b69e438b7b24d35b40dcc6360203392a36040519182916020835260208301906129bd565b0390f35b9296939190956001956101205150610120515b8851811015611306576112a2818a612bee565b516112b0575b60010161128f565b966001906112fe906001600160a01b036112ca8b8a612bee565b51166112d6828b612bee565b526112e18a8c612bee565b516112ec8288612bee565b52826112f88289612bee565b52612da7565b9790506112a8565b509497909650939450909291508061127861120f565b6101205161132991612918565b61012051610206578561105a565b6040513d61012051823e3d90fd5b63bb55fd2760e01b6101205152600461012051fd5b925050508481813d83116113a0575b6113738183612918565b810103126102065780610fe861138b610ffb93612ceb565b60208301516040909301519293909150610fc2565b503d611369565b634e487b7160e01b61012051526041600452602461012051fd5b6113d76113cd83612bbd565b51610be285612bbd565b6113e083612bde565b5190610e6b565b633a8bf65960e01b6101205152600461012051fd5b61141e915060e03d60e01161142a575b6114168183612918565b810190612dc4565b50505050505089610e27565b503d61140c565b50670de0b6b3a764000061144d9160e0510204610a528d612bde565b6114568c612bde565b52610de9565b5f80fd5b909290916001600160a01b0381168310156114b35782916114859161148b9594613e10565b93613ddf565b808210156114ac57505b6001600160801b03811690810361145c5792610d22565b9050611495565b91505061149592613ddf565b60a05190955092505f610cf3565b6114d98860c051612ab0565b610ce5565b90506114e991612aa3565b90610cd3565b60a051909390851161151c5761151664e8d4a5100060c051980260e0510160c05187613d8b565b94610cb5565b939592506001600160801b038611610206576002860a9361153d8286613c7a565b60a0518860011b0303937812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2160a051890311670de0b6b3a764000002158502156102065761159f6115976115888a613c84565b611590613d42565b9085613f2a565b60c051612aa3565b947812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2160c05111670de0b6b3a764000002158602156102065780670de0b6b3a764000060a0518b03020486670de0b6b3a764000060c0510204105f146116d957611666611675916001978b61163d64e8d4a51000870260e05101670de0b6b3a76400000364e8d4a51000880260e0510185670de0b6b3a764000060a0518603020461348f565b670de0b6b3a76400000192670de0b6b3a7640000838160c05102049260a051900302040361348f565b9661166f613d42565b88613f2a565b907812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021564e8d4a51000820260e05101670de0b6b3a76400000302156102065764e8d4a51000670de0b6b3a7640000910260e05101810391020496610cb5565b9490979550610120519464e8d4a51000890260e051015f190481670de0b6b3a764000060a0518a0302041164e8d4a510008a0260e051010215670de0b6b3a764000002156102065761177b64e8d4a510009161151693670de0b6b3a7640000848d0260e0510183828d60a051900302040204670de0b6b3a76400000391670de0b6b3a764000060a0518c03020481670de0b6b3a764000060c05102040361348f565b980260e051018887613d8b565b90506117ad91935060403d6040116117b6575b6117a58183612918565b810190612e32565b9290928b610a44565b503d61179b565b90506020813d6020116117ef575b816117d860209383612918565b81010312610206576117e990612cdd565b86610848565b3d91506117cb565b9050611812915060e03d60e01161142a576114168183612918565b505050505087610800565b50505050505061076061184b62ffffff926101803d8111611863575b6118438183612918565b810190612cff565b5050505096509194509196929693925086955061070d565b503d611839565b632a9ffab760e21b6101205152600461012051fd5b506001600160401b0360c0830151166001600160401b03602083015116106105f8565b63f3f6425d60e01b6101205152600461012051fd5b34610206576020366003190112610206576004358015158091036102065761012051547f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a91602091611913336001600160a01b03831614612a47565b6101205160ff60a01b1990911660a083901b60ff60a01b16179055604051908152a16101205180f35b3461020657610120513660031901126102065761012051546040516001600160a01b039091168152602090f35b346102065761012051366003190112610206576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102065761012051366003190112610206576001546001600160a01b03163303611a4357610120515460ff8160a01c16611a2e576101205160ff60a01b19909116600160a01b179055604051600181527f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a90602090a16101205180f35b6313d0ff5960e31b6101205152600461012051fd5b636570ecab60e11b6101205152600461012051fd5b3461145c57604036600319011261145c57611a7161286a565b602435906001600160401b03821161145c578160040182360361010060031982011261145c5760ff5f5460a01c1661211257600254926001600160a01b038416612103576001600160a01b03166001600160a01b0319939093168317600255604051638da5cb5b60e01b81526020816004815f885af1908115611f0c575f916120c9575b506001600160a01b039081165f9081526005602090815260408083208784529091529020541633036120ba57611b2a82612abd565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116036120ab575f5f60448601956001600160801b03611b7488612ad1565b161580159061208e575b611fe1575b611b8c85612abd565b916024820191611b9b83612ae5565b95611ba58a612ad1565b996064830190611bb482612ad1565b60408051336020820152808201919091529a9096906001600160a01b0390611bdb90612896565b1660608c0152611bea90612af9565b6001600160601b031660808b0152611c0190612b0d565b6001600160801b031660a08a0152611c1890612b0d565b6001600160801b031660c0890152608482013560e0890152611c3c60a48301612b21565b6001600160401b0316610100890152611c5760c48301612b21565b6001600160401b031661012089015260e4820135906022190181121561145c5701602460048201359101906001600160401b03811161145c57803603821361145c576001600160601b0399611ce96101808a846001600160801b039695879661010061014085015281610160850152848401375f838284010152601f801991011681010301601f1981018b528a612918565b169216916001948115159182611fd8575b8415159182611fc8575b611d0d88612b8b565b9b8c99611d198a612b8b565b98611d35611d2f611d298d612b8b565b9c612b8b565b9c612bbd565b6001600160a01b03909116905216611d4c88612bbd565b526001611d5889612bbd565b526002611d648a612bbd565b52600193611f8e575b5050611f59575b50505060405195611d84876128fd565b8652602086015260408501526060840152611d9d612b35565b60405190606082018281106001600160401b03821117611f455790611def9592916040526060825260208201905f8252611e0160408401915f835260405198899660a0602089015260c08801906129bd565b868103601f19016040880152906129bd565b91601f19858403016060860152606083019351936060845284518091526020608085019501905f5b818110611f1757505050916040611e8c9492611e9a979451602084015251910152601f19848203016080850152606051808252806080602084015e5f828201602090810191909152601f909101601f191690910184810360a08601520190612939565b03601f198101845283612918565b803b1561145c576040805162b9252f60e41b81523060048201526024810191909152905f908290818381611ed16044820189612939565b03925af18015611f0c57611ef7575b600280546001600160a01b03191690556101205180f35b5f611f0191612918565b5f6101205280611ee0565b6040513d5f823e3d90fd5b825180516001600160a01b03168852602090810151818901528b985060409097019690920191600101611e29565b634e487b7160e01b5f52604160045260245ffd5b600192611f8592611f6a838c612bee565b90858060a01b03169052611f7e8287612bee565b5285612bee565b52868080611d74565b90919250611f9b8b612bde565b6001600160a01b039091169052611fb186612bde565b526001611fbd87612bde565b526002908a80611d6d565b96611fd290612da7565b96611d04565b60029650611cfa565b915050611fed83612abd565b506001600160601b0361200260248301612ae5565b60405163133f757160e31b815291166004820152610180816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611f0c575f915f91612060575b509091611b83565b905061207b91506101803d8111611863576118438183612918565b5050505050505050925090509087612058565b506001600160801b036120a360648301612ad1565b161515611b7e565b63ed5f09f160e01b5f5260045ffd5b6317fb43e560e31b5f5260045ffd5b90506020813d6020116120fb575b816120e460209383612918565b8101031261145c576120f590612a8f565b85611af5565b3d91506120d7565b63b5dfd9e560e01b5f5260045ffd5b6313d0ff5960e31b5f5260045ffd5b3461145c575f36600319011261145c57602060ff5f5460a01c166040519015158152f35b3461145c575f36600319011261145c576001546040516001600160a01b039091168152602090f35b3461145c5760e036600319011261145c5761218661286a565b61218e612880565b6084359160643560443560a43560c4356001600160401b03811161145c576121ba90369060040161295d565b60025491979094916001600160a01b031661210357604051630972932760e21b81526001600160a01b039687166004820181905296602090829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115611f0c575f916125e2575b50156125d357604051638da5cb5b60e01b81526020816004815f8b5af1908115611f0c575f91612599575b506001600160a01b03163381900361258a57670de0b6b3a764000085118015612579575b8015612568575b8015612557575b612548575f52600560205260405f20865f5260205260405f209660018060a01b031696876001600160601b0360a01b82541617905580670de0b6b3a76400000180670de0b6b3a76400001161253457670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612534576123096001600160401b0391612c1b565b169281670de0b6b3a76400000391670de0b6b3a7640000831161253457670de0b6b3a76400008302928304670de0b6b3a76400001490670de0b6b3a7640000141715612534576001600160401b0393600193856123668195612c1b565b169084604051986123768a6128e2565b1688528460208901911681526040880192835260608801918252846080890194168452895f526003602052848060405f209951161685198954161788555191846fffffffffffffffff00000000000000008954928260801b905160801b16938260c01b905160c01b169460401b16911617171785555116920191166001600160401b0319825416179055815f52600460205260405f20906001600160401b038111611f455761242582546128aa565b601f81116124ef575b505f601f821160011461248c5781929394955f92612481575b50508160011b915f199060031b1c19161790555b7febc70f7c8d6a67b19e15e968cb908d21719e8ff9a778a71171fba931a618d0525f80a3005b013590508580612447565b601f19821695835f5260205f20915f5b8881106124d7575083600195969798106124be575b505050811b01905561245b565b01355f19600384901b60f8161c191690558580806124b1565b9092602060018192868601358155019401910161249c565b825f5260205f20601f830160051c8101916020841061252a575b601f0160051c01905b81811061251f575061242e565b5f8155600101612512565b9091508190612509565b634e487b7160e01b5f52601160045260245ffd5b632a9ffab760e21b5f5260045ffd5b50670de0b6b3a76400008411612288565b50670de0b6b3a76400008211612281565b50670de0b6b3a7640000831161227a565b6312272fd360e11b5f5260045ffd5b90506020813d6020116125cb575b816125b460209383612918565b8101031261145c576125c590612a8f565b89612256565b3d91506125a7565b630ea8370b60e41b5f5260045ffd5b90506020813d602011612614575b816125fd60209383612918565b8101031261145c5761260e90612a82565b8961222b565b3d91506125f0565b3461145c57602036600319011261145c5761263561286a565b61264960018060a01b035f54163314612a47565b600180546001600160a01b0319166001600160a01b03929092169182179055337fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9675f80a3005b3461145c57608036600319011261145c576126a861286a565b506126b1612880565b506064356001600160401b03811161145c576126d190369060040161295d565b5050604051630a85bd0160e11b8152602090f35b3461145c57604036600319011261145c576126fe61286a565b612706612880565b6001600160a01b039182165f908152600560209081526040808320938516835292815290829020549151919092168152f35b3461145c57602036600319011261145c57602061275361286a565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b3461145c57602036600319011261145c576001600160a01b036127ad61286a565b165f52600460205260405f205f908054906127c7826128aa565b80855291600181169081156128435750600114612803575b611278846127ef81860382612918565b604051918291602083526020830190612939565b5f90815260208120939250905b808210612829575090915081016020016127ef826127df565b919260018160209254838588010152019101909291612810565b60ff191660208087019190915292151560051b850190920192506127ef91508390506127df565b600435906001600160a01b038216820361145c57565b602435906001600160a01b038216820361145c57565b35906001600160a01b038216820361145c57565b90600182811c921680156128d8575b60208310146128c457565b634e487b7160e01b5f52602260045260245ffd5b91607f16916128b9565b60a081019081106001600160401b03821117611f4557604052565b608081019081106001600160401b03821117611f4557604052565b90601f801991011681019081106001600160401b03821117611f4557604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f8401121561145c578235916001600160401b03831161145c576020838186019501011161145c57565b90602080835192838152019201905f5b8181106129a75750505090565b825184526020938401939092019160010161299a565b80516080808452815190840181905260a08401949391602001905f5b818110612a28575050506060612a14612a02612a2595966020860151858203602087015261298a565b6040850151848203604086015261298a565b92015190606081840391015261298a565b90565b82516001600160a01b03168752602096870196909201916001016129d9565b15612a4e57565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b5190811515820361145c57565b51906001600160a01b038216820361145c57565b9190820180921161253457565b9190820391821161253457565b356001600160a01b038116810361145c5790565b356001600160801b038116810361145c5790565b356001600160601b038116810361145c5790565b35906001600160601b038216820361145c57565b35906001600160801b038216820361145c57565b35906001600160401b038216820361145c57565b60405190612b42826128fd565b606080838181528160208201528160408201520152565b6001600160401b038111611f4557601f01601f191660200190565b6001600160401b038111611f455760051b60200190565b90612b9582612b74565b612ba26040519182612918565b8281528092612bb3601f1991612b74565b0190602036910137565b805115612bca5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015612bca5760400190565b8051821015612bca5760209160051b010190565b815181119182612c1157505090565b6020015111919050565b60b581600160881b811015612cc6575b80690100000000000000000062010000921015612cb9575b65010000000000811015612cac575b6301000000811015612c9f575b010260121c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8080920410900390565b60101c9160081b91612c5f565b60201c9160101b91612c52565b60401c9160201b91612c43565b5068b500000000000000009050608082901c612c2b565b51908160020b820361145c57565b51906001600160801b038216820361145c57565b91908261018091031261145c5781516001600160601b038116810361145c5791612d2b60208201612a8f565b91612d3860408301612a8f565b91612d4560608201612a8f565b91608082015162ffffff8116810361145c5791612d6460a08201612cdd565b91612d7160c08301612cdd565b91612d7e60e08201612ceb565b916101008201519161012081015191612a25610160612da06101408501612ceb565b9301612ceb565b5f1981146125345760010190565b519061ffff8216820361145c57565b908160e091031261145c5780516001600160a01b038116810361145c5791612dee60208301612cdd565b91612dfb60408201612db5565b91612e0860608301612db5565b91612e1560808201612db5565b9160a082015160ff8116810361145c5760c0612a25919301612a82565b919082604091031261145c576020825192015190565b94909391929360608301938451156133445760e0015180518061312357505082511515906040860194600462ffffff87511692602060018060a01b038a511660405193848092630d34328160e11b82525afa8015611f0c578a925f916130e2575b506101008a01516040880151606090980151612f05986001600160a01b0391821694908216939190921691612ef790610be2612ef0612eea6113cd8a612bbd565b98612bde565b5191612bde565b95519660808b0151986137d1565b9182156130db57612ff992604092511515945f612f2b60018060a01b0383511693613bee565b8782146130ba57612fb76101206401000276a4945b01612fa962ffffff60018060a01b03612f598451612bbd565b5193519316926001600160a01b0390612f7190612bde565b5199518b516001600160a01b03958616602082015291909a16909316604084015290971662ffffff1660608201529586906080820190565b03601f198101875286612918565b855196879586948593630251596160e31b85523060048601528b6024860152604485015260018060a01b0316606484015260a0608484015260a4830190612939565b03925af1908115611f0c575f905f9261307d575b50613058929081156130685761302690610fe286612bbd565b61302f85612bbd565b521561305b576130529061304c61304585612bde565b5191613bee565b90612aa3565b91612bde565b52565b61305290610fe284612bde565b6130789061304c61304587612bbd565b613026565b9150506040813d6040116130b2575b8161309960409383612918565b8101031261145c5780516020909101519061305861300d565b3d915061308c565b612fb761012073fffd8963efd1fc6a506488495d951d5263988d2594612f40565b5050505050565b9250506020823d60201161311b575b816130fe60209383612918565b8101031261145c57612f05956131148b93612ceb565b9096612ea9565b3d91506130f1565b9593925095935050511515928401906060856020840193031261145c5760208501516001600160a01b0381169081900361145c576040860151956060810151906001600160401b03821161145c57019083603f8301121561145c5760208201519161318d83612b59565b9461319b6040519687612918565b8386526040828501011161145c576040935f60208561325a96886101209601838b015e8801015287156133105701935f60018060a01b036131dc8751612bbd565b5196519616956001600160a01b03906131f490612bde565b5116955b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169491166132318b8683613412565b8651978896879586946344bc658560e01b8652600486015260a0602486015260a4850190612939565b60448401929092526001600160a01b03166064830152608482018b905203925af1928315611f0c575f915f946132ed575b50156132c7576132ae6132b8916132a96130589596610fe286612bbd565b612aa3565b93610a5283612bde565b6132c182612bde565b52612bbd565b6132e8906132a96132de61305895610a5286612bbd565b95610fe285612bde565b6132b8565b909350613309915060403d6040116117b6576117a58183612918565b925f61328b565b01935f60018060a01b036133248751612bde565b5196519616956001600160a01b039061333c90612bbd565b5116956131f8565b50505050505050565b9290916001600160a01b03808216908416101561145c57604080516001600160a01b0394851660208201908152929094169084015262ffffff919091166060808401919091528252906133a1608082612918565b5190209060405191602083019160ff60f81b83526001600160601b03199060601b16602184015260358301527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54605583015260558252613402607583612918565b905190206001600160a01b031690565b60405163a9059cbb60e01b81526001600160a01b03909216600483015260248201929092526020915f9160449183905af13d15601f3d1160015f51141617161561345857565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b815f1904811182021583021561145c57020490565b60020b908160ff1d82810118620d89e881116137be5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166137a2575b60048116613786575b6008811661376a575b6010811661374e575b60208116613732575b60408116613716575b608081166136fa575b61010081166136de575b61020081166136c2575b61040081166136a6575b610800811661368a575b611000811661366e575b6120008116613652575b6140008116613636575b618000811661361a575b6201000081166135fe575b6202000081166135e3575b6204000081166135c8575b62080000166135af575b5f126135a7575b0160201c90565b5f19046135a0565b6b048a170391f7dc42444e8fa290910260801c90613599565b6d2216e584f5fa1ea926041bedfe9890920260801c9161358f565b916e5d6af8dedb81196699c329225ee6040260801c91613584565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613579565b916f31be135f97d08fd981231505542fcfa60260801c9161356e565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613564565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161355a565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613550565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91613546565b916ff3392b0822b70005940c7a398e4b70f30260801c9161353c565b916ff987a7253ac413176f2b074cf7815e540260801c91613532565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613528565b916ffe5dee046a99a2a811c461f1969c30530260801c9161351e565b916fff2ea16466c96a3843ec78b326b528610260801c91613515565b916fff973b41fa98c081472e6896dfb254c00260801c9161350c565b916fffcb9843d60f6159c9db58835c9266440260801c91613503565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916134fa565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916134f1565b916ffff97272373d413259a46990580e213a0260801c916134e8565b826345c3193d60e11b5f5260045260245ffd5b93929597949091965f945b606486106137f1575050505050505050505090565b9091929394959697989984620f42400397885f19048111890215620f4240021561145c57620f4240908902048215613bbd576001600160a01b0390613837908c8c614009565b16906001600160a01b038111613b715760601b6001600160801b038b1680820615159104015b6001600160a01b038a169080821115613b645790036001600160a01b03165b8215613b46570160011c6001600160a01b0316945b6001600160a01b0386811690851681106138c95750505050505050506138bd6138c491612a25956140d9565b8383614009565b614205565b60018060a09d9c9b9a939495969798999d1b0383161015613b1d578215613afc576138fe906138f98a8a8a6141a5565b6140fc565b9961390a898989614205565b965b87908c8c838715613ac9575050808d1115613abf5761392f908d035b8883613e10565b61393c8a88018387613ddf565b995b8a82109a8b15613a7e577812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a7640000021581021561145c5780670de0b6b3a76400008402049b5b15613a375750506001600160801b03811690810361145c576139a79185614231565b908415613a2d57859190828211156139ef5750035b620f4240819c98670de0b6b3a764000003106139e0575060010194929093916137dc565b9a505050505050505050505090565b915050600a60097f1c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c7183110215021561145c576009600a9102046139bc565b9b5084039a6139bc565b90939e9291506001600160801b03811690810361145c5788613a58926141a5565b918515613a695750508a039a6139bc565b8c92919d508282115f146139ef5750036139bc565b7812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218111670de0b6b3a7640000021583021561145c5782670de0b6b3a76400008202049b613985565b5061392f5f613928565b613ad591018984613e10565b9080881115613af257613aec9088035b8387613ddf565b9961393e565b50613aec5f613ae5565b613b0b906138f98a898b614231565b99613b1789888a61413b565b9661390c565b945050509050612a259650613b4093949550613b3992506140d9565b8383614083565b9061413b565b6001600160a01b039180820160011c91600291081515011694613891565b634323a5555f526004601cfd5b6001600160801b038b16613b8a81600160601b84613f2a565b918115613ba957600160601b90091561385d576001018061385d575f80fd5b634e487b7160e01b5f52601260045260245ffd5b906001600160a01b0390613bd2908c8c613faa565b16906001600160a01b0390613be8908c8c614083565b1661387c565b600160ff1b8114612534575f0390565b906014528160345263095ea7b360601b5f5260205f6044601082855af13d1560015f5114171615613c32575b50505f603452565b604460105f80936020958260345263095ea7b360601b83528238868683865af1506034525af13d1560015f5114171615613c6d575f80613c2a565b633e3f8f735f526004601cfd5b8115613ba9570490565b5f908015613d3c578080600114613d3457600214613d2d5760016101338210166001600b83101617613d1f579060019060025b60018111613ce35750825f19048211613ccf57500290565b634e487b7160e01b81526011600452602490fd5b92805f19048111613d0b5760018416613d02575b80029260011c613cb7565b80920291613cf7565b634e487b7160e01b82526011600452602482fd5b6002900a919080613ccf5750565b5050600490565b505050600190565b50505f90565b600160601b600160025b60018111613d635750815f19048111612534570290565b91805f190481116125345760018316613d82575b80029160011c613d4c565b80910290613d77565b90916001600160801b03821161145c57670de0b6b3a76400000390825f19048211830215670de0b6b3a7640000021561145c57670de0b6b3a7640000612a25936002613dd5613d42565b930a930204613f2a565b612a259291906001600160a01b0380831690821611613e0a575b90036001600160a01b031690613e57565b90613df9565b612a2592916001600160a01b0380821690831611613e51575b613e3f6001600160a01b03828116908416613ee1565b9190036001600160a01b031691613f2a565b90613e29565b90606082901b905f19600160601b84099282808510940393808503948584111561145c5714613eda578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b111561145c5714613f2157600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f198185099383808610950394808603958685111561145c5714613fa2579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b91908115614004576001600160a01b03909216918183029160609190911b600160601b600160e01b031690820483148282111615613ff757612a2592613ff29282039161426d565b614296565b63f5c787f15f526004601cfd5b505090565b919081156140045760601b600160601b600160e01b0316916001600160a01b031690808202826140398383613c7a565b14614061575b506132a961404d9284613c7a565b80820491061515016001600160a01b031690565b830183811061403f576001600160a01b039361407f9391925061426d565b1690565b612a2592613ff292906001600160a01b0381116140c0576001600160801b036140b092169060601b613c7a565b905b6001600160a01b0316612aa3565b6001600160801b036140d3921690613e57565b906140b2565b815f19048111820215620f4240021561145c5702620f4240808204910615150190565b7d10c6f7a0b5ed8d36b4c7f34938583621fafc8b0079a2834d26fa3fcc9ea98111620f4240021582021561145c57620f42400290808204910615150190565b906001600160a01b038082169083161161419f575b6001600160a01b03821691821561419357612a259361418e926001600160a01b0380821693909103169060601b600160601b600160e01b0316613f2a565b613c7a565b62bfc9215f526004601cfd5b90614150565b6001600160a01b03828116908216116141ff575b6001600160a01b038116928315614193576141f3926001600160a01b0380821693909103169060601b600160601b600160e01b031661426d565b90808206151591040190565b906141b9565b612a25926001600160a01b03928316919092160360ff81901d90810118906001600160801b0316613ee1565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b031661425f8382613ee1565b928260601b91091515160190565b92919061427b828286613f2a565b938215613ba9570961428957565b9060010190811561145c57565b6001600160a01b038116919082036142aa57565b6393dafdf160e01b5f5260045ffdfea2646970667358221220b3d57cc3c531215249575197751d6fb9a828535d25856aa946f226c20d4e071464736f6c634300081d0033000000000000000000000000b4d72b1c91e640e4ed7d7397f3244de4d8acc50b000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e59000000000000000000000000354dbba1348985cc952c467b8ddaf5dd0759066700000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd