0 txs
1 call
constructor
constructor(address _uniswapV3Factory, address _uniNftPositionManager, address _uniV3Quoter, address _addyRegistry, address _coreRouterPool)
functions
ADDY_REGISTRY
viewfunction ADDY_REGISTRY() view returns (address)
canGovern
viewfunction canGovern(address _address) view returns (bool)
coreRouterPool
viewfunction coreRouterPool() view returns (address)
getAccessForLego
viewfunction getAccessForLego(address _user) view returns (address, string, uint256)
getAddLiqAmountsIn
viewfunction getAddLiqAmountsIn(address _pool, address _tokenA, address _tokenB, uint256 _availAmountA, uint256 _availAmountB) view returns (uint256, uint256, uint256)
getCoreRouterPool
viewfunction getCoreRouterPool() view returns (address)
getDeepestLiqPool
viewfunction getDeepestLiqPool(address _tokenA, address _tokenB) view returns (tuple)
getLpToken
viewfunction getLpToken(address _pool) view returns (address)
getPoolForLpToken
viewfunction getPoolForLpToken(address _lpToken) view returns (address)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken, address _oracleRegistry) view returns (uint256)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken) view returns (uint256)
getRegistries
viewfunction getRegistries() view returns (address[])
getRemoveLiqAmountsOut
viewfunction getRemoveLiqAmountsOut(address _pool, address _tokenA, address _tokenB, uint256 _lpAmount) view returns (uint256, uint256)
govChangeDelay
viewfunction govChangeDelay() view returns (uint256)
governance
viewfunction governance() view returns (address)
hasClaimableRewards
viewfunction hasClaimableRewards(address _user) view returns (bool)
hasPendingGovChange
viewfunction hasPendingGovChange() view returns (bool)
isActivated
viewfunction isActivated() view returns (bool)
legoId
viewfunction legoId() view returns (uint256)
MAX_GOV_CHANGE_DELAY
viewfunction MAX_GOV_CHANGE_DELAY() view returns (uint256)
MIN_GOV_CHANGE_DELAY
viewfunction MIN_GOV_CHANGE_DELAY() view returns (uint256)
onERC721Received
viewfunction onERC721Received(address _operator, address _owner, uint256 _tokenId, bytes _data) view returns (bytes4)
pendingGov
viewfunction pendingGov() view returns (tuple)
UNIV3_FACTORY
viewfunction UNIV3_FACTORY() view returns (address)
UNIV3_NFT_MANAGER
viewfunction UNIV3_NFT_MANAGER() view returns (address)
UNIV3_QUOTER
viewfunction UNIV3_QUOTER() view returns (address)
activate
nonpayablefunction activate(bool _shouldActivate)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
changeGovernance
nonpayablefunction changeGovernance(address _newGov)
claimRewards
nonpayablefunction claimRewards(address _user, address _market, address _rewardToken, uint256 _rewardAmount, bytes32 _proof)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
getBestSwapAmountIn
nonpayablefunction getBestSwapAmountIn(address _tokenIn, address _tokenOut, uint256 _amountOut) returns (address, uint256)
getBestSwapAmountOut
nonpayablefunction getBestSwapAmountOut(address _tokenIn, address _tokenOut, uint256 _amountIn) returns (address, uint256)
getSwapAmountIn
nonpayablefunction getSwapAmountIn(address _pool, address _tokenIn, address _tokenOut, uint256 _amountOut) returns (uint256)
getSwapAmountOut
nonpayablefunction getSwapAmountOut(address _pool, address _tokenIn, address _tokenOut, uint256 _amountIn) returns (uint256)
recoverFunds
nonpayablefunction recoverFunds(address _asset, address _recipient) returns (bool)
recoverNft
nonpayablefunction recoverNft(address _collection, uint256 _nftTokenId, address _recipient) returns (bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, bool)
setCoreRouterPool
nonpayablefunction setCoreRouterPool(address _addr) returns (bool)
setGovernanceChangeDelay
nonpayablefunction setGovernanceChangeDelay(uint256 _numBlocks)
setLegoId
nonpayablefunction setLegoId(uint256 _legoId) returns (bool)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient) returns (uint256, uint256, uint256, uint256)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 _amount0Delta, int256 _amount1Delta, bytes _data)
events
GovChangeCancelled
event GovChangeCancelled(address indexed cancelledGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeConfirmed
event GovChangeConfirmed(address indexed prevGov, address indexed newGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeDelaySet
event GovChangeDelaySet(uint256 delayBlocks)
GovChangeInitiated
event GovChangeInitiated(address indexed prevGov, address indexed newGov, uint256 confirmBlock)
UniswapV3Activated
event UniswapV3Activated(bool isActivated)
UniswapV3LegoIdSet
event UniswapV3LegoIdSet(uint256 legoId)
UniswapV3LiquidityAdded
event UniswapV3LiquidityAdded(address indexed sender, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, uint256 liquidityAdded, uint256 nftTokenId, uint256 usdValue, address recipient)
UniswapV3LiquidityRemoved
event UniswapV3LiquidityRemoved(address sender, address indexed pool, uint256 nftTokenId, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, uint256 liquidityRemoved, uint256 usdValue, address recipient)
UniswapV3Swap
event UniswapV3Swap(address indexed sender, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 usdValue, uint256 numTokens, address recipient)
UniswapV3SwapInPool
event UniswapV3SwapInPool(address indexed sender, address indexed pool, address indexed tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut, uint256 usdValue, address recipient)
UniV3CoreRouterPoolSet
event UniV3CoreRouterPoolSet(address indexed pool)
UniV3FundsRecovered
event UniV3FundsRecovered(address indexed asset, address indexed recipient, uint256 amount)
UniV3NftRecovered
event UniV3NftRecovered(address indexed collection, uint256 nftTokenId, address indexed recipient)
errors
No errors.
creation bytecode
0x6141145150346102075760206142b75f395f518060a01c610207576101405260206142d75f395f518060a01c610207576101605260206142f75f395f518060a01c610207576101805260206143175f395f518060a01c610207576101a05260206143375f395f518060a01c610207576101c05261014051156100b35761016051156100ad5761018051156100a7576101a051156100a1576101c05115156100b5565b5f6100b5565b5f6100b5565b5f6100b5565b5f5b1561020757610140516140b452610160516140d452610180516140f4526101a051614114526101c05160065560016008555f6040526101a0516060526040366080376100ff610111565b61407461020b61000039614134610000f35b60405115610120576001610126565b60605115155b156102075760405115610139576040515f555b60605115610148576060516005555b6040608060c05e60c05161015d576001610162565b60e051155b156101dc57606051156102075760605163ed860576610100526020610100600461011c845afa610194573d5f5f3e3d5ffd5b60203d106102075761010090505160c05260605163c55728b0610100526020610100600461011c845afa6101ca573d5f5f3e3d5ffd5b60203d106102075761010090505160e0525b60e05160c05110156102075760c0516140745260e05161409452606051156102055760c0516004555b565b5f80fd5f3560e01c60026030820660011b61401401601e395f51565b6353aa4307811861005657602436103417614010576004358060a01c614010576102605260206102605161016052610051610280613312565b610280f35b63bec9a127811861323e5760a436103417614010576004358060a01c61401057610400526024358060a01c61401057610420526044358060a01c614010576104405261040051630dfe1681610480526020610480600461049c845afa6100be573d5f5f3e3d5ffd5b3d602081183d602010021880610480016104a01161401057610480518060a01c614010576104c052506104c090505161046052604036610480376104005160405261010a6104e0613f3d565b6104e0516fffffffffffffffffffffffffffffffff8111614010576002810a90506104c052610460516104205118610167576104c0516104805278010000000000000000000000000000000000000000000000006104a05261018e565b7801000000000000000000000000000000000000000000000000610480526104c0516104a0525b6064356104e0526064356104805180820281158383830414171561401057905090506104a051801561401057808204905090506105005260843561050051111561021e576084356104a0518082028115838383041417156140105790509050610480518015614010578082049050905061052052606435610520511161021e57610520516104e052608435610500525b60406104e06105205e5f610560526060610520f35b633f561eff811861323e573461401057600354151560405260206040f35b6399572d6f811861323e57602436103417614010576004358060a01c61401057610160526102806101e0613242565b6101e0805160208160051b0180836101805e505050335f6101e0525f61018051600281116140105780156102d557905b8060051b6101a0015183186102ca5760016101e0526102d5565b6001018181186102b0575b50506101e051905015614010576101605160016101e0525f610180516002811161401057801561032557905b8060051b6101a00151831861031a575f6101e052610325565b600101818118610301575b50506101e05190501561401057610160513b15614010576103476101e0613371565b6101e0511561035a576101605115614010575b4360045480820182811061401057905090506101e05261016051600155436002556101e051600355610160515f547fa8e5a115434955f3c91f53089861da9b575399fbfbc1fc8b345ae6a18b0f193e6101e051610200526020610200a3005b636e4fd9c8811861323e5734614010576001546040526002546060526003546080526040511561401057608051156103f6576080514310156103f8565b5f5b15614010576040513318614010575f5460a0526040515f555f6001555f6002555f60035560405160a0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b6040606060c05e604060c0a3005b63366836cc81186104da5734614010573361016052610471610260613312565b61026051156140105760015461026052600254610280526003546102a0526102a05115614010575f6001555f6002555f600355610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b630f6da63c811861323e57602436103417614010576004358060a01c614010576040525f60605260206060f35b63a908dc80811861323e5760243610341761401057600354614010573361016052610533610260613312565b61026051156140105760206140745f395f516004351015610554575f610563565b60206140945f395f5160043511155b15614010576004356004557fb8d7f2c6802e04bfd3abb436c2b7b52bd4b37872b53bd1150146816d66ac7de2600435610260526020610260a1005b635aa6e675811861323e5734614010575f5460405260206040f35b6325240810811861323e57346140105760015460405260025460605260035460805260606040f35b63f40b169781186105fd57346140105760045460405260206040f35b6394b51d37811861323e573461401057602061411460403960206040f35b63ed8605768118610639573461401057602061407460403960206040f35b632abd8a26811861323e57602436103417614010576004358060a01c614010576040525f60605260206060f35b63c55728b0811861323e573461401057602061409460403960206040f35b63150b7a02811861323e57608436103417614010576004358060a01c614010576040526024358060a01c6140105760605260643560040180356104008111614010575060208135018082608037505060106104e0527f556e64657273636f726545726337323100000000000000000000000000000000610500526104e080516020820120905060805160a02018614010577f150b7a02000000000000000000000000000000000000000000000000000000006104a05260206104a0f35b6335884e5a81186107bd573461401057602080604052806040015f60606140b46101e03960036101c0525f6101c0518084528060051b5f82600a81116140105780156107a757905b8060051b6101e001518160051b602089010152600101818118610789575b5050820160200191505090509050810190506040f35b63e9c9c0ca811861323e5761018436103417614010575f610aa05261112e565b632f7ab0da811861083e57602436103417614010576004358060a01c6140105760405260605f60605280608052806060015f81528051806020830101601f825f03163682375050601f19601f825160200101169050810190505f60a0526060f35b63a2db886a811861323e57602436103417614010576004358060a01c61401057610260523361016052610872610280613312565b61028051156140105761026051600655610260517f05065594309c721bcc992d11861f2e5b06859381b7f9bb3d7f14b530958e5d7f5f610280a26001610280526020610280f35b63dd4260a381186108d85760a436103417614010575f6104805261091b565b637a89cdd3811861323e57346140105760206140b460403960206040f35b6332f4bdc78118610e845760c4361034176140105760a4358060a01c61401057610480525b60443560040160058135116140105780355f816005811161401057801561096457905b8060051b6020850101358060a01c614010578160051b610320015260010181811861093e575b50508061030052505060643560040160048135116140105780355f81600481116140105780156109b657905b8060051b6020850101358060a01c614010578160051b6103e00152600101818118610990575b5050806103c05250506084358060a01c61401057610460526008541561401057610300516104a0526103c0516104c05260026104a05110614010576104a051600181038181116140105790506104c05118614010576103005115614010575f60051b61032001516104e0526104a05160018103818111614010579050610300518110156140105760051b6103200151610500526104e0516370a082316105405230610560526020610540602461055c845afa610a74573d5f5f3e3d5ffd5b60203d1061401057610540905051610520526004356104e0516370a082316105605233610580526020610560602461057c845afa610ab4573d5f5f3e3d5ffd5b60203d106140105761056090505180828118828410021890509050610540526105405115614010576104e0516323b872dd610560523361058052306105a052610540516105c0526020610560606461057c5f855af1610b15573d5f5f3e3d5ffd5b3d610b2c57803b156140105760016105e052610b56565b3d602081183d602010021880610560016105801161401057610560518060011c614010576105e052505b6105e09050511561401057610540516104e0516370a082316105605230610580526020610560602461057c845afa610b90573d5f5f3e3d5ffd5b60203d1061401057610560905051808281188284100218905090506105405260206140b46105603961054051610580525f6104a0516001810381811161401057905060058111614010578015610cb657905b806105a0526105a051610300518110156140105760051b61032001516105c0526105a05160018101818110614010579050610300518110156140105760051b61032001516105e0526105a0516103c0518110156140105760051b6103e001516106005261046051610620526104a051600281038181116140105790506105a0511015610c6e5730610620525b610600516040526105c0516060526105e0516080526105805160a0526106205160c0526105605160e052610ca361064061337a565b6106405161058052600101818118610be2575b5050610580516105a0526024356105a05110614010576104e0516370a082316105e052306106005260206105e060246105fc845afa610cf7573d5f5f3e3d5ffd5b60203d10614010576105e09050516105c0525f6105e052610520516105c0511115610dd1576105c0516105205180820382811161401057905090506105e0526104e05163a9059cbb6106005233610620526105e051610640526020610600604461061c5f855af1610d6a573d5f5f3e3d5ffd5b3d610d8157803b1561401057600161066052610dab565b3d602081183d602010021880610600016106201161401057610600518060011c6140105761066052505b6106609050511561401057610540516105e0518082038281116140105790509050610540525b6104e05160405261054051606052610500516080526105a05160a052600160c0526104805160e052610e046106206136fe565b6106205161060052610500516104e051337f0af54f99387e91a3d5603dde0168ddc5ce778a9beda0daa1750eee1fb74aa3aa61054051610620526105a0516106405261060051610660526104a05161068052610460516106a05260a0610620a461054051610620526105a0516106405260406105e06106605e6080610620f35b6324ae6a27811861323e57604436103417614010576004358060a01c61401057610260526024358060a01c61401057610280523361016052610ec76102a0613312565b6102a0511561401057610260516370a082316102c052306102e05260206102c060246102dc845afa610efb573d5f5f3e3d5ffd5b60203d10614010576102c09050516102a05261028051610f1c576001610f22565b61026051155b610f30576102a05115610f33565b60015b15610f47575f6102e05260206102e0611006565b6102605163a9059cbb6102c05260406102806102e05e60206102c060446102dc5f855af1610f77573d5f5f3e3d5ffd5b3d610f8e57803b1561401057600161032052610fb8565b3d602081183d6020100218806102c0016102e011614010576102c0518060011c6140105761032052505b610320905051156140105761028051610260517fe43810ab7919866a4d2921e2fc72f7318867484ef6d3d5882d08c4f6d7604e186102a0516102c05260206102c0a360016102c05260206102c05bf35b63fa461e3381186110eb576064361034176140105760443560040180356101008111614010575060208135018082604037505060015c6101605260025c6101805260035c6101a052610160513318614010576101805163a9059cbb6101c052610160516101e0526101a0516102005260206101c060446101dc5f855af1611091573d5f5f3e3d5ffd5b3d6110a857803b15614010576001610220526110d2565b3d602081183d6020100218806101c0016101e011614010576101c0518060011c6140105761022052505b61022090505115614010575f60015d5f60025d5f60035d005b63af90b6b3811861323e57346140105760065460405260206040f35b63cd3758fc8118611bc8576101a43610341761401057610184358060a01c61401057610aa0525b6024358060a01c614010576109e0526044358060a01c61401057610a00526064358060a01c61401057610a20526084358060020b811861401057610a405260a4358060020b811861401057610a6052610164358060a01c61401057610a805260085415614010576109e051630dfe1681610b00526020610b006004610b1c845afa6111bb573d5f5f3e3d5ffd5b3d602081183d602010021880610b0001610b201161401057610b00518060a01c61401057610b405250610b40905051610ac0526109e05163d21220a7610b60526020610b606004610b7c845afa611214573d5f5f3e3d5ffd5b3d602081183d602010021880610b6001610b801161401057610b60518060a01c61401057610ba05250610ba0905051610ae052610a00515f610b00525f6002905b8060051b610ac00151831861126f576001610b005261127a565b600101818118611255575b5050610b005190501561401057610a20515f610b00525f6002905b8060051b610ac0015183186112af576001610b00526112ba565b600101818118611295575b5050610b005190501561401057610a2051610a00511461401057610a00516370a08231610b205230610b40526020610b206024610b3c845afa6112ff573d5f5f3e3d5ffd5b60203d1061401057610b20905051610b0052610a20516370a08231610b405230610b60526020610b406024610b5c845afa61133c573d5f5f3e3d5ffd5b60203d1061401057610b40905051610b205260c435610a00516370a08231610b605233610b80526020610b606024610b7c845afa61137c573d5f5f3e3d5ffd5b60203d1061401057610b6090505180828118828410021890509050610b4052610b40511561401057610a00516323b872dd610b605233610b805230610ba052610b4051610bc0526020610b606064610b7c5f855af16113dd573d5f5f3e3d5ffd5b3d6113f457803b15614010576001610be05261141e565b3d602081183d602010021880610b6001610b801161401057610b60518060011c61401057610be052505b610be09050511561401057610b4051610a00516370a08231610b805230610ba0526020610b806024610b9c845afa611458573d5f5f3e3d5ffd5b60203d1061401057610b8090505180828118828410021890509050610b605260e435610a20516370a08231610ba05233610bc0526020610ba06024610bbc845afa6114a5573d5f5f3e3d5ffd5b60203d1061401057610ba090505180828118828410021890509050610b8052610b80511561401057610a20516323b872dd610ba05233610bc05230610be052610b8051610c00526020610ba06064610bbc5f855af1611506573d5f5f3e3d5ffd5b3d61151d57803b15614010576001610c2052611547565b3d602081183d602010021880610ba001610bc01161401057610ba0518060011c61401057610c2052505b610c209050511561401057610b8051610a20516370a08231610bc05230610be0526020610bc06024610bdc845afa611581573d5f5f3e3d5ffd5b60203d1061401057610bc090505180828118828410021890509050610ba05260206140d4610bc039610a005163095ea7b3610be052610bc051610c0052610b6051610c20526020610be06044610bfc5f855af16115e0573d5f5f3e3d5ffd5b3d6115f757803b15614010576001610c4052611621565b3d602081183d602010021880610be001610c001161401057610be0518060011c61401057610c4052505b610c409050511561401057610a205163095ea7b3610be052610bc051610c0052610ba051610c20526020610be06044610bfc5f855af1611663573d5f5f3e3d5ffd5b3d61167a57803b15614010576001610c40526116a4565b3d602081183d602010021880610be001610c001161401057610be0518060011c61401057610c4052505b610c4090505115614010576040610a00610be05e610b6051610c2052610ba051610c40526040610104610c6037610a0051610ac0511461170f57610a2051610be052610a0051610c0052610ba051610c2052610b6051610c405261012435610c605261010435610c80525b600435610ca052604036610cc03760043561178b57610bc051610120526109e051610140526040610be06101605e6040610a406101a05e6080610c206101e05e610a805161026052611762610d00613988565b610d00608081610d805e50610d8051610ca052610da051610ce0526040610dc0610c205e6117da565b610bc05161034052600435610360526080610c206103805e610a8051610400526117b6610d00613b5e565b610d00606081610d605e50610d6051610ce052610d8051610c2052610da051610c40525b610ce051610cc052610cc0511561401057610a005163095ea7b3610d0052610bc051610d20525f610d40526020610d006044610d1c5f855af161181f573d5f5f3e3d5ffd5b3d61183657803b15614010576001610d6052611860565b3d602081183d602010021880610d0001610d201161401057610d00518060011c61401057610d6052505b610d609050511561401057610a205163095ea7b3610d0052610bc051610d20525f610d40526020610d006044610d1c5f855af161189f573d5f5f3e3d5ffd5b3d6118b657803b15614010576001610d60526118e0565b3d602081183d602010021880610d0001610d201161401057610d00518060011c61401057610d6052505b610d609050511561401057610a00516370a08231610d205230610d40526020610d206024610d3c845afa611916573d5f5f3e3d5ffd5b60203d1061401057610d20905051610d00525f610d2052610b0051610d005111156119d657610d0051610b00518082038281116140105790509050610d2052610a005163a9059cbb610d405233610d6052610d2051610d80526020610d406044610d5c5f855af1611989573d5f5f3e3d5ffd5b3d6119a057803b15614010576001610da0526119ca565b3d602081183d602010021880610d4001610d601161401057610d40518060011c61401057610da052505b610da090505115614010575b610a20516370a08231610d605230610d80526020610d606024610d7c845afa611a01573d5f5f3e3d5ffd5b60203d1061401057610d60905051610d40525f610d6052610b2051610d40511115611ac157610d4051610b20518082038281116140105790509050610d6052610a205163a9059cbb610d805233610da052610d6051610dc0526020610d806044610d9c5f855af1611a74573d5f5f3e3d5ffd5b3d611a8b57803b15614010576001610de052611ab5565b3d602081183d602010021880610d8001610da01161401057610d80518060011c61401057610de052505b610de090505115614010575b610c2051610b6052610c4051610ba052610a0051610ac05114611aef57610c4051610b6052610c2051610ba0525b610a0051604052610b6051606052610a2051608052610ba05160a0525f60c052610aa05160e052611b21610da06136fe565b610da051610d8052610a2051610a0051337fc35ac14f1a36f4744d34bcf56b55b50891bc49c5fc96d688f640bbaf5fdd168f610b6051610da052610ba051610dc052610cc051610de052610ca051610e0052610d8051610e2052610a8051610e405260c0610da0a4610cc051610da052610b6051610dc052610ba051610de052610d8051610e0052610d2051610e2052610d6051610e4052610ca051610e605260e0610da0f35b638aadf9ac811861323e5760a436103417614010576004358060a01c614010576040526024358060a01c614010576060526044358060a01c61401057608052005b63971f0c31811861323e5761012436103417614010575f6103e052611c50565b6304c388ae811861323e576101443610341761401057610124358060a01c614010576103e0525b6024358060a01c61401057610340526044358060a01c61401057610360526064358060a01c61401057610380526084358060a01c614010576103a052610104358060a01c614010576103c052600854156140105760206140d4610400393061040051636352211e61042052600435610440526020610420602461043c845afa611cdb573d5f5f3e3d5ffd5b3d602081183d602010021880610420016104401161401057610420518060a01c6140105761046052506104609050511861401057610400516399fbab886105a0526004356105c0526101806105a060246105bc845afa611d3d573d5f5f3e3d5ffd5b3d61018081183d610180100218806105a0016107201161401057806105a00161072011614010576105a0518060601c61401057610740526105c0518060a01c61401057610760526105e0518060a01c6140105761078052610600518060a01c614010576107a052610620518060181c614010576107c052610640518060020b8118614010576107e052610660518060020b81186140105761080052610680518060801c614010576108205260406106a06108405e6106e0518060801c6140105761088052610700518060801c614010576108a052506107409050610180816104205e50610500516105a05260406104606105c05e610360515f610600525f6002905b8060051b6105c001518318611e5957600161060052611e64565b600101818118611e3f575b50506106005190501561401057610380515f610600525f6002905b8060051b6105c001518318611e9957600161060052611ea4565b600101818118611e7f575b5050610600519050156140105761038051610360511461401057604060c4610600376105c0516103605114611ee25760e4356106005260c435610620525b60a43561050051808281188284100218905090506106405261064051156140105760043561066052610640518060801c614010576106805260406106006106a05e426106e0526040366107003761040051630c49ccbe6107405260a06106606107605e604061074060a461075c5f855af1611f5f573d5f5f3e3d5ffd5b60403d106140105761074090506040816108005e5060406108006107005e6107005115611f9157610720511515611f93565b5f5b156140105760406107006107405e6105c0516103605114611fbf57610720516107405261070051610760525b610400516399fbab88610780526004356107a052610180610780602461079c845afa611fed573d5f5f3e3d5ffd5b3d61018081183d6101801002188061078001610900116140105780610780016109001161401057610780518060601c61401057610920526107a0518060a01c61401057610940526107c0518060a01c61401057610960526107e0518060a01c6140105761098052610800518060181c614010576109a052610820518060020b8118614010576109c052610840518060020b8118614010576109e052610860518060801c61401057610a00526040610880610a205e6108c0518060801c61401057610a60526108e0518060801c61401057610a805250610920905061018081610aa05e50610180610aa06104205e610400516040526004356060526103c05160805261018061042060a05e612102610780613abe565b610780505f610780526105005161215357600161078052610400516342966c686107a0526004356107c052803b15614010575f6107a060246107bc5f855af161214d573d5f5f3e3d5ffd5b50612196565b610400516342842e0e6107a052306107c0526103c0516107e05260043561080052803b15614010575f6107a060646107bc5f855af1612194573d5f5f3e3d5ffd5b505b6103605160405261074051606052610380516080526107605160a0525f60c0526103e05160e0526121c86107c06136fe565b6107c0516107a0526105a051610500518082038060801c61401057905090506107c0526103805161036051610340517f03b799c0f72231b95b09161777c1db28250ddee719a3ebe94d9981966efa93b7336107e0526004356108005260406107406108205e6107c051610860526107a051610880526103c0516108a05260e06107e0a460406107406107e05e60406107a06108205e5f61086052610780516108805260c06107e0f35b63b6ff4934811861323e57602436103417614010576004358060a01c614010576040525f60605260206060f35b6370b422bf811861323e57604436103417614010576004358060a01c61401057610200526024358060a01c614010576102205260403661024037604061020060405e6122eb610280613de5565b6102806040816102c05e5060406102c06102405e610240516123185760a0366102803760a06102806123db565b610200516370a082316102a052610240516102c05260206102a060246102bc845afa612346573d5f5f3e3d5ffd5b60203d10614010576102a090505161028052610220516370a082316102c052610240516102e05260206102c060246102dc845afa612386573d5f5f3e3d5ffd5b60203d10614010576102c09050516102a052610240516102c052610260516064810490506102e052610280516102a0518082018281106140105790509050610300526002610320526007546103405260a06102c05bf35b63a9f70155811861323e57606436103417614010576004358060a01c61401057610200526024358060a01c614010576102205260403661024037604061020060405e61242a610280613de5565b6102806040816102c05e5060406102c06102405e610240516124575760403661028037604061028061251c565b6080366102803760206140f45f395f5163c6a5026a6103005260406102006103205e6044356103605261026051610380525f6103a052608061030060a461031c5f855af16124a7573d5f5f3e3d5ffd5b3d608081183d608010021880610300016103801161401057610300516103c052610320518060a01c614010576103e052610340518060201c61401057610400526103605161042052506103c090506080816104405e5060806104406102805e6102405161030052610280516103205260406103005bf35b6302bc29fa811861323e57608436103417614010576004358060a01c614010576040526024358060a01c614010576060526044358060a01c6140105760805260803660a03760206140f45f395f5163c6a5026a61018052604060606101a05e6064356101e05260405163ddca3f43610120526020610120600461013c845afa6125a9573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161401057610120518060181c614010576101605250610160905051610200525f61022052608061018060a461019c5f855af16125fb573d5f5f3e3d5ffd5b3d608081183d60801002188061018001610200116140105761018051610240526101a0518060a01c61401057610260526101c0518060201c61401057610280526101e0516102a0525061024090506080816102c05e5060806102c060a05e602060a0f35b636d15bcdd81186127ed57606436103417614010576004358060a01c61401057610200526024358060a01c61401057610220526044356126a05760016126a6565b60443519155b156126df575f610240527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102605260406102406127eb565b60403661024037604061020060405e6126f9610280613de5565b6102806040816102c05e5060406102c06102405e61024051612726576040366102803760406102806127eb565b6080366102803760206140f45f395f5163bd21704a6103005260406102006103205e6044356103605261026051610380525f6103a052608061030060a461031c5f855af1612776573d5f5f3e3d5ffd5b3d608081183d608010021880610300016103801161401057610300516103c052610320518060a01c614010576103e052610340518060201c61401057610400526103605161042052506103c090506080816104405e5060806104406102805e6102405161030052610280516103205260406103005bf35b6353554a2d811861323e57346140105760206140d460403960206040f35b633d17dd7b811861323e57608436103417614010576004358060a01c614010576040526024358060a01c614010576060526044358060a01c6140105760805260643561285857600161285e565b60643519155b15612890577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060a0612991565b60803660a03760206140f45f395f5163bd21704a61018052604060606101a05e6064356101e05260405163ddca3f43610120526020610120600461013c845afa6128dc573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161401057610120518060181c614010576101605250610160905051610200525f61022052608061018060a461019c5f855af161292e573d5f5f3e3d5ffd5b3d608081183d60801002188061018001610200116140105761018051610240526101a0518060a01c61401057610260526101c0518060201c61401057610280526101e0516102a0525061024090506080816102c05e5060806102c060a05e602060a05bf35b63d56e9c3e8118612acd57608436103417614010576004358060a01c61401057610400526024358060a01c61401057610420526044358060a01c614010576104405261040051630dfe1681610480526020610480600461049c845afa6129fb573d5f5f3e3d5ffd5b3d602081183d602010021880610480016104a01161401057610480518060a01c614010576104c052506104c09050516104605261040051604052612a406104a0613f3d565b6104a051610480526064358060601b818160601c1861401057905061048051801561401057808204905090506104a0526064356104805180820281158383830414171561401057905090508060601c90506104c052610460516104205118612ab55760406104a06104e05e60406104e0612acb565b6104c0516104e0526104a0516105005260406104e05bf35b6381b5e05e811861323e57606436103417614010576004358060a01c61401057610260526044358060a01c61401057610280523361016052612b106102a0613312565b6102a05115614010573061026051636352211e6102a0526024356102c05260206102a060246102bc845afa612b47573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c011614010576102a0518060a01c614010576102e052506102e090505114612b8a575f610300526020610300612c0e565b610260516342842e0e6102a052306102c052610280516102e05260243561030052803b15614010575f6102a060646102bc5f855af1612bcb573d5f5f3e3d5ffd5b5061028051610260517fec5cb691977b0e914d1967716464d9d75bbfc2055f1a9078680ab3ce45273f476024356102a05260206102a0a360016102a05260206102a05bf35b6359ad5d18811861323e57604436103417614010575f61044052612c54565b6360572591811861323e57606436103417614010576044358060a01c61401057610440525b6004358060a01c61401057610400526024358060a01c614010576104205261040051630dfe1681610480526020610480600461049c845afa612c98573d5f5f3e3d5ffd5b3d602081183d602010021880610480016104a01161401057610480518060a01c614010576104c052506104c0905051610460526104005163d21220a76104a05260206104a060046104bc845afa612cf1573d5f5f3e3d5ffd5b3d602081183d6020100218806104a0016104c011614010576104a0518060a01c614010576104e052506104e090505161048052610440516104a05261044051612d995760206141145f395f516347be091a6104c05260046104e05260206104c060246104dc845afa612d65573d5f5f3e3d5ffd5b3d602081183d6020100218806104c0016104e011614010576104c0518060a01c6140105761050052506105009050516104a0525b5f6104c052610460516104205118612df5576104a0516376d697606104e05261048051610500525f6105205260206104e060446104fc845afa612dde573d5f5f3e3d5ffd5b60203d10614010576104e09050516104c052612e3b565b6104a0516376d697606104e05261046051610500525f6105205260206104e060446104fc845afa612e28573d5f5f3e3d5ffd5b60203d10614010576104e09050516104c0525b6104c051612e52575f6104e05260206104e0613084565b61040051604052612e64610500613f3d565b610500516104e0526104e0516fffffffffffffffffffffffffffffffff8111614010576002810a9050670de0b6b3a7640000810281670de0b6b3a764000082041861401057905061050052610500518060c01c9050610520526104605163313ce567610560526020610560600461057c845afa612ee3573d5f5f3e3d5ffd5b3d602081183d602010021880610560016105801161401057610560518060081c614010576105a052506105a0905051610540526104805163313ce567610580526020610580600461059c845afa612f3c573d5f5f3e3d5ffd5b3d602081183d602010021880610580016105a01161401057610580518060081c614010576105c052506105c090505161056052610560516105405111612fd057610540516105605111156130195761056051610540518082038281116140105790509050604d81116140105780600a0a90506105805261052051610580518015614010578082049050905061052052613019565b61054051610560518082038281116140105790509050604d81116140105780600a0a90506105805261052051610580518082028115838383041417156140105790509050610520525b61052051610580526104805161042051186130515761052051801561401057806ec097ce7bc90715b34b9f1000000000049050610580525b6104c051610580518082028115838383041417156140105790509050670de0b6b3a7640000810490506105a05260206105a05bf35b63ab96e079811861323e576024361034176140105760206141145f395f516347be091a6040526002606052602060406024605c845afa6130c8573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011614010576040518060a01c6140105760805250608090505133186140105760075460405260405161310c576001613115565b60043560405118155b15614010576004356007557fdcfdc35b2e54afa074377f6b050b1f31fcd3aa07aa81999c36fe4c800f4ec4bd60043560605260206060a1600160605260206060f35b63ce5e84a3811861323e57602436103417614010576004358060011c6140105761026052336101605261318b610280613312565b610280511561401057610260516008557fc12d45fcabfde37417f5aad35feb1419f4641b451aa9e32dd1f6d8011b4ff4c561026051610280526020610280a1005b6344d92a22811861323e57346140105760065460405260206040f35b6331c1deb9811861323e57346140105760206140f460403960206040f35b6359b76fe4811861322257346140105760075460405260206040f35b634a8c1fb4811861323e57346140105760085460405260206040f35b5f5ffd5b5f6040525f5460a05260a0511561327257604051600181116140105760a0518160051b6060015260018101604052505b60055460c05260c051156132fe5760c051635aa6e675610100526020610100600461011c845afa6132a5573d5f5f3e3d5ffd5b3d602081183d602010021880610100016101201161401057610100518060a01c61401057610140525061014090505160e05260e051156132fe57604051600181116140105760e0518160051b6060015260018101604052505b60405160208160051b01806040845e505050565b610160516133216101e0613242565b6101e05f610240525f81516002811161401057801561336257905b8060051b602084010151841861335757600161024052613362565b60010181811861333c575b50506102405190509050815250565b60055415815250565b604051630dfe1681610140526020610140600461015c845afa61339f573d5f5f3e3d5ffd5b3d602081183d602010021880610140016101601161401057610140518060a01c6140105761018052506101809050516101005260405163d21220a76101a05260206101a060046101bc845afa6133f7573d5f5f3e3d5ffd5b3d602081183d6020100218806101a0016101c011614010576101a0518060a01c614010576101e052506101e0905051610120526060515f610140525f6002905b8060051b610100015183186134515760016101405261345c565b600101818118613437575b505061014051905015614010576080515f610140525f6002905b8060051b610100015183186134905760016101405261349b565b600101818118613476575b50506101405190501561401057608051606051146140105760405160e051631698ee826101a052604060606101c05e60405163ddca3f43610140526020610140600461015c845afa6134ef573d5f5f3e3d5ffd5b3d602081183d602010021880610140016101601161401057610140518060181c6140105761018052506101809050516102005260206101a060646101bc845afa61353b573d5f5f3e3d5ffd5b3d602081183d6020100218806101a0016101c011614010576101a0518060a01c614010576102205250610220905051186140105760405160015d60605160025d60a05160035d61010051606051146101405273fffd8963efd1fc6a506488495d951d5263988d256101605261014051156135ba576401000276a4610160525b6040366101803760405163128acb086101e05260a060c05161020052610140516102205260a0518060ff1c6140105761024052610160516102605280610280525f6101c0526101c081610200015f81528051806020830101601f825f03163682375050601f19601f82516020010116905090508101505060406101e060c46101fc5f855af161364b573d5f5f3e3d5ffd5b60403d10614010576101e090506040816102c05e5060406102c06101805e5f6101c052610140516136b357610180517f80000000000000000000000000000000000000000000000000000000000000008114614010575f035f8112614010576101c0526136ec565b6101a0517f80000000000000000000000000000000000000000000000000000000000000008114614010575f035f8112614010576101c0525b6101c05115614010576101c051815250565b60e0516101005260e0516137715760206141145f395f516347be091a610120526004610140526020610120602461013c845afa61373d573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161401057610120518060a01c614010576101605250610160905051610100525b6101005163c660d11261014052604060406101605e6020610140604461015c845afa61379f573d5f5f3e3d5ffd5b60203d1061401057610140905051610120526101005163c660d11261016052604060806101805e6020610160604461017c845afa6137df573d5f5f3e3d5ffd5b60203d10614010576101609050516101405260c051613816576101205161014051808201828110614010579050905081525061382f565b6101205161014051808281188284110218905090508152505b565b5f60a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006060511861386557600161386f565b627fffff60805118155b156138c85760405163d0c93a7c60c052602060c0600460dc845afa613896573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116140105760c0518060020b811861401057610100525061010090505160a0525b60605160c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006060511861393d5760a051801561401057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761805905060a0518082028060020b8118614010579050905060c0525b60805160e052627fffff608051186139785760a05180156140105780620d89e805905060a0518082028060020b8118614010579050905060e0525b60c051815260e051602082015250565b60403661028037610140516040526101a0516060526101c0516080526139af6102c0613831565b6102c06040816103005e5060406103006102805e60406101606102c05e6101405163ddca3f43610420526020610420600461043c845afa6139f2573d5f5f3e3d5ffd5b3d602081183d602010021880610420016104401161401057610420518060181c6140105761046052506104609050516103005260406102806103205e6101e0516103605260806102006103805e4261040052610120516388316456610420526101606102c06104405e608061042061016461043c5f855af1613a76573d5f5f3e3d5ffd5b3d608081183d608010021880610420016104a01161401057610420516105a052610440518060801c614010576105c05260406104606105e05e506105a09050608081835e5050565b6101e051613ad0576102005115613ad2565b5f5b15613ae6575f81525f602082015250613b5c565b604060606102205e6fffffffffffffffffffffffffffffffff610260526fffffffffffffffffffffffffffffffff6102805260405163fc6f78656102a05260806102206102c05e60406102a060846102bc5f855af1613b47573d5f5f3e3d5ffd5b60403d10614010576102a09050604081835e50505b565b3061034051636352211e6104205261036051610440526020610420602461043c845afa613b8d573d5f5f3e3d5ffd5b3d602081183d602010021880610420016104401161401057610420518060a01c61401057610460525061046090505118614010576060366104203760a06103606104805e42610520526103405163219f5d176105405260c06104806105605e606061054060c461055c5f855af1613c06573d5f5f3e3d5ffd5b3d606081183d606010021880610540016105a01161401057610540518060801c614010576106205260406105606106405e5061062090506060816106805e5060606106806104205e610340516399fbab886106c052610360516106e0526101806106c060246106dc845afa613c7d573d5f5f3e3d5ffd5b3d61018081183d610180100218806106c0016108401161401057806106c00161084011614010576106c0518060601c61401057610860526106e0518060a01c6140105761088052610700518060a01c614010576108a052610720518060a01c614010576108c052610740518060181c614010576108e052610760518060020b81186140105761090052610780518060020b811861401057610920526107a0518060801c614010576109405260406107c06109605e610800518060801c614010576109a052610820518060801c614010576109c052506108609050610180816105405e50604061034060405e6104005160805261018061054060a05e613d836106c0613abe565b6106c050610340516342842e0e6106c052306106e05261040051610700526103605161072052803b15614010575f6106c060646106dc5f855af1613dc9573d5f5f3e3d5ffd5b5061042051815261044051602082015261046051604082015250565b60603660803760206140b460e0395f6004905b80610100526064610140526101f461016052610bb8610180526127106101a0526101406101005160048110156140105760051b81019050516101205260e051631698ee8261016052604060406101805e610120516101c0526020610160606461017c845afa613e69573d5f5f3e3d5ffd5b3d602081183d602010021880610160016101801161401057610160518060a01c614010576101e052506101e0905051610140526101405115613f215761014051631a686502610180526020610180600461019c845afa613ecb573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a01161401057610180518060801c614010576101c052506101c09050516101605260c051610160511315613f2157610140516080526101205160a0526101605160c0525b600101818118613df8575050608051815260a051602082015250565b60e036606037604051633850c7bd6101405260e0610140600461015c845afa613f68573d5f5f3e3d5ffd5b3d60e081183d60e010021880610140016102201161401057610140518060a01c6140105761024052610160518060020b81186140105761026052610180518060101c61401057610280526101a0518060101c614010576102a0526101c0518060101c614010576102c0526101e0518060081c614010576102e052610200518060011c614010576103005250610240905060e0816103205e5060e061032060605e606051815250565b5f80fd0507323e323e08b92271323e323e08f6323e3086251e280b1107323e1c29025105b92c2f068431573206059e323e05e103b931e807dd323e323e265f323e229e06661c0931cc1008323e23dd061b00182c10323e0741323e0451323e29930233855820031430350ef8b4279dac99146fed234d6c6f28a3a31de46d7d036e6461005e2819407481186018c0a165767970657283000401003800000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd00000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f10000000000000000000000003d4e44eb1374240ce5f1b871ab261cd16335b76a0000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae000000000000000000000000d0b53d9277642d899df5c87a3966a349a798f224