0 txs
1.8k calls
constructor
constructor(address _aaveLendingPool, address _swapper, address _onchainSwapRouter, address _pendleYieldContractFactory, address _pendleRouterStatic, uint256 _mismatchDelta, uint256 _mismatchDeltaDenominator, uint256 _slippageToleranceDenominator)
functions
aaveLendingPool
viewfunction aaveLendingPool() view returns (address)
convert32toAddress
purefunction convert32toAddress(bytes32 data) pure returns (address o)
flashloanProcessing
viewfunction flashloanProcessing(address _pool, address _repayAsset, uint256 _repayAmount, uint256 _premium, bytes _params) view returns (tuple[] transactions)
getArrayIndex
purefunction getArrayIndex(bytes data, uint8 inputNum, uint8 arrayIndex) pure returns (bytes32)
getArrayLast
purefunction getArrayLast(bytes data, uint8 inputNum) pure returns (bytes32)
getArrayLength
purefunction getArrayLength(bytes data, uint8 inputNum) pure returns (uint256)
getBalance
viewfunction getBalance(address _pool, address) view returns (uint256 balance)
getBytes
purefunction getBytes(bytes data, uint8 inputNum, uint256 offset) pure returns (bytes)
getDecimals
purefunction getDecimals(address) pure returns (uint256 decimals)
getInput
purefunction getInput(bytes data, uint8 inputNum) pure returns (bytes32)
getMethod
purefunction getMethod(bytes data) pure returns (bytes4)
getParams
purefunction getParams(bytes data) pure returns (bytes)
onchainSwapRouter
viewfunction onchainSwapRouter() view returns (address)
pendleRouterStatic
viewfunction pendleRouterStatic() view returns (address)
pendleYieldContractFactory
viewfunction pendleYieldContractFactory() view returns (address)
read32
purefunction read32(bytes data, uint256 offset, uint256 length) pure returns (bytes32 o)
read4left
purefunction read4left(bytes data, uint256 offset) pure returns (bytes4 o)
removeAssetCheck
viewfunction removeAssetCheck(address _pool, address) view
swapper
viewfunction swapper() view returns (address)
txGuard
purefunction txGuard(address, address, bytes) pure returns (uint16 txType, bool)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address, uint256 _portion, address _to, bytes _swapData) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address, uint256 _portion, address _to) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
calculateSwapDataParams
nonpayablefunction calculateSwapDataParams(address _pool, uint256 _poolTokenAmount, uint256 _slippageTolerance) returns (tuple swapDataParams)
events
No events.
errors
No errors.
creation bytecode
0x6101806040523480156200001257600080fd5b506040516200558e3803806200558e833981016040819052620000359162000129565b6001600160a01b038816158015906200005657506001600160a01b03871615155b80156200006b57506001600160a01b03861615155b620000935760405162461bcd60e51b81526004016200008a90620001ec565b60405180910390fd5b600082118015620000a45750818311155b620000c35760405162461bcd60e51b81526004016200008a90620001b5565b6001600160601b0319606098891b811660805296881b871660a05294871b861660c05292861b851660e052941b9092166101005261012092909252610140526101605262000215565b80516001600160a01b03811681146200012457600080fd5b919050565b600080600080600080600080610100898b03121562000146578384fd5b62000151896200010c565b97506200016160208a016200010c565b96506200017160408a016200010c565b95506200018160608a016200010c565b94506200019160808a016200010c565b935060a0890151925060c0890151915060e089015190509295985092959890939650565b60208082526016908201527f6e756d657261746f72206d757374206265206c65737300000000000000000000604082015260600190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c610120516101405161016051615299620002f56000398061125e528061171f5250806108fc528061273552806127fb525080612759528061281f525080610627528061155752508061050152806115075280611ca552508061060352806124f752806125dd5250806104dd528061212952806121d8525080610c7a5280611822528061192852806119e05280611a725280611da8528061239752806128cf5280612af45280612d905280612f7d528061301d52806132ab52506152996000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c8063056f626f1461012257806309ff5c7d1461014d5780631053f9521461016d5780631eba30771461018d578063293d8063146101ad5780632b3297f9146101cd57806332cd2733146101d557806341dc16c3146101dd578063445fad1f146101f057806355b0e400146101f85780636179309d1461020057806368901513146102215780636d5fae54146102345780636f8ae20214610249578063759f32831461025c57806382f86acc1461027c578063989dccf81461028f578063998546e3146102af578063c3c6279f146102c2578063cf54aaa0146102d5578063d4fac45d146102e8578063db896b57146102fb578063e9d337b81461030e575b600080fd5b610135610130366004614075565b610316565b60405161014493929190614d1f565b60405180910390f35b61016061015b3660046144ae565b610345565b6040516101449190614d90565b61018061017b3660046144f2565b6103d8565b6040516101449190614dae565b6101a061019b3660046143d7565b610472565b6040516101449190614b1d565b6101c06101bb366004614421565b610479565b6040516101449190614d99565b6101a06104db565b6101a06104ff565b6101606101eb366004614549565b610523565b6101a0610601565b6101a0610625565b61021361020e366004613fc1565b610649565b6040516101449291906150db565b61018061022f3660046143ef565b610655565b610247610242366004613f3d565b610670565b005b610135610257366004614023565b6106b9565b61026f61026a36600461416a565b6106e5565b6040516101449190615070565b61016061028a3660046144ae565b610980565b6102a261029d3660046140f1565b610997565b6040516101449190614d7d565b6101606102bd3660046144ae565b610b89565b6101c06102d03660046143ef565b610bba565b6101606102e3366004613f05565b610bc7565b6101606102f6366004613f3d565b610bcd565b610160610309366004614463565b610bf9565b6101a0610c78565b600080606061033388878761032c8c8b8a610c9c565b6000610d72565b9250925092505b955095509592505050565b60008061035d848460200260040160ff166020610bf9565b9050600061037085600484016020610bf9565b9050806103b9576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b6103cd856020808402850160040190610bf9565b925050505b92915050565b606060148210610420576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081bd9999cd95d60921b604482015290519081900360640190fd5b816020029150600061043f85848660200260040160ff16016020610bf9565b90506000610454868584016004016020610bf9565b90506104668660248487010183610dcd565b925050505b9392505050565b805b919050565b600081600401835110156104d2576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b50016020015190565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061053b858560200260040160ff166020610bf9565b9050600061054e86600484016020610bf9565b905080610597576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b60ff841681116105e7576040805162461bcd60e51b815260206004820152601660248201527534b73b30b634b21030b93930bc903837b9b4ba34b7b760511b604482015290519081900360640190fd5b610466866020600160ff8816018102850160040190610bf9565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008094509492505050565b60606103d260048084510384610dcd9092919063ffffffff16565b60008061067c84610f1e565b9150915081600014801561068e575080155b6106b35760405162461bcd60e51b81526004016106aa90614e76565b60405180910390fd5b50505050565b60008060606106c6613c9e565b6106d4888787846001610d72565b935093509350509450945094915050565b6106ed613cc5565b836001600160a01b031663cc3c6df66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561072857600080fd5b505af115801561073c573d6000803e3d6000fd5b50505050600080856001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561077c57600080fd5b505afa158015610790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b49190613f21565b6001600160a01b031663f5b860866040518163ffffffff1660e01b815260040160606040518083038186803b1580156107ec57600080fd5b505afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610824919061476f565b925050915060008211156108535761085061084982610843888661113a565b90611193565b86906111f7565b94505b60006108db876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c9919061466f565b61084388670de0b6b3a764000061113a565b90506108e8878287611254565b935060005b845151811015610975576109517f00000000000000000000000000000000000000000000000000000000000000006108436109298260016111f7565b885180518690811061093757fe5b60200260200101516020015161113a90919063ffffffff16565b855180518390811061095f57fe5b60209081029190910181015101526001016108ed565b505050509392505050565b600061046b838360200260040160ff166020610bf9565b6060600080806109a985870187614687565b925092509250600060405180606001604052808b6001600160a01b031681526020018a815260200189815250905060006109e38c8361178a565b90506000836109fc576109f78d8787611b39565b610a0b565b610a0b8d8785600001516122c1565b905080518251016001600160401b0381118015610a2757600080fd5b50604051908082528060200260200182016040528015610a6157816020015b610a4e613ce4565b815260200190600190039081610a465790505b5096506000805b8351821015610aed57838281518110610a7d57fe5b602002602001015160000151898281518110610a9557fe5b60209081029190910101516001600160a01b0390911690528351849083908110610abb57fe5b602002602001015160200151898281518110610ad357fe5b602090810291909101810151015260019182019101610a68565b600091505b8251821015610b7757828281518110610b0757fe5b602002602001015160000151898281518110610b1f57fe5b60209081029190910101516001600160a01b0390911690528251839083908110610b4557fe5b602002602001015160200151898281518110610b5d57fe5b602090810291909101810151015260019182019101610af2565b50505050505050509695505050505050565b600080610ba1848460200260040160ff166020610bf9565b9050610bb284600483016020610bf9565b949350505050565b60006103d2826000610479565b50601290565b6000806000610bdb85610f1e565b9150915080821115610bf1576103cd82826111f7565b505092915050565b600081830184511015610c51576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b826020018401519050816020038015610c70576008810260020a820491505b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ca4613c9e565b81806020019051810190610cb8919061459f565b90506000610ccb85858460400151611254565b905060008260000151806020019051810190610ce79190614277565b8251518151919250908114610d0e5760405162461bcd60e51b81526004016106aa90614ed9565b60005b81811015610d5557610d4d838281518110610d2857fe5b602002602001015185600001518381518110610d4057fe5b60200260200101516126da565b600101610d11565b50610d68846020015184602001516127c6565b5050509392505050565b60008060606000610d8389896128a9565b80519091506001600160a01b0316610daf57610da089888a612a7d565b9150600080935093505061033a565b610dbc8989838989612ca6565b905193509050955095509592505050565b60608182601f011015610e18576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610e60576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610eac576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610ecb5760405191506000825260208201604052610f15565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f04578051835260209283019201610eec565b5050858452601f01601f1916604052505b50949350505050565b600080600080610f2d85612e82565b915091506000806000806000808a6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190613f21565b905060005b8781101561112c57888181518110610fc457fe5b6020026020010151600001519650610fdc8c88612f76565b909450925083151580610fee57508215155b156111245760405163b3596f0760e01b81526001600160a01b0383169063b3596f079061101f908a90600401614b1d565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f919061466f565b9450866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156110aa57600080fd5b505afa1580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e291906147d1565b60ff1695506111036110fc600a88900a610843888861113a565b8c906131de565b9a5061112161111a600a88900a610843888761113a565b8b906131de565b99505b600101610fb0565b505050505050505050915091565b600082611149575060006103d2565b8282028284828161115657fe5b041461046b5760405162461bcd60e51b81526004018080602001828103825260218152602001806152436021913960400191505060405180910390fd5b60008082116111e6576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b8183816111ef57fe5b049392505050565b60008282111561124e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b61125c613cc5565b7f000000000000000000000000000000000000000000000000000000000000000082111561129c5760405162461bcd60e51b81526004016106aa90614dc1565b60006112a885856128a9565b80519091506001600160a01b03166112c0575061046b565b60008060006112cf8888613236565b915091506000816001600160401b03811180156112eb57600080fd5b5060405190808252806020026020018201604052801561132557816020015b611312613cfc565b81526020019060019003908161130a5790505b50905060005b828110156113a15785600001516001600160a01b031684828151811061134d57fe5b6020026020010151600001516001600160a01b0316146113995783818151811061137357fe5b602002602001015182868151811061138757fe5b60209081029190910101526001909401935b60010161132b565b5060006113ae83866111f7565b8251038252508552505060408051630f28525360e11b815290516000916001600160a01b03891691631e50a4a691600480820192602092909190829003018186803b1580156113fc57600080fd5b505afa158015611410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114349190613f21565b90506000805b838110156115a557611500836001600160a01b03166329c07fba8860000151848151811061146457fe5b6020026020010151600001518960000151858151811061148057fe5b6020026020010151602001516040518363ffffffff1660e01b81526004016114a9929190614ce3565b60206040518083038186803b1580156114c157600080fd5b505afa1580156114d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f9919061466f565b83906131de565b915061154c7f00000000000000000000000000000000000000000000000000000000000000008760000151838151811061153657fe5b60200260200101516134ec90919063ffffffff16565b1561159d5761159d897f00000000000000000000000000000000000000000000000000000000000000008860000151848151811061158657fe5b60200260200101516135819092919063ffffffff16565b60010161143a565b506000886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190613f21565b855160405163b3596f0760e01b81526001600160a01b03929092169163b3596f079161164791600401614b1d565b60206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611697919061466f565b9050600085600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d857600080fd5b505afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906147d1565b60ff16600a0a9050600061175f7f000000000000000000000000000000000000000000000000000000000000000061084361174b828d6111f7565b611759876108438a8961113a565b9061113a565b96516020808a0180516001600160a01b03909316909252905101969096525050505050509392505050565b80516060906001600160a01b031673dac17f958d2ee523a2206206994597c13d831ec714156118a1576040805160038082526080820190925290816020015b6117d1613ce4565b8152602001906001900390816117c95790505090508160000151816000815181106117f857fe5b60209081029190910101516001600160a01b03909116905260405163095ea7b360e01b9061184d907f000000000000000000000000000000000000000000000000000000000000000090600090602401614cc7565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508160008151811061188d57fe5b6020026020010151602001819052506118d5565b6040805160028082526060820190925290816020015b6118bf613ce4565b8152602001906001900390816118b75790505090505b80516040830151602084015160009182916119a6916118ff916118f990600261113a565b906131de565b8651604051636eb1769f60e11b81526001600160a01b039091169063dd62ed3e90611950908b907f000000000000000000000000000000000000000000000000000000000000000090600401614b31565b60206040518083038186803b15801561196857600080fd5b505afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061466f565b906137b1565b9150915084600001518460028503815181106119be57fe5b60209081029190910101516001600160a01b03909116905263095ea7b360e01b7f000000000000000000000000000000000000000000000000000000000000000083611a0c57600019611a0e565b825b604051602401611a1f929190614ce3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050846002850381518110611a6157fe5b6020026020010151602001819052507f0000000000000000000000000000000000000000000000000000000000000000846001850381518110611aa057fe5b6020908102919091018101516001600160a01b0390921690915285519086015160405163573ade8160e01b92611adf9290916002908b90602401614d4f565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050846001850381518110611b2157fe5b60200260200101516020018190525050505092915050565b6060600080611b488686613236565b91509150611b54613cc5565b604080516001808252818301909252600091816020015b611b73613d13565b815260200190600190039081611b6b57505086518051919250611b9e91810160209081019101614277565b81600081518110611bab57fe5b602002602001015160000181905250600081600081518110611bc957fe5b602002602001015160200151600001906002811115611be457fe5b90816002811115611bf157fe5b90525080825260208087015190830152611c09613d2d565b82518051600090611c1657fe5b60209081029190910101515151808252611c3a906001906118f9908188600361113a565b606082018190526001600160401b0381118015611c5657600080fd5b50604051908082528060200260200182016040528015611c9057816020015b611c7d613ce4565b815260200190600190039081611c755790505b50955060005b84811015611ede576000611cd07f000000000000000000000000000000000000000000000000000000000000000088848151811061153657fe5b90508015611ce8576040830180516001019052611da6565b83600081518110611cf557fe5b602002602001015160000151836040015181518110611d1057fe5b6020026020010151600001516001600160a01b0316878381518110611d3157fe5b6020026020010151600001516001600160a01b03161415611da65783600081518110611d5957fe5b602002602001015160000151836040015181518110611d7457fe5b602002602001015160200151878381518110611d8c57fe5b602090810291909101810151015260408301805160010190525b7f000000000000000000000000000000000000000000000000000000000000000088846020015181518110611dd757fe5b60209081029190910101516001600160a01b0390911690528651631a4ca37b60e21b90889084908110611e0657fe5b602002602001015160000151888481518110611e1e57fe5b6020026020010151602001518d604051602401611e3d93929190614cfc565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505088846020015181518110611e8057fe5b6020908102919091018101518101919091528301805160010190528015611ed557611ecf8884602001518d8a8681518110611eb757fe5b60200260200101516137da909392919063ffffffff16565b60208401525b50600101611c96565b5080516000906001600160401b0381118015611ef957600080fd5b50604051908082528060200260200182016040528015611f23578160200160208202803683370190505b509050600082600001516001600160401b0381118015611f4257600080fd5b50604051908082528060200260200182016040528015611f6c578160200160208202803683370190505b5090506000805b84518110156120d45760008760000151600081518110611f8f57fe5b6020026020010151600001518281518110611fa657fe5b602002602001015160000151905060008860000151600081518110611fc757fe5b6020026020010151600001518381518110611fde57fe5b60200260200101516020015190506000805b8581101561207457836001600160a01b031688828151811061200e57fe5b60200260200101516001600160a01b0316141561206c5761204b8388838151811061203557fe5b60200260200101516131de90919063ffffffff16565b87828151811061205757fe5b60200260200101818152505060019150612074565b600101611ff0565b50806120c6578287868151811061208757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818686815181106120b457fe5b60209081029190910101526001909401935b505050806001019050611f73565b5060005b818110156121d5578381815181106120ec57fe5b60200260200101518a86602001518151811061210457fe5b60209081029190910101516001600160a01b039091169052825163095ea7b360e01b907f00000000000000000000000000000000000000000000000000000000000000009085908490811061215557fe5b602002602001015160405160240161216e929190614ce3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508a8660200151815181106121b157fe5b602090810291909101810151810191909152850180516001908101909152016120d8565b507f00000000000000000000000000000000000000000000000000000000000000008985602001518151811061220757fe5b60209081029190910101516001600160a01b039091169052604051630bffcd2560e41b90612239908890602401614f62565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508985602001518151811061227c57fe5b602090810291909101810151810191909152840180516001019081905260608501516000916122ab91906111f7565b8a51038a5250979b9a5050505050505050505050565b60606000806122d08686613236565b909250905060006122e282600361113a565b9050806001600160401b03811180156122fa57600080fd5b5060405190808252806020026020018201604052801561233457816020015b612321613ce4565b8152602001906001900390816123195790505b506040805160028082526060820183529296506000929091602083019080368337019050509050858160018151811061236957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000805b848110156126ba577f00000000000000000000000000000000000000000000000000000000000000008783815181106123c257fe5b60209081029190910101516001600160a01b0390911690528551631a4ca37b60e21b908790839081106123f157fe5b60200260200101516000015187838151811061240957fe5b6020026020010151602001518c60405160240161242893929190614cfc565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505087838151811061246757fe5b6020026020010151602001819052508180600101925050876001600160a01b031686828151811061249457fe5b6020026020010151600001516001600160a01b0316146126b2578581815181106124ba57fe5b6020026020010151600001518783815181106124d257fe5b60209081029190910101516001600160a01b039091169052855163095ea7b360e01b907f00000000000000000000000000000000000000000000000000000000000000009088908490811061252357fe5b602002602001015160200151604051602401612540929190614ce3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505087838151811061257f57fe5b60200260200101516020018190525081806001019250508581815181106125a257fe5b602002602001015160000151836000815181106125bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000087838151811061260857fe5b60209081029190910101516001600160a01b03909116905285516338ed173960e01b9087908390811061263757fe5b6020026020010151602001516000858d60001960405160240161265e9594939291906150f1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505087838151811061269d57fe5b60209081029190910181015101526001909101905b60010161238d565b5060006126c784836111f7565b8751038752509498975050505050505050565b805182516001600160a01b039081169116146127085760405162461bcd60e51b81526004016106aa90614ead565b8060200151826020015111156127305760405162461bcd60e51b81526004016106aa90614f0c565b6127917f000000000000000000000000000000000000000000000000000000000000000061278b7f0000000000000000000000000000000000000000000000000000000000000000846020015161113a90919063ffffffff16565b906139c5565b602080840151908301516127a4916111f7565b11156127c25760405162461bcd60e51b81526004016106aa90614e49565b5050565b805182516001600160a01b039081169116146127f45760405162461bcd60e51b81526004016106aa90614e1d565b60006128517f000000000000000000000000000000000000000000000000000000000000000061278b7f0000000000000000000000000000000000000000000000000000000000000000856020015161113a90919063ffffffff16565b602083015190915061286390826131de565b8360200151111580156128885750602082015161288090826111f7565b836020015110155b6128a45760405162461bcd60e51b81526004016106aa90614f35565b505050565b6128b1613cfc565b6000806128bd85612e82565b915091506000805b82811015612a73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663365090a085838151811061290857fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016129309190614b1d565b60206040518083038186803b15801561294857600080fd5b505afa15801561295c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129809190613f21565b91506001600160a01b03821615612a6b576040516370a0823160e01b81526001600160a01b038316906370a08231906129bd908a90600401614b1d565b60206040518083038186803b1580156129d557600080fd5b505afa1580156129e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0d919061466f565b6020860181905215612a6b57612a3c670de0b6b3a764000061278b88886020015161113a90919063ffffffff16565b60208601528351849082908110612a4f57fe5b6020908102919091010151516001600160a01b03168552612a73565b6001016128c5565b5050505092915050565b6060600080612a8c8685613236565b91509150806002026001600160401b0381118015612aa957600080fd5b50604051908082528060200260200182016040528015612ae357816020015b612ad0613ce4565b815260200190600190039081612ac85790505b5092506000805b82811015610975577f0000000000000000000000000000000000000000000000000000000000000000858381518110612b1f57fe5b60209081029190910101516001600160a01b0390911690528351631a4ca37b60e21b90859083908110612b4e57fe5b602002602001015160000151858381518110612b6657fe5b6020026020010151602001518a604051602401612b8593929190614cfc565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050858381518110612bc457fe5b6020026020010151602001819052508180600101925050838181518110612be757fe5b602002602001015160000151858381518110612bff57fe5b60209081029190910101516001600160a01b039091169052835163a9059cbb60e01b908890869084908110612c3057fe5b602002602001015160200151604051602401612c4d929190614ce3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050858381518110612c8c57fe5b602090810291909101810151015260019182019101612aea565b6040805160018082528183019092526060916000919060208083019080368337019050509050846000015181600081518110612cde57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050856020015181600081518110612d2d57fe5b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050604080516001808252818301909252919250816020015b612d79613ce4565b815260200190600190039081612d715790505093507f000000000000000000000000000000000000000000000000000000000000000084600081518110612dbc57fe5b6020026020010151600001906001600160a01b031690816001600160a01b03168152505063ab9c4b5d60e01b898484848d8d8c8c604051602001612e0293929190615130565b60408051601f1981840301815290829052612e2796959493929160c490602401614c4a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505084600081518110612e6757fe5b60200260200101516020018190525050505095945050505050565b60606000826001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b158015612ebf57600080fd5b505afa158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef79190613f21565b6001600160a01b031663e5406dbf6040518163ffffffff1660e01b815260040160006040518083038186803b158015612f2f57600080fd5b505afa158015612f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f6b919081019061419e565b915081519050915091565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cff027d9856040518263ffffffff1660e01b8152600401612fc79190614b1d565b60206040518083038186803b158015612fdf57600080fd5b505afa158015612ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130179190613f21565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663365090a0866040518263ffffffff1660e01b81526004016130679190614b1d565b60206040518083038186803b15801561307f57600080fd5b505afa158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190613f21565b90506001600160a01b03821615613147576040516370a0823160e01b81526001600160a01b038316906370a08231906130f4908990600401614b1d565b60206040518083038186803b15801561310c57600080fd5b505afa158015613120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613144919061466f565b93505b6001600160a01b038116156131d5576040516370a0823160e01b81526001600160a01b038216906370a0823190613182908990600401614b1d565b60206040518083038186803b15801561319a57600080fd5b505afa1580156131ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d2919061466f565b92505b50509250929050565b60008282018381101561046b576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6060600080600061324686612e82565b91509150806001600160401b038111801561326057600080fd5b5060405190808252806020026020018201604052801561329a57816020015b613287613cfc565b81526020019060019003908161327f5790505b5093506000805b828110156134cc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cff027d98583815181106132e457fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161330c9190614b1d565b60206040518083038186803b15801561332457600080fd5b505afa158015613338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335c9190613f21565b91506001600160a01b038216156134c4576040516370a0823160e01b81526001600160a01b038316906370a0823190613399908b90600401614b1d565b60206040518083038186803b1580156133b157600080fd5b505afa1580156133c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e9919061466f565b8686815181106133f557fe5b6020026020010151602001818152505085858151811061341157fe5b6020026020010151602001516000146134c457613440670de0b6b3a76400006108438989898151811061093757fe5b86868151811061344c57fe5b6020026020010151602001818152505085858151811061346857fe5b60200260200101516020015160001415613481576134c4565b83818151811061348d57fe5b6020026020010151600001518686815181106134a557fe5b60209081029190910101516001600160a01b0390911690526001909401935b6001016132a1565b5060006134d983866111f7565b9050808651038652505050509250929050565b60006001600160a01b038216613504575060006103d2565b82516040516318b7373d60e01b81526001600160a01b038416916318b7373d916135319190600401614b1d565b60206040518083038186803b15801561354957600080fd5b505afa15801561355d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046b91906143bb565b6000806135928560000151856139d0565b91509150600085600001516001600160a01b0316632f13b60c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135d557600080fd5b505afa1580156135e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360d91906143bb565b9050801561371557836001600160a01b03166380cb9d7687600001516001600160a01b031663781c18db6040518163ffffffff1660e01b815260040160206040518083038186803b15801561366157600080fd5b505afa158015613675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136999190613f21565b88602001516040518363ffffffff1660e01b81526004016136bb929190614ce3565b60206040518083038186803b1580156136d357600080fd5b505afa1580156136e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370b919061466f565b602087015261379f565b6020860151604051630782e0a560e21b81526001600160a01b03861691631e0b829491613746918791600401614ce3565b60806040518083038186803b15801561375e57600080fd5b505afa158015613772573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613796919061479c565b50505060208701525b506001600160a01b0316909352505050565b600080838301848110156137cc5760008092509250506137d3565b6001925090505b9250929050565b600084600001518484815181106137ed57fe5b6020908102919091018101516001600160a01b0390921690915285015160405163095ea7b360e01b916138399173888888888889758f76e7103c6cbf23abbf58f9469190602401614ce3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505084848151811061387857fe5b6020908102919091018101510152600190920191613894613d55565b6001600160a01b03831681526020860151604082015285516138b690846139d0565b6001600160a01b039081166060840152908116602080840191909152875160408051630bc4ed8360e21b815290516000949290921692632f13b60c92600480840193829003018186803b15801561390c57600080fd5b505afa158015613920573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061394491906143bb565b905073888888888889758f76e7103c6cbf23abbf58f94686868151811061396757fe5b60209081029190910101516001600160a01b039091169052806139925761398d82613b74565b61399b565b61399b82613bf5565b8686815181106139a757fe5b60209081029190910181015101525050506001919091019392505050565b808204910615150190565b6000806000836001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a0e57600080fd5b505afa158015613a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a469190613f21565b6001600160a01b031663fcc08cbc866040518263ffffffff1660e01b8152600401613a719190614b1d565b60206040518083038186803b158015613a8957600080fd5b505afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac19190613f21565b60405163e411b36d60e01b81529091506001600160a01b0382169063e411b36d90613af0908890600401614b1d565b60606040518083038186803b158015613b0857600080fd5b505afa158015613b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b409190613f75565b5090935091506001600160a01b038316613b6c5760405162461bcd60e51b81526004016106aa90614df5565b509250929050565b6060637036e05260e01b826000015183602001518460400151600080613b9f88606001516000613c33565b613ba7613c8b565b604051602401613bbd9796959493929190614b4b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b606063f06a07a060e01b8260000151836020015184604001516000613c1f87606001516000613c33565b604051602401613bbd959493929190614c03565b613c3b613d7c565b6040518060a00160405280846001600160a01b03168152602001838152602001846001600160a01b0316815260200160006001600160a01b03168152602001613c82613c96565b90529392505050565b613c93613dc6565b90565b613c93613dfe565b604051806060016040528060608152602001613cb8613cfc565b8152602001600081525090565b604051806040016040528060608152602001613cdf613cfc565b905290565b60408051808201909152600081526060602082015290565b604080518082019091526000808252602082015290565b604051806040016040528060608152602001613cdf613ce4565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060a0016040528060006001600160a01b031681526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001613cdf613dfe565b6040518060a0016040528060006001600160a01b03168152602001600081526020016060815260200160608152602001606081525090565b604080516080810190915280600081526000602082018190526060604083018190529091015290565b803561047481615225565b60008083601f840112613e43578182fd5b5081356001600160401b03811115613e59578182fd5b6020830191508360208285010111156137d357600080fd5b600082601f830112613e81578081fd5b8135613e94613e8f826151c0565b615180565b818152846020838601011115613ea8578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112613ed2578081fd5b8151613ee0613e8f826151c0565b818152846020838601011115613ef4578283fd5b610bb28260208301602087016151e1565b600060208284031215613f16578081fd5b813561046b8161520d565b600060208284031215613f32578081fd5b815161046b8161520d565b60008060408385031215613f4f578081fd5b8235613f5a8161520d565b91506020830135613f6a8161520d565b809150509250929050565b600080600060608486031215613f89578081fd5b8351613f948161520d565b6020850151909350613fa58161520d565b6040850151909250613fb68161520d565b809150509250925092565b60008060008060608587031215613fd6578182fd5b8435613fe18161520d565b93506020850135613ff18161520d565b925060408501356001600160401b0381111561400b578283fd5b61401787828801613e32565b95989497509550505050565b60008060008060808587031215614038578182fd5b84356140438161520d565b935060208501356140538161520d565b925060408501359150606085013561406a8161520d565b939692955090935050565b600080600080600060a0868803121561408c578283fd5b85356140978161520d565b945060208601356140a78161520d565b93506040860135925060608601356140be8161520d565b915060808601356001600160401b038111156140d8578182fd5b6140e488828901613e71565b9150509295509295909350565b60008060008060008060a08789031215614109578384fd5b86356141148161520d565b955060208701356141248161520d565b9450604087013593506060870135925060808701356001600160401b0381111561414c578182fd5b61415889828a01613e32565b979a9699509497509295939492505050565b60008060006060848603121561417e578081fd5b83356141898161520d565b95602085013595506040909401359392505050565b600060208083850312156141b0578182fd5b82516001600160401b03808211156141c6578384fd5b818501915085601f8301126141d9578384fd5b81516141e7613e8f826151a3565b818152848101908486016040808502870188018b1015614205578889fd5b8896505b848710156142685780828c03121561421f578889fd5b8051818101818110888211171561423257fe5b8252825161423f8161520d565b81528289015161424e81615225565b818a01528452600196909601959287019290810190614209565b50909998505050505050505050565b600060208284031215614288578081fd5b81516001600160401b038082111561429e578283fd5b818401915084601f8301126142b1578283fd5b81516142bf613e8f826151a3565b818152602080820191908501865b848110156143ad5781518701601f196060828d03820112156142ed57898afd5b604051606081018181108a8211171561430257fe5b60405260208301516143138161520d565b815260408301516020820152606083015189811115614330578b8cfd5b92909201916040838e0383011215614346578a8bfd5b6040519150604082018281108a8211171561435d57fe5b60409081526020840151835283015189811115614378578b8cfd5b6143878e602083870101613ec2565b6020848101919091526040830193909352508652948501949290920191506001016142cd565b509098975050505050505050565b6000602082840312156143cc578081fd5b815161046b81615225565b6000602082840312156143e8578081fd5b5035919050565b600060208284031215614400578081fd5b81356001600160401b03811115614415578182fd5b610bb284828501613e71565b60008060408385031215614433578182fd5b82356001600160401b03811115614448578283fd5b61445485828601613e71565b95602094909401359450505050565b600080600060608486031215614477578081fd5b83356001600160401b0381111561448c578182fd5b61449886828701613e71565b9660208601359650604090950135949350505050565b600080604083850312156144c0578182fd5b82356001600160401b038111156144d5578283fd5b6144e185828601613e71565b9250506020830135613f6a81615233565b600080600060608486031215614506578081fd5b83356001600160401b0381111561451b578182fd5b61452786828701613e71565b935050602084013561453881615233565b929592945050506040919091013590565b60008060006060848603121561455d578081fd5b83356001600160401b03811115614572578182fd5b61457e86828701613e71565b935050602084013561458f81615233565b91506040840135613fb681615233565b6000602082840312156145b0578081fd5b81516001600160401b03808211156145c6578283fd5b9083019081850360808112156145da578384fd5b604080516060810181811085821117156145f057fe5b8252845184811115614600578687fd5b61460c89828801613ec2565b82525081601f198401121561461f578586fd5b81519250818301838110858211171561463457fe5b8252602085015193506146468461520d565b838352818501516020840152826020820152606085015182820152809550505050505092915050565b600060208284031215614680578081fd5b5051919050565b60008060006060848603121561469b578081fd5b8335925060208401356001600160401b03808211156146b8578283fd5b9085019081870360808112156146cc578384fd5b604080516060810181811085821117156146e257fe5b82528435848111156146f2578687fd5b6146fe8b828801613e71565b82525081601f1984011215614711578586fd5b81519250818301838110858211171561472657fe5b8252602085013593506147388461520d565b83835281850135602084015282602082015260608501358282015280965050614762818901613e27565b9450505050509250925092565b600080600060608486031215614783578081fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156147b1578182fd5b505082516020840151604085015160609095015191969095509092509050565b6000602082840312156147e2578081fd5b815161046b81615233565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156148325781516001600160a01b03168752958201959082019060010161480d565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b8581101561497157828403895281516060815181875280518288015287810151608081818a0152604091508183015160a081818c015285850151955060c091506148a5828c0187614a3c565b91840151945060e0916148ba8b8401876147ed565b84015194506101006148ce8b8201876147ed565b908401519450610120906148e48b8301876147ed565b918401519450610140916148fa8b8401876147ed565b8401516101608b81019190915290840151610180808c0191909152918401516101a08b01528301516101c08a0191909152925061493b6101e0890184614a10565b9250888401519150878303898901526149548383614a10565b938101519701969096525098850198935090840190600101614859565b5091979650505050505050565b6000815180845260208085018081965082840281019150828601855b85811015614971578284038952815180516001600160a01b0316855285015160408686018190526149cd81870183614a10565b9a87019a955050509084019060010161499a565b6000815180845260208085019450808401835b83811015614832578151875295820195908201906001016149f4565b60008151808452614a288160208601602086016151e1565b601f01601f19169290920160200192915050565b60048110614a4657fe5b9052565b80516001600160a01b03168252602090810151910152565b600060018060a01b0380835116845260208301516020850152806040840151166040850152806060840151166060850152608083015160a060808601528051600b8110614aab57fe5b60a0860152602081015190911660c08501526040810151608060e086015290614ad8610120860183614a10565b915060608101511515610100860152508091505092915050565b6000815160038110614b0057fe5b80845250602082015160406020850152610bb26040850182614a10565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b03808a168352808916602084015287604084015260ff8716606084015260ff8616608084015260e060a0840152614b8d60e0840186614a62565b83810360c0850152818551168152602085015160208201526040850151915060a06040820152614bc060a082018361483d565b915060608501518183036060830152614bd9838261483d565b92505060808501518183036080830152614bf38382614a10565b9c9b505050505050505050505050565b6001600160a01b038681168252851660208201526040810184905260ff8316606082015260a060808201819052600090614c3f90830184614a62565b979650505050505050565b600060018060a01b03808a16835260e06020840152614c6c60e084018a6147fa565b8381036040850152614c7e818a6149e1565b90508381036060850152614c9281896149e1565b9050818716608085015283810360a0850152614cae8187614a10565b9250505060ff831660c083015298975050505050505050565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b600060018060a01b038516825283602083015260606040830152614d46606083018461497e565b95945050505050565b6001600160a01b039485168152602081019390935260ff919091166040830152909116606082015260800190565b60006020825261046b602083018461497e565b90815260200190565b6001600160e01b031991909116815260200190565b60006020825261046b6020830184614a10565b6020808252601a9082015279696e76616c696420736c69707061676520746f6c6572616e636560301b604082015260600190565b6020808252600e908201526d1c1d081b9bdd081a185b991b195960921b604082015260600190565b6020808252601290820152710c8e6e840c2e6e6cae840dad2e6dac2e8c6d60731b604082015260600190565b6020808252601390820152720e6e4c640c2dadeeadce840dad2e6dac2e8c6d606b1b604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b6020808252601290820152710e6e4c640c2e6e6cae840dad2e6dac2e8c6d60731b604082015260600190565b6020808252601990820152780e6eec2e040c8c2e8c240d8cadccee8d040dad2e6dac2e8c6d603b1b604082015260600190565b6020808252600f908201526e0c2dadeeadce840e8dede40d0d2ced608b1b604082015260600190565b6020808252601390820152720c8e6e840c2dadeeadce840dad2e6dac2e8c6d606b1b604082015260600190565b600060208083526080830184516060808487015282825180855260a08801915060a086820289010194508584019350865b8181101561505957888603609f190183528451805160408089528151818a0181905290918a82028a01880191908b0190888b01908d5b8181101561502a578c8503605f19018352835180516001600160a01b031686528e8101518f8701528601518686018c905280518c8701528e01516080860187905261501760a0870182614a10565b955050928d0192918d0191600101614fc9565b5050505091890151888303898b0152916150448184614af2565b98505050948701945091860191600101614f93565b50505050918501519150610bb26040850183614a4a565b6020808252825160608383015280516080840181905260009291820190839060a08601905b808310156150be576150a8828551614a4a565b6040820191508484019350600183019250615095565b5092860151926150d16040870185614a4a565b9695505050505050565b61ffff9290921682521515602082015260400190565b600086825260ff8616602083015260a0604083015261511360a08301866147fa565b6001600160a01b0394909416606083015250608001529392505050565b60008482526060602083015283516080606084015261515260e0840182614a10565b905060208501516151666080850182614a4a565b5060409485015160c0840152921515919093015292915050565b6040518181016001600160401b038111828210171561519b57fe5b604052919050565b60006001600160401b038211156151b657fe5b5060209081020190565b60006001600160401b038211156151d357fe5b50601f01601f191660200190565b60005b838110156151fc5781810151838201526020016151e4565b838111156106b35750506000910152565b6001600160a01b038116811461522257600080fd5b50565b801515811461522257600080fd5b60ff8116811461522257600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212201d826e72f58ecf4141f243c656118b34174b17a1e77440e60d7266c11f35ff7464736f6c63430007060033000000000000000000000000a238dd80c259a72e81d7e4664a9801593f98d1c50000000000000000000000004f754e0f0924afd74980886b0b479fa1d7c58d0d0000000000000000000000009be950d8bff36f09e5d460271859f94c7c58344c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710