603.1k txs
1.49m calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
version
viewfunction version() view returns (string)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614faa806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa9514610332578063fa461e331461034557600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004614134565b610365565b61018a6101853660046141de565b610391565b6040519081526020015b60405180910390f35b61018a6101ab3660046142aa565b610442565b61018a6101be36600461431c565b610568565b61018a6101d136600461437c565b6105c1565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614421565b61018a610227366004614a16565b6106ea565b34801561023857600080fd5b5061025473e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af81565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473d99cae3fac551f6b6ba7b9f19bdd316951eeee9881565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba36600461431c565b610942565b61015d6102cd366004614ad8565b61095c565b61018a6102e0366004614b17565b610a97565b61018a6102f336600461437c565b610af4565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b50610254600080516020614ef583398151915281565b61018a610340366004614bcd565b610cf4565b34801561035157600080fd5b5061015d610360366004614c7d565b610d04565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038b84338484610f53565b50505050565b60008760800135428110156103b85760405162461bcd60e51b815260040161015490614cfc565b6040518b8152600080516020614f558339815191529060200160405180910390a161043333808c6103ee368e90038e018e614d24565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042e92508d91508e9050614d40565b611331565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614f558339815191529060200160405180910390a160008061047b6000341186866113fa565b9150915060006104918a6001600160a01b031690565b9050826001600160a01b0316816001600160a01b03161480156104cb57506001600160a01b038316600080516020614f1583398151915214155b806104fe57506001600160a01b0381161580156104fe57506001600160a01b038316600080516020614f15833981519152145b61054a5760405162461bcd60e51b815260206004820152601760248201527f756e78737761703a20746f6b656e206d69736d617463680000000000000000006044820152606401610154565b61055a83838b8b338c8c8c611706565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614f558339815191529060200160405180910390a16000806105a16000341186866117db565b915091506105b5338984848b8b8b8b611add565b98975050505050505050565b60008360800135428110156105e85760405162461bcd60e51b815260040161015490614cfc565b604051878152600080516020614f558339815191529060200160405180910390a160008061061a6000341187876117db565b90925090506001600160a01b03821661063a88356001600160a01b031690565b6001600160a01b031614801561067057506001600160a01b0381166106656040890160208a01614d4d565b6001600160a01b0316145b6106bc5760405162461bcd60e51b815260206004820152601960248201527f756e697377617056333a20746f6b656e206d69736d61746368000000000000006044820152606401610154565b6106dd33896001600160a01b031684848b604001358c606001358c8c611add565b9998505050505050505050565b60008660800151428110156107115760405162461bcd60e51b815260040161015490614cfc565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107775760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166107c65760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b03851661080f5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b600089604001511161085a5760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c59190614d6a565b905060005b895181101561092c578a60400151828b83815181106108eb576108eb614d83565b60200260200101516108fd9190614daf565b6109079190614dc6565b8a828151811061091957610919614d83565b60209081029190910101526001016108ca565b5060408a0181905261055a8a8a8a30898b611b27565b6000610952868686338787610442565b9695505050505050565b8060800135428110156109815760405162461bcd60e51b815260040161015490614cfc565b600082356001600160a01b038116600080516020614f158339815191521480156109d05750600080516020614ef58339815191526109c56040860160208701614d4d565b6001600160a01b0316145b156109de5760009150610a7f565b6001600160a01b038116600080516020614ef5833981519152148015610a295750600080516020614f15833981519152610a1e6040860160208701614d4d565b6001600160a01b0316145b15610a375760019150610a7f565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610a8f8686848760400135610f53565b505050505050565b6000876080013542811015610abe5760405162461bcd60e51b815260040161015490614cfc565b6040518a8152600080516020614f558339815191529060200160405180910390a161055a3380806103ee368e90038e018e614d24565b6000836080013542811015610b1b5760405162461bcd60e51b815260040161015490614cfc565b604051878152600080516020614f558339815191529060200160405180910390a1600080610b4d6000341187876113fa565b90925090506001600160a01b038735811690831681148015610b8657506001600160a01b038316600080516020614f1583398151915214155b80610bb957506001600160a01b038116158015610bb957506001600160a01b038316600080516020614f15833981519152145b610c055760405162461bcd60e51b815260206004820152601b60248201527f756e78737761703a2066726f6d546f6b656e206d69736d6174636800000000006044820152606401610154565b6001600160a01b038216610c1f60408a0160208b01614d4d565b6001600160a01b0316148015610c4c57506001600160a01b038216600080516020614f1583398151915214155b80610c9057506000610c6460408a0160208b01614d4d565b6001600160a01b0316148015610c9057506001600160a01b038216600080516020614f15833981519152145b610cdc5760405162461bcd60e51b815260206004820152601960248201527f756e78737761703a20746f546f6b656e206d69736d61746368000000000000006044820152606401610154565b61055a83838a604001358b60600135338e8d8d611706565b60006109528686868686876106ea565b610da5565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d4057610d40610d09565b6000518015610d6b5760a435600483015260248201819052610d6b6020600060448582885af1610d70565b505050565b80610d7d57610d7d610d09565b600160005114601f3d11163d151780610da157633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610ddc57610ddc610d09565b6020806004808501335afa610df357610df3610d09565b60206040600460088501335afa610e0c57610e0c610d09565b6000806000881360018114610e28576020519250879150610e31565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610ea957635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610f1b57826014860152836034860152336054860152816074860152610f1660206000608460108901600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af1610d70565b610f48565b336010860152816030860152610f3e602060006044600c89016000885af1610d70565b610f488386610d13565b505050505050505050565b60008111610f985760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000610fa2611e5e565b9050600083610fbf57600080516020614f15833981519152610fcf565b600080516020614ef58339815191525b9050600084610fec57600080516020614ef5833981519152610ffc565b600080516020614f158339815191525b9050611009838383611f5f565b60008061101885338a89612011565b9150915086156111da5760405163052f523360e11b8152600080516020614ef5833981519152600482015233602482015273d99cae3fac551f6b6ba7b9f19bdd316951eeee9860448201526064810187905273e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af90630a5ea46690608401600060405180830381600087803b1580156110a357600080fd5b505af11580156110b7573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810189905273d99cae3fac551f6b6ba7b9f19bdd316951eeee989250632e1a7d4d9150602401600060405180830381600087803b15801561110857600080fd5b505af115801561111c573d6000803e3d6000fd5b505050506001600160a01b03821630146111d5576000826001600160a01b03164760405160006040518083038185875af1925050503d806000811461117d576040519150601f19603f3d011682016040523d82523d6000602084013e611182565b606091505b50509050806111d35760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b6112b4565b8451611228578534146112285760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b600080516020614ef58339815191526001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506001600160a01b038316301490506112b4576112b4600080516020614ef5833981519152838861256e565b6112bf85898361259e565b50604051898152600080516020614f558339815191529060200160405180910390a1604080516001600160a01b03868116825285166020820152328183015260608101889052608081018890529051600080516020614f358339815191529181900360a00190a1505050505050505050565b60006001600160a01b0385166113775760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611381611e5e565b90506113a58161139b87600001516001600160a01b031690565b8760200151611f5f565b6000806113b8838b8a8a60400151612011565b90925090508960006113ce898989858f89611b27565b905060006113dd868c8661259e565b90506113e98183614de8565b9d9c50505050505050505050505050565b6000808261144a5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061146757611467614d83565b9050602002013560001c1690506000600160ff1b8686600081811061148e5761148e614d83565b9050602002013560001c166000141590508061150b57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190614dfb565b61156d565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156d9190614dfb565b93506001600160a01b038416600080516020614ef58339815191521480156115925750865b156115a957600080516020614f1583398151915293505b600086866115b8600182614de8565b8181106115c7576115c7614d83565b60200291909101359150506001600160a01b038116600160ff1b821615158061165157816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164c9190614dfb565b6116b3565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b39190614dfb565b9550600160fe1b831615156001600160a01b038716600080516020614ef58339815191521480156116e15750805b156116f857600080516020614f1583398151915296505b505050505050935093915050565b60006001600160a01b03841661174c5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611756611e5e565b9050611763818b8b611f5f565b6000806117728389898d612011565b909250905060006117ae6001600160a01b038e16600080516020614f15833981519152146117a0578d6117a3565b60005b8c8c8a8a8e89612992565b905060006117bd858a8561259e565b90506117c98183614de8565b9e9d5050505050505050505050505050565b6000808261182b5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061184857611848614d83565b905060200201351690506000600160ff1b8686600081811061186c5761186c614d83565b90506020020135166000149050806118e557816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e09190614dfb565b611947565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119479190614dfb565b93506001600160a01b038416600080516020614ef583398151915214801561196c5750865b1561198357600080516020614f1583398151915293505b60008686611992600182614de8565b8181106119a1576119a1614d83565b60200291909101359150506001600160a01b038116600160ff1b82161580611a2a57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190614dfb565b611a8c565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c9190614dfb565b9550600160fd1b831615156001600160a01b038716600080516020614ef58339815191521480156116e1575080156116f857600080516020614f158339815191529650505050505050935093915050565b600080611ae8611e5e565b9050611af5818989611f5f565b600080611b04838d8d8b612011565b915091506000611b188d848b8b8b8b6131b9565b905060006117bd858e8561259e565b60408601516000908790611b885760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b0391821691611ba69116856136d0565b9250611bb181613764565b15611c2057600080516020614ef58339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0357600080fd5b505af1158015611c17573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611c5c57898181518110611c3f57611c3f614d83565b602002602001015182611c529190614e18565b9150600101611c24565b508260400151811115611ccf5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b508651885114611d135760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b8751811015611d7c57611d74878787611d3b87602001516001600160a01b0316613764565b8d8681518110611d4d57611d4d614d83565b60200260200101518d8781518110611d6757611d67614d83565b6020026020010151613780565b600101611d16565b50611d8b8260200151856138f8565b60208201518390611da5906001600160a01b0316866136d0565b611daf9190614de8565b92508160600151831015611dfe5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614f358339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611f2d5760008560a0015260008560c00152611f58565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611f825750816001600160a01b031683608001516001600160a01b0316145b80611fae575082602001518015611fae5750806001600160a01b031683608001516001600160a01b0316145b80611fc557508251158015611fc557508260200151155b610d6b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e20696e666f0000000000000000006044820152606401610154565b600080856020015115612036573061202d876080015130613bc0565b91509150612565565b855161204757508290506000612565565b61234a565b8082028115828204841417840261206b5763ad251c276000526004601cfd5b9290920492915050565b60008282101561208d576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d6b57610d6b60607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72612092565b6040516084810160405263052f523360e11b8152816004820152826024820152836044820152846064820152600080608483600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af190508061215f5761215f60577c13636c61696d20746f6b656e73206661696c6564000000000000000000612092565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa806121c0576121c06058740519d95d0818985b185b98d953d98819985a5b195960421b612092565b6000518988016121eb670de0b6b3a7640000836121e684670de0b6b3a76400008e61204c565b61204c565b9550508085111561221e5761221e60597c15696e76616c696420616d6f756e74315363616c656400000000000000612092565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615612257573d863b15171591505b8161228457612284605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612092565b88156122f9576122948582612075565b93508860048401528360248401526020600060448560008a5af1915081601f3d11600160005114161516156122cc573d863b15171591505b816122f9576122f9605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612092565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020614f158339815191528414610100020191600091829182918291906301c9c38082820111156123be576123be605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612092565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a0204905084610100811461244857610101811461246b57610110811461244857610111811461246b5780156124b157600181146124c857601081146124f657601181146125225761244360526e0e696e76616c69642073746174757360701b612092565b612556565b61245283866120ae565b6124438584600080516020614f15833981519152612306565b61247583866120ae565b61248e8584600080516020614f15833981519152612306565b61249882856120ae565b6124438483600080516020614f15833981519152612306565b6124bd83868e8a6120e5565b612443858489612306565b6124d483868e8a6120e5565b6124df858489612306565b6124eb82858e8a6120e5565b612443848389612306565b61250283308e8a6120e5565b61251060008085888b612166565b5061251c86828a612306565b50612556565b612530828401308e8a6120e5565b61253d828585888b612166565b61254887838b612306565b61255386828b612306565b50505b50505050505050836000915091505b94509492505050565b6125818363a9059cbb60e01b8484613c40565b610d6b5760405163fb7f507960e01b815260040160405180910390fd5b600083602001516125b15750600061298b565b604084015160a08501516301c9c38081830111156125f1576125f1605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612092565b6080860151606087015160405160608101604052600080516020614f1583398151915283146001811461284857604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa80612679576126796058740519d95d0818985b185b98d953d98819985a5b195960421b612092565b6000518a81101561269d5761269d604d6a029cdd588819985a5b195960921b612092565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156126e6573d873b15171591505b8161271357612713605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612092565b868552896020860152856040860152600080516020614ed5833981519152606086a187156127d55760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d1160016000511416151615612787573d893b15171593505b836127b4576127b4605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612092565b88875260208701526040860152600080516020614ed5833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156128145750843b153d17155b806128415761284160607c1c7472616e7366657220746f6b656e207265636569766572206661696c612092565b5050612984565b8747101561286957612869604d6a029cdd588819985a5b195960921b612092565b874703633b9aca008782020497506000806000808b885af1806128ae576128ae605d7c197472616e73666572206574682072656665726572206661696c000000612092565b858452886020850152846040850152600080516020614ed5833981519152606085a186156129405760c08c0151633b9aca0083890204998a0199600080808084865af18061291e5761291e605d7c197472616e73666572206574682072656665726572206661696c000000612092565b5087865260208601526040850152600080516020614ed5833981519152606085a15b6000806000808c86038f60601b60601c5af190508061298157612981605e7c1a7472616e7366657220657468207265636569766572206661696c0000612092565b50505b5050505050505b9392505050565b6000612bc2565b828152600060206000600484600401865afa6129ce576129ce6054700419d95d081d1bdad95b8819985a5b195960621b612092565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa612a1c57612a1c605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612092565b600051915083836004015260206000602485855afa612a5d57612a5d60597c1562616c616e63654f662063616c6c206661696c656400000000000000612092565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa612a1c57612a1c605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612092565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612af457612af460587c1472657365727665732063616c6c206661696c65640000000000000000612092565b600051602051868015612b20578915612b1857612b118786612a69565b8390039650505b909190612b37565b8815612b3757612b3087866129d9565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612b715781600484015260006024840152612b7f565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16105b5576105b5605470041cddd85c0818d85b1b0819985a5b195960621b612092565b846020850281018580612be957612be9604e6b0b656d70747920706f6f6c7360901b612092565b5060405182358b1560018114612c93573415612c1f57612c1f60557111696e76616c6964206d73672e76616c756560581b612092565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af1612c8e57612c8e6056720498db185a5b481d1bdad95b8819985a5b195960521b612092565b612d60565b60018c341003612cbd57612cbd60557111696e76616c6964206d73672e76616c756560581b612092565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614ef58339815191525af1612d0a57612d0a6056720499195c1bdcda5d081155120819985a5b195960521b612092565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614ef58339815191525af1612d6057612d60605874051d1c985b9cd9995c8815d155120819985a5b195960421b612092565b508a9450602084015b83811015612dbf578035612db36001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612aac565b96509150602001612d69565b5060009350600160fe1b81168015612f0d5760009450612e0c3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612aac565b9550672e1a7d4da9059cbb60c01b835273d99cae3fac551f6b6ba7b9f19bdd316951eeee986008840152856028840152602060006044856004016000600080516020614ef58339815191525af1612e8057612e80605874051d1c985b9cd9995c8815d155120819985a5b195960421b612092565b85600484015260206000602485600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af1612ed257612ed260577c13776974686472617720455448206661696c6564000000000000000000612092565b600080600080898b5af1612f0857612f0860577c137472616e7366657220455448206661696c6564000000000000000000612092565b61314b565b60009350600160ff1b82168015612fbf57600160fc1b831615612fba576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612f7357612f73605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612092565b600051955087846004015260206000602486895afa612fb457612fb460567c15746f6b656e302062616c616e6365206661696c656400000000000000612092565b60005194505b61305b565b600160fd1b83161561305b576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa61301457613014605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612092565b600051955087846004015260206000602486895afa6130555761305560597c15746f6b656e312062616c616e6365206661696c656400000000000000612092565b60005194505b506130938763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612aac565b955084600010600181146130fc57600160ff1b831680156130d4576130cd6770a082310dfe168160c01b6001600160a01b03861687612999565b96506130f6565b6130f36770a08231d21220a760c01b6001600160a01b03861687612999565b96505b50613149565b6770a082310dfe168160c01b845287846004015260206000602486895afa613141576131416058740519d95d0818985b185b98d953d98819985a5b195960421b612092565b846000510396505b505b50508884101561317d5761317d605a7c164d696e2072657475726e206e6f742072656163686564000000000000612092565b8a8152826020820152326040820152896060820152836080820152600080516020614f3583398151915260a082a1505050979650505050505050565b60006135d1565b6000856001600160ff1b0310156131e257630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461327657630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af18061326a5760206000fd5b5060206000803e6132d9565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132d15760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156132ff576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361332757631841b4e160e01b60005260046000fd5b60008060008084600080516020614ef58339815191525af180610da157610da160577c1357455448206465706f736974206661696c6564000000000000000000612092565b60405160048101672e1a7d4da9059cbb60c01b825273d99cae3fac551f6b6ba7b9f19bdd316951eeee9860048201528360248201526000806044836000600080516020614ef58339815191525af19050806133e9576133e960587c147472616e736665722077657468206661696c65640000000000000000612092565b836004830152600080602484600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af190508061343d5761343d60587c1477697468647261772077657468206661696c65640000000000000000612092565b60008060008087875af190508061038b5761038b605571045cd95b9908195d1a195c8819985a5b1959605a1b612092565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa9050806134bd576134bd6055710459d95d081d1bdad95b8c0819985a5b1959605a1b612092565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa9050806134bd576134bd6054710459d95d081d1bdad95b8c4819985a5b1959605a1b612092565b600080516020614f158339815191528034613563578235600160ff1b811615600181146135545761354d826134cc565b9350613560565b61355d8261346e565b93505b50505b8335600160fd1b166135a0578335600160ff1b811615600181146135915761358a8261346e565b925061359d565b61359a826134cc565b92505b50505b60405182600052816020523260405285608052600080516020614f3583398151915260a06000a16040525050505050565b82601f196020840282010183806135f3576333f3e07b60e11b60005260046000fd5b508860003411801561360c576136088961330c565b309a505b5087606052825b8281101561363657613629898235848e306131c0565b309b509850602001613613565b506000600160fd1b83351611806001811461365657801561367557613686565b6136648a8535858f306131c0565b9550613670868c61336c565b613686565b6136838a8535858f8f6131c0565b95505b505050858310156136b9576136b9605a7c164d696e2072657475726e206e6f742072656163686564000000000000612092565b6136c483828461351d565b50509695505050505050565b60006136db83613764565b156136f157506001600160a01b0381163161375e565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b9190614d6a565b90505b92915050565b6001600160a01b0316600080516020614f158339815191521490565b60006137b08260008151811061379857613798614d83565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b818110156138eb5780156137fc576137e186828151811061379857613798614d83565b94506137f66001600160a01b038616306136d0565b9650309a505b30613808600184614de8565b82148015613814575088155b156138205750886138b8565b61382b600184614de8565b82108015613861575086613840836001614e18565b8151811061385057613850614d83565b602002602001015160200151516001145b156138b35786613872836001614e18565b8151811061388257613882614d83565b6020026020010151602001516000815181106138a0576138a0614d83565b60200260200101519050600194506138b8565b600094505b6138df8c8c838b8b87815181106138d1576138d1614d83565b602002602001015189613c94565b508392506001016137be565b5050505050505050505050565b61390a826001600160a01b0316613764565b15613b32576040516370a0823160e01b8152306004820152600090600080516020614ef5833981519152906370a0823190602401602060405180830381865afa15801561395b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397f9190614d6a565b90508015613a785760405163a9059cbb60e01b815273d99cae3fac551f6b6ba7b9f19bdd316951eeee98600482015260248101829052600080516020614ef58339815191529063a9059cbb906044016020604051808303816000875af11580156139ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a119190614e2b565b50604051632e1a7d4d60e01b81526004810182905273d99cae3fac551f6b6ba7b9f19bdd316951eeee9890632e1a7d4d90602401600060405180830381600087803b158015613a5f57600080fd5b505af1158015613a73573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d6b5747801561038b576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613adc576040519150601f19603f3d011682016040523d82523d6000602084013e613ae1565b606091505b505090508061215f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610da1576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bad9190614d6a565b90508015610d6b57610d6b83838361256e565b6000600080516020614f15833981519152831460018114613c3457604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613c2957613c296058740519d95d0818985b185b98d953d98819985a5b195960421b612092565b506000519150613c39565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015613c8c573d8015613c8257600160005114601f3d11169150613c8a565b6000863b1191505b505b949350505050565b6000805b835151811015613e4157600084604001518281518110613cba57613cba614d83565b602002602001015160001b9050600080600080613ce189608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613d0d8288614e18565b895151909750613d1f90600190614de8565b8603613d8657612710871115613d865760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b87613de15760008261271014613db257612710613da3848d614daf565b613dad9190614dc6565b613db4565b8a5b9050613ddf8e8b602001518981518110613dd057613dd0614d83565b60200260200101518484613e4b565b505b5050613e2b8188600001518681518110613dfd57613dfd614d83565b60200260200101518b858b606001518981518110613e1d57613e1d614d83565b60200260200101518f613eeb565b5050508080613e3990614e48565b915050613c98565b5050505050505050565b306001600160a01b03851603613e6b57613e6682848361256e565b61038b565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af90630a5ea46690608401600060405180830381600087803b158015613ed757600080fd5b505af1158015613e41573d6000803e3d6000fd5b8515613ff057600080866001600160a01b0316636f7929f260e01b878787604051602401613f1b93929190614e61565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f696001600160a01b038616650f2882bf0b3360d21b614e18565b604051602001613f7a929190614e96565b60408051601f1981840301815290829052613f9491614eb8565b6000604051808303816000865af19150503d8060008114613fd1576040519150601f19603f3d011682016040523d82523d6000602084013e613fd6565b606091505b509150915081613fe957613fe9816140e4565b5050610a8f565b600080866001600160a01b03166330e6ae3160e01b87878760405160240161401a93929190614e61565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526140686001600160a01b038616650f2882bf0b3360d21b614e18565b604051602001614079929190614e96565b60408051601f198184030181529082905261409391614eb8565b6000604051808303816000865af19150503d80600081146140d0576040519150601f19603f3d011682016040523d82523d6000602084013e6140d5565b606091505b509150915081613e4157613e41815b8051156140f357805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b6000806040838503121561414757600080fd5b50508035926020909101359150565b6001600160a01b038116811461413157600080fd5b803561417681614156565b919050565b600060a0828403121561418d57600080fd5b50919050565b60008083601f8401126141a557600080fd5b5081356001600160401b038111156141bc57600080fd5b6020830191508360208260051b85010111156141d757600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156141fd57600080fd5b8935985060208a013561420f81614156565b975061421e8b60408c0161417b565b965060e08a01356001600160401b038082111561423a57600080fd5b6142468d838e01614193565b90985096506101008c013591508082111561426057600080fd5b61426c8d838e01614193565b90965094506101208c013591508082111561428657600080fd5b506142938c828d01614193565b915080935050809150509295985092959850929598565b60008060008060008060a087890312156142c357600080fd5b86359550602087013594506040870135935060608701356142e381614156565b925060808701356001600160401b038111156142fe57600080fd5b61430a89828a01614193565b979a9699509497509295939492505050565b60008060008060006080868803121561433457600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561435f57600080fd5b61436b88828901614193565b969995985093965092949392505050565b6000806000806000610100868803121561439557600080fd5b8535945060208601356143a781614156565b93506143b6876040880161417b565b925060e08601356001600160401b0381111561435f57600080fd5b60005b838110156143ec5781810151838201526020016143d4565b50506000910152565b6000815180845261440d8160208601602086016143d1565b601f01601f19169290920160200192915050565b60208152600061298b60208301846143f5565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561446c5761446c614434565b60405290565b60405161014081016001600160401b038111828210171561446c5761446c614434565b604051601f8201601f191681016001600160401b03811182821017156144bd576144bd614434565b604052919050565b600060a082840312156144d757600080fd5b6144df61444a565b90508135815260208201356144f381614156565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561453757614537614434565b5060051b60200190565b600082601f83011261455257600080fd5b813560206145676145628361451e565b614495565b82815260059290921b8401810191818101908684111561458657600080fd5b8286015b848110156145a1578035835291830191830161458a565b509695505050505050565b600082601f8301126145bd57600080fd5b813560206145cd6145628361451e565b82815260059290921b840181019181810190868411156145ec57600080fd5b8286015b848110156145a157803561460381614156565b83529183019183016145f0565b600082601f83011261462157600080fd5b81356001600160401b0381111561463a5761463a614434565b61464d601f8201601f1916602001614495565b81815284602083860101111561466257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261469057600080fd5b813560206146a06145628361451e565b82815260059290921b840181019181810190868411156146bf57600080fd5b8286015b848110156145a15780356001600160401b038111156146e25760008081fd5b6146f08986838b0101614610565b8452509183019183016146c3565b600061470c6145628461451e565b838152905060208101600584901b830185101561472857600080fd5b825b8460051b8401811015614898576001600160401b03808235111561474d57600080fd5b8135850187601f82011261476057600080fd5b61476d614562823561451e565b81358082526020808301929160051b8401018a81111561478c57600080fd5b602084015b818110156148815785813511156147a757600080fd5b8035850160a0818e03601f190112156147bf57600080fd5b6147c761444a565b87602083013511156147d857600080fd5b6147ea8e6020808501358501016145ac565b815287604083013511156147fd57600080fd5b6148108e602060408501358501016145ac565b6020820152876060830135111561482657600080fd5b6148398e60206060850135850101614541565b6040820152876080830135111561484f57600080fd5b6148628e6020608085013585010161467f565b606082015260a091909101356080820152845260209384019301614791565b50508552505060209283019291909101905061472a565b50509392505050565b600082601f8301126148b257600080fd5b61298b838335602085016146fe565b801515811461413157600080fd5b8035614176816148c1565b600082601f8301126148eb57600080fd5b813560206148fb6145628361451e565b82815260059290921b8401810191818101908684111561491a57600080fd5b8286015b848110156145a15780356001600160401b038082111561493e5760008081fd5b90880190610140828b03601f19018113156149595760008081fd5b614961614472565b878401358152604061497481860161416b565b89830152606061498581870161416b565b828401526080915061499882870161416b565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206149da8187016148cf565b838301529285013592848411156149f357600091508182fd5b614a018e8b86890101614610565b9083015250865250505091830191830161491e565b6000806000806000806101408789031215614a3057600080fd5b614a3a88886144c5565b955060a08701356001600160401b0380821115614a5657600080fd5b614a628a838b01614541565b965060c0890135915080821115614a7857600080fd5b614a848a838b016148a1565b955060e0890135915080821115614a9a57600080fd5b50614aa789828a016148da565b935050610100870135614ab981614156565b9150610120870135614aca81614156565b809150509295509295509295565b600080600060e08486031215614aed57600080fd5b833592506020840135614aff81614156565b9150614b0e856040860161417b565b90509250925092565b600080600080600080600080610120898b031215614b3457600080fd5b88359750614b458a60208b0161417b565b965060c08901356001600160401b0380821115614b6157600080fd5b614b6d8c838d01614193565b909850965060e08b0135915080821115614b8657600080fd5b614b928c838d01614193565b90965094506101008b0135915080821115614bac57600080fd5b50614bb98b828c01614193565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614be657600080fd5b614bf087876144c5565b945060a08601356001600160401b0380821115614c0c57600080fd5b614c1889838a01614541565b955060c0880135915080821115614c2e57600080fd5b614c3a89838a016148a1565b945060e0880135915080821115614c5057600080fd5b50614c5d888289016148da565b925050610100860135614c6f81614156565b809150509295509295909350565b60008060008060608587031215614c9357600080fd5b843593506020850135925060408501356001600160401b0380821115614cb857600080fd5b818701915087601f830112614ccc57600080fd5b813581811115614cdb57600080fd5b886020828501011115614ced57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614d3657600080fd5b61298b83836144c5565b600061298b3684846146fe565b600060208284031215614d5f57600080fd5b813561298b81614156565b600060208284031215614d7c57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761375e5761375e614d99565b600082614de357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561375e5761375e614d99565b600060208284031215614e0d57600080fd5b815161298b81614156565b8082018082111561375e5761375e614d99565b600060208284031215614e3d57600080fd5b815161298b816148c1565b600060018201614e5a57614e5a614d99565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614e8d908301846143f5565b95945050505050565b60008351614ea88184602088016143d1565b9190910191825250602001919050565b60008251614eca8184602087016143d1565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba264697066735822122068d3bf22b585b13a410ff36fd92ec1d313c6c69a7580f73599f533f6e658052764736f6c63430008110033