3 txs
3.86m 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)
admin
viewfunction admin() view returns (address)
approveProxy
viewfunction approveProxy() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
feeRateAndReceiver_UNUSED
viewfunction feeRateAndReceiver_UNUSED() view returns (uint256)
operator_UNUSED
viewfunction operator_UNUSED(address) view returns (address)
orderRemaining_UNUSED
viewfunction orderRemaining_UNUSED(bytes32) view returns (uint256)
owner
viewfunction owner() view returns (address)
priorityAddresses
viewfunction priorityAddresses(address) view returns (bool)
wNativeRelayer
viewfunction wNativeRelayer() view returns (address)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setPriorityAddress
nonpayablefunction setPriorityAddress(address _priorityAddress, bool valid)
setProtocolAdmin
nonpayablefunction setProtocolAdmin(address _newAdmin)
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[] extraData, address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapByOrderIdByXBridge
payablefunction smartSwapByOrderIdByXBridge(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToByXBridge
payablefunction uniswapV3SwapToByXBridge(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithPermit
nonpayablefunction uniswapV3SwapToWithPermit(uint256 receiver, address srcToken, uint256 amount, uint256 minReturn, uint256[] pools, bytes permit) returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapByOrderIdByXBridge
payablefunction unxswapByOrderIdByXBridge(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)
events
AdminChanged
event AdminChanged(address newAdmin)
CommissionRecord
event CommissionRecord(uint256 commissionAmount, address referrerAddress)
Initialized
event Initialized(uint8 version)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriorityAddressChanged
event PriorityAddressChanged(address priorityAddress, bool valid)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614f50806100206000396000f3fe6080604052600436106101d15760003560e01c80639a09b285116100f7578063e0af361611610095578063f3dced3c11610064578063f3dced3c1461052d578063f3e144b61461054d578063f851a4401461056d578063fa461e331461058d57600080fd5b8063e0af3616146104ab578063e99bfa95146104cd578063f1489b9f146104e0578063f2fde38b1461050d57600080fd5b8063d13a35e6116100d1578063d13a35e61461044f578063d1b260d41461046f578063d3507df514610482578063d8837daf1461049857600080fd5b80639a09b28514610406578063b80c2f0914610426578063ca68d8f61461043957600080fd5b8063715018a61161016f5780638575654f1161013e5780638575654f14610382578063869c6b4b146103955780638da5cb5b146103d55780639871efa4146103f357600080fd5b8063715018a61461031057806373679b6b14610325578063779e45fc1461034d5780638129fc1c1461036d57600080fd5b80630d5f0e3b116101ab5780630d5f0e3b1461027457806327f9fa1e14610287578063591b3d08146102d55780636aa47645146102e857600080fd5b806301617fab1461022857806303b87e5f1461023b57806308298b5a1461026157600080fd5b36610223573233036102215760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b610221610236366004613f24565b6105ad565b61024e610249366004613fce565b610964565b6040519081526020015b60405180910390f35b61024e61026f36600461409a565b610a28565b61024e61028236600461410c565b610a6a565b34801561029357600080fd5b506102bd6102a236600461416c565b60b4602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610258565b61024e6102e3366004614760565b610aaa565b3480156102f457600080fd5b506102bd73d99cae3fac551f6b6ba7b9f19bdd316951eeee9881565b34801561031c57600080fd5b50610221610d23565b34801561033157600080fd5b506102bd730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a4881565b34801561035957600080fd5b50610221610368366004614822565b610d37565b34801561037957600080fd5b50610221610dee565b61024e61039036600461410c565b610f08565b3480156103a157600080fd5b506103c56103b036600461416c565b60996020526000908152604090205460ff1681565b6040519015158152602001610258565b3480156103e157600080fd5b506033546001600160a01b03166102bd565b61024e61040136600461410c565b61100b565b34801561041257600080fd5b5061022161042136600461416c565b611042565b61024e61043436600461485b565b6110e4565b34801561044557600080fd5b5061024e61012c81565b34801561045b57600080fd5b506098546102bd906001600160a01b031681565b61024e61047d36600461485b565b611162565b34801561048e57600080fd5b5061024e60b65481565b61024e6104a636600461410c565b6112e9565b3480156104b757600080fd5b506102bd600080516020614ebb83398151915281565b61024e6104db366004614911565b6113e8565b3480156104ec57600080fd5b5061024e6104fb3660046149c1565b60b56020526000908152604090205481565b34801561051957600080fd5b5061022161052836600461416c565b6113f8565b34801561053957600080fd5b506097546102bd906001600160a01b031681565b34801561055957600080fd5b5061024e610568366004614a1b565b61146e565b34801561057957600080fd5b5060ad546102bd906001600160a01b031681565b34801561059957600080fd5b506102216105a8366004614aa5565b6114bc565b600160ff1b81166001600160801b038216806106005760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610218565b81156107b25760405163052f523360e11b8152600080516020614ebb8339815191526004820152336024820152730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a4860448201526001600160801b038216606482015273d99cae3fac551f6b6ba7b9f19bdd316951eeee9890630a5ea46690608401600060405180830381600087803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b0384166004820152730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a489250632e1a7d4d9150602401600060405180830381600087803b1580156106fc57600080fd5b505af1158015610710573d6000803e3d6000fd5b50506040516000925033915047908381818185875af1925050503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b50509050806107ac5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610218565b50610890565b806001600160801b031634146108035760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610218565b600080516020614ebb8339815191526001600160a01b031663d0e30db0826001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b5050505050610890600080516020614ebb83398151915233836001600160801b031661170b565b604051848152600080516020614efb8339815191529060200160405180910390a1600080516020614edb833981519152826108df5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6108ef565b600080516020614ebb8339815191525b8361090857600080516020614ebb83398151915261091e565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015233908201526001600160801b03831660608201819052608082015260a00160405180910390a150505050565b600087608001354281101561098b5760405162461bcd60e51b815260040161021890614af7565b61099361173b565b6040518b8152600080516020614efb8339815191529060200160405180910390a1610a0e33808c6109c9368e90038e018e614b1f565b8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610a0992508d91508e9050614b3b565b611794565b9150610a1a6001606555565b509998505050505050505050565b60405160a087901c8152600090600080516020614efb8339815191529060200160405180910390a1610a5f87878733888888611842565b979650505050505050565b60405160a086901c8152600090600080516020614efb8339815191529060200160405180910390a1610aa03387878787876118d0565b9695505050505050565b6000866080015142811015610ad15760405162461bcd60e51b815260040161021890614af7565b610ad961173b565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed198101610b3f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610218565b6001600160a01b038416610b8e5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610218565b6001600160a01b038516610bd75760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610218565b6000896040015111610c225760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610218565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8d9190614b48565b905060005b8951811015610cf4578a60400151828b8381518110610cb357610cb3614b61565b6020026020010151610cc59190614b8d565b610ccf9190614ba4565b8a8281518110610ce157610ce1614b61565b6020908102919091010152600101610c92565b5060408a01819052610d0a8a8a8a30898b61192b565b93505050610d186001606555565b509695505050505050565b610d2b611c62565b610d356000611cbc565b565b60ad546001600160a01b0316331480610d5a57506033546001600160a01b031633145b610d8b5760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610218565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b600054610100900460ff1615808015610e0e5750600054600160ff909116105b80610e285750303b158015610e28575060005460ff166001145b610e8b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610218565b6000805460ff191660011790558015610eae576000805461ff0019166101001790555b610eb6611d0e565b610ebe611d3d565b8015610f05576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50565b3360009081526099602052604081205460ff161515600114610f3c5760405162461bcd60e51b815260040161021890614bc6565b60405160a087901c8152600080516020614efb8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015610fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc59190614bed565b90925090506001600160a01b038116610ff05760405162461bcd60e51b815260040161021890614c1c565b610fff88888885858a8a611842565b98975050505050505050565b60405160a086901c8152600090600080516020614efb8339815191529060200160405180910390a1610aa086868633338888611842565b60ad546001600160a01b031633148061106557506033546001600160a01b031633145b6110965760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610218565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001610efc565b600087608001354281101561110b5760405162461bcd60e51b815260040161021890614af7565b61111361173b565b6040518a8152600080516020614efb8339815191529060200160405180910390a16111493380806109c9368e90038e018e614b1f565b91506111556001606555565b5098975050505050505050565b60008760800135428110156111895760405162461bcd60e51b815260040161021890614af7565b61119161173b565b3360009081526099602052604090205460ff1615156001146111c55760405162461bcd60e51b815260040161021890614bc6565b6040518a8152600080516020614efb8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124a9190614bed565b90925090506001600160a01b0381166112755760405162461bcd60e51b815260040161021890614c1c565b6112db8283838e80360381019061128c9190614b1f565b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d90610a099190614b3b565b935050506111556001606555565b3360009081526099602052604081205460ff16151560011461131d5760405162461bcd60e51b815260040161021890614bc6565b60405160a087901c8152600080516020614efb8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190614bed565b90925090506001600160a01b0381166113d15760405162461bcd60e51b815260040161021890614c1c565b610fff82826001600160a01b0316898989896118d0565b6000610aa0868686868687610aaa565b611400611c62565b6001600160a01b0381166114655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610218565b610f0581611cbc565b60405160a089901c8152600090600080516020614efb8339815191529060200160405180910390a16114a1888484611d6c565b6114af338a898989896118d0565b9998505050505050505050565b61155d565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa6114f8576114f86114c1565b60005180156115235760a4356004830152602482018190526115236020600060448582885af1611528565b505050565b80611535576115356114c1565b600160005114601f3d11163d15178061155957633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa611594576115946114c1565b6020806004808501335afa6115ab576115ab6114c1565b60206040600460088501335afa6115c4576115c46114c1565b60008060008813600181146115e05760205192508791506115e9565b60005192508891505b507fffdb1d10011ad0ff90774d0c6bb92e5c5c8b4461f700000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831461166157635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146116d3578260148601528360348601523360548601528160748601526116ce60206000608460108901600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af1611528565b611700565b3360108601528160308601526116f6602060006044600c89016000885af1611528565b61170083866114cb565b505050505050505050565b61171e8363a9059cbb60e01b8484611ed2565b6115235760405163fb7f507960e01b815260040160405180910390fd5b60026065540361178d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610218565b6002606555565b60006001600160a01b0385166117da5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610218565b60006117e4611f26565b90506000806117f9838b8a8a60400151611fce565b909250905089600061180f898989858f8961192b565b9050600061181e868c86612198565b905061182a8183614c44565b9d9c50505050505050505050505050565b6001606555565b60006001600160a01b0384166118885760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610218565b6000611892611f26565b90506000806118a38389898d611fce565b9150915060006118c16001600160a01b038d168c8c8a8a8e89612415565b9050600061181e858a85612198565b6000806118db611f26565b90506000806118ec838b8b8b611fce565b9150915060006119008b848b8b8b8b612c3c565b9050600061190f858c85612198565b905061191b8183614c44565b9c9b505050505050505050505050565b6040860151600090879061198c5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610218565b805160208201516001600160a01b03918216916119aa91168561315f565b92506119b5816131f3565b15611a2457600080516020614ebb8339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a0757600080fd5b505af1158015611a1b573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611a6057898181518110611a4357611a43614b61565b602002602001015182611a569190614c57565b9150600101611a28565b508260400151811115611ad35760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610218565b508651885114611b175760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610218565b60005b8751811015611b8057611b78878787611b3f87602001516001600160a01b03166131f3565b8d8681518110611b5157611b51614b61565b60200260200101518d8781518110611b6b57611b6b614b61565b6020026020010151613215565b600101611b1a565b50611b8f82602001518561338d565b60208201518390611ba9906001600160a01b03168661315f565b611bb39190614c44565b92508160600151831015611c025760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610218565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614edb8339815191529060a00160405180910390a150509695505050505050565b6033546001600160a01b03163314610d355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610218565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611d355760405162461bcd60e51b815260040161021890614c6a565b610d35613655565b600054610100900460ff16611d645760405162461bcd60e51b815260040161021890614c6a565b610d35613685565b8015611523576000606060e0839003611e0d576040516001600160a01b03861690611da69063d505accf60e01b9087908790602001614cb5565b60408051601f1981840301815290829052611dc091614cfd565b6000604051808303816000865af19150503d8060008114611dfd576040519150601f19603f3d011682016040523d82523d6000602084013e611e02565b606091505b509092509050611e7c565b610100839003611e3e576040516001600160a01b03861690611da6906323f2ebc360e21b9087908790602001614cb5565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610218565b81611ecb57611eb2816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b8152506136ac565b60405162461bcd60e51b81526004016102189190614d45565b5050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015611f1e573d8015611f1457600160005114601f3d11169150611f1c565b6000863b1191505b505b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260405160a081016040525060203603356001600160d01b03198116651e51057e155560d11b1482526001600160d01b03198116653ca20afc2bbb60d01b14826020015265ffffffffffff60a01b811660a01c82604001526001600160a01b0381168260600152506001600160a01b03604036033516816080015290565b600080856020015115611ff35730611fea87608001513061380f565b9150915061218f565b85516120045750829050600061218f565b612025565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b604086015161012c81111561205c5761205c605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612009565b60808701516060880151826127100383870204925073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee821460018114612110576040516084810160405263052f523360e11b8152836004820152896024820152826044820152846064820152600080608483600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af190508061210a5761210a60577c13636c61696d20746f6b656e73206661696c6564000000000000000000612009565b50612149565b60008060008087865af18061214757612147605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200612009565b505b50604051915060408201604052828252806020830152507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a15050836000915091505b94509492505050565b600083602001516121ab5750600061240e565b604084015161012c8111156121e2576121e2605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612009565b6080850151606086015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82146001811461232d57604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612262576122626058740519d95d0818985b185b98d953d98819985a5b195960421b612009565b6000518881101561228657612286604d6a029cdd588819985a5b195960961b612009565b888103905061271087820204975084600884015287602884015260008060446004860160008a5af19150816122dd576122dd605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612009565b8960048401528781036024840152506000806044846000895af19050806123265761232660607c1c7472616e7366657220746f6b656e207265636569766572206661696c612009565b50506123cf565b8547101561234e5761234e604d6a029cdd588819985a5b195960961b612009565b85470361271085820204955060008060008089875af18061239157612391605d7c197472616e73666572206574682072656665726572206661696c000000612009565b6000806000808a86038d5af19050806123cc576123cc605e7c1a7472616e7366657220657468207265636569766572206661696c0000612009565b50505b5060405192506040830160405283835280602084015250507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a1505b9392505050565b6000612645565b828152600060206000600484600401865afa612451576124516054700419d95d081d1bdad95b8819985a5b195960621b612009565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61249f5761249f605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612009565b600051915083836004015260206000602485855afa6124e0576124e060597c1562616c616e63654f662063616c6c206661696c656400000000000000612009565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61249f5761249f605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612009565b668b0367c240bc6b60c21b8152600060406000600484600401875afa6125775761257760587c1472657365727665732063616c6c206661696c65640000000000000000612009565b6000516020518680156125a357891561259b5761259487866124ec565b8390039650505b9091906125ba565b88156125ba576125b3878661245c565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156125f45781600484015260006024840152612602565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af1610fff57610fff605470041cddd85c0818d85b1b0819985a5b195960621b612009565b84602085028101858061266c5761266c604e6b0b656d70747920706f6f6c7360901b612009565b5060405182358b15600181146127165734156126a2576126a260557111696e76616c6964206d73672e76616c756560581b612009565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af1612711576127116056720498db185a5b481d1bdad95b8819985a5b195960521b612009565b6127e3565b60018c3410036127405761274060557111696e76616c6964206d73672e76616c756560581b612009565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614ebb8339815191525af161278d5761278d6056720499195c1bdcda5d081155120819985a5b195960521b612009565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614ebb8339815191525af16127e3576127e3605874051d1c985b9cd9995c8815d155120819985a5b195960421b612009565b508a9450602084015b838110156128425780356128366001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b61252f565b965091506020016127ec565b5060009350600160fe1b81168015612990576000945061288f3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61252f565b9550672e1a7d4da9059cbb60c01b8352730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a486008840152856028840152602060006044856004016000600080516020614ebb8339815191525af161290357612903605874051d1c985b9cd9995c8815d155120819985a5b195960421b612009565b856004840152602060006024856000730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a485af16129555761295560577c13776974686472617720455448206661696c6564000000000000000000612009565b600080600080898b5af161298b5761298b60577c137472616e7366657220455448206661696c6564000000000000000000612009565b612bce565b60009350600160ff1b82168015612a4257600160fc1b831615612a3d576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa6129f6576129f6605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612009565b600051955087846004015260206000602486895afa612a3757612a3760567c15746f6b656e302062616c616e6365206661696c656400000000000000612009565b60005194505b612ade565b600160fd1b831615612ade576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612a9757612a97605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612009565b600051955087846004015260206000602486895afa612ad857612ad860597c15746f6b656e312062616c616e6365206661696c656400000000000000612009565b60005194505b50612b168763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61252f565b95508460001060018114612b7f57600160ff1b83168015612b5757612b506770a082310dfe168160c01b6001600160a01b0386168761241c565b9650612b79565b612b766770a08231d21220a760c01b6001600160a01b0386168761241c565b96505b50612bcc565b6770a082310dfe168160c01b845287846004015260206000602486895afa612bc457612bc46058740519d95d0818985b185b98d953d98819985a5b195960421b612009565b846000510396505b505b505088841015612c0057612c00605a7c164d696e2072657475726e206e6f742072656163686564000000000000612009565b8a8152826020820152326040820152896060820152836080820152600080516020614edb83398151915260a082a1505050979650505050505050565b6000613060565b6000856001600160ff1b031015612c6557630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114612cf957630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612ced5760206000fd5b5060206000803e612d5c565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612d545760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612d82576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003612daa57631841b4e160e01b60005260046000fd5b60008060008084600080516020614ebb8339815191525af1806115595761155960577c1357455448206465706f736974206661696c6564000000000000000000612009565b60405160048101672e1a7d4da9059cbb60c01b8252730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a4860048201528360248201526000806044836000600080516020614ebb8339815191525af1905080612e6c57612e6c60587c147472616e736665722077657468206661696c65640000000000000000612009565b8360048301526000806024846000730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a485af1905080612ec057612ec060587c1477697468647261772077657468206661696c65640000000000000000612009565b60008060008087875af1905080612ef157612ef1605571045cd95b9908195d1a195c8819985a5b1959605a1b612009565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612f4657612f466055710459d95d081d1bdad95b8c0819985a5b1959605a1b612009565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612f4657612f466054710459d95d081d1bdad95b8c4819985a5b1959605a1b612009565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8034612ff2578235600160ff1b81161560018114612fe357612fdc82612f55565b9350612fef565b612fec82612ef7565b93505b50505b8335600160fd1b1661302f578335600160ff1b811615600181146130205761301982612ef7565b925061302c565b61302982612f55565b92505b50505b60405182600052816020523260405285608052600080516020614edb83398151915260a06000a16040525050505050565b82601f19602084028201018380613082576333f3e07b60e11b60005260046000fd5b508860003411801561309b5761309789612d8f565b309a505b5087606052825b828110156130c5576130b8898235848e30612c43565b309b5098506020016130a2565b506000600160fd1b8335161180600181146130e557801561310457613115565b6130f38a8535858f30612c43565b95506130ff868c612def565b613115565b6131128a8535858f8f612c43565b95505b5050508583101561314857613148605a7c164d696e2072657475726e206e6f742072656163686564000000000000612009565b613153838284612fa6565b50509695505050505050565b600061316a836131f3565b1561318057506001600160a01b038116316131ed565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156131c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ea9190614b48565b90505b92915050565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60006132458260008151811061322d5761322d614b61565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b818110156133805780156132915761327686828151811061322d5761322d614b61565b945061328b6001600160a01b0386163061315f565b9650309a505b3061329d600184614c44565b821480156132a9575088155b156132b557508861334d565b6132c0600184614c44565b821080156132f65750866132d5836001614c57565b815181106132e5576132e5614b61565b602002602001015160200151516001145b156133485786613307836001614c57565b8151811061331757613317614b61565b60200260200101516020015160008151811061333557613335614b61565b602002602001015190506001945061334d565b600094505b6133748c8c838b8b878151811061336657613366614b61565b602002602001015189613894565b50839250600101613253565b5050505050505050505050565b61339f826001600160a01b03166131f3565b156135c7576040516370a0823160e01b8152306004820152600090600080516020614ebb833981519152906370a0823190602401602060405180830381865afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134149190614b48565b9050801561350d5760405163a9059cbb60e01b8152730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a48600482015260248101829052600080516020614ebb8339815191529063a9059cbb906044016020604051808303816000875af1158015613482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a69190614d58565b50604051632e1a7d4d60e01b815260048101829052730b5f474ad0e3f7ef629bd10dbf9e4a8fd60d9a4890632e1a7d4d90602401600060405180830381600087803b1580156134f457600080fd5b505af1158015613508573d6000803e3d6000fd5b505050505b6001600160a01b038216301461152357478015612ef1576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613571576040519150601f19603f3d011682016040523d82523d6000602084013e613576565b606091505b5050905080611ecb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610218565b6001600160a01b0381163014611559576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561361e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136429190614b48565b905080156115235761152383838361170b565b600054610100900460ff1661367c5760405162461bcd60e51b815260040161021890614c6a565b610d3533611cbc565b600054610100900460ff1661183b5760405162461bcd60e51b815260040161021890614c6a565b606060048351106137dd5760208301516001600160e01b0319811662461bcd60e51b1480156136dd57506044845110155b1561377d576024848101518086018201805191929091906136ff908490614c57565b6137099190614c57565b865110156137515760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610218565b8481604051602001613764929190614d75565b60405160208183030381529060405293505050506131ed565b6001600160e01b03198116634e487b7160e01b14801561379e575083516024145b156137db576024840151836137b282613a4b565b6040516020016137c3929190614dc4565b604051602081830303815290604052925050506131ed565b505b816137e784613a73565b6040516020016137f8929190614df9565b604051602081830303815290604052905092915050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee83146001811461388957604051602481016040526370a0823160e01b815283600482015260206000602483885afa90508061387e5761387e6058740519d95d0818985b185b98d953d98819985a5b195960421b612009565b50600051915061388d565b4791505b5092915050565b6000805b835151811015613a41576000846040015182815181106138ba576138ba614b61565b602002602001015160001b90506000806000806138e189608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c169250905061390d8288614c57565b89515190975061391f90600190614c44565b8603613986576127108711156139865760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610218565b876139e157600082612710146139b2576127106139a3848d614b8d565b6139ad9190614ba4565b6139b4565b8a5b90506139df8e8b6020015189815181106139d0576139d0614b61565b60200260200101518484613c5a565b505b5050613a2b81886000015186815181106139fd576139fd614b61565b60200260200101518b858b606001518981518110613a1d57613a1d614b61565b60200260200101518f613cfa565b5050508080613a3990614e4a565b915050613898565b5050505050505050565b60606131ed82604051602001613a6391815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090613a9b906002614b8d565b613aa6906002614c57565b6001600160401b03811115613abd57613abd614189565b6040519080825280601f01601f191660200182016040528015613ae7576020820181803683370190505b509050600360fc1b81600081518110613b0257613b02614b61565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613b3157613b31614b61565b60200101906001600160f81b031916908160001a90535060005b8451811015613c5257826004868381518110613b6957613b69614b61565b01602001516001600160f81b031916901c60f81c60108110613b8d57613b8d614b61565b1a60f81b82613b9d836002614b8d565b613ba8906002614c57565b81518110613bb857613bb8614b61565b60200101906001600160f81b031916908160001a90535082858281518110613be257613be2614b61565b60209101015160f81c600f1660108110613bfe57613bfe614b61565b1a60f81b82613c0e836002614b8d565b613c19906003614c57565b81518110613c2957613c29614b61565b60200101906001600160f81b031916908160001a90535080613c4a81614e4a565b915050613b4b565b509392505050565b306001600160a01b03851603613c7a57613c7582848361170b565b612ef1565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273d99cae3fac551f6b6ba7b9f19bdd316951eeee9890630a5ea46690608401600060405180830381600087803b158015613ce657600080fd5b505af1158015613a41573d6000803e3d6000fd5b8515613e1257600080866001600160a01b0316636f7929f260e01b878787604051602401613d2a93929190614e63565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d786001600160a01b038616650f2882bf0b3360d21b614c57565b604051602001613d89929190614e98565b60408051601f1981840301815290829052613da391614cfd565b6000604051808303816000865af19150503d8060008114613de0576040519150601f19603f3d011682016040523d82523d6000602084013e613de5565b606091505b5091509150818190613e0a5760405162461bcd60e51b81526004016102189190614d45565b505050613f1c565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613e3c93929190614e63565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613e8a6001600160a01b038616650f2882bf0b3360d21b614c57565b604051602001613e9b929190614e98565b60408051601f1981840301815290829052613eb591614cfd565b6000604051808303816000865af19150503d8060008114613ef2576040519150601f19603f3d011682016040523d82523d6000602084013e613ef7565b606091505b50915091508181906117005760405162461bcd60e51b81526004016102189190614d45565b505050505050565b60008060408385031215613f3757600080fd5b50508035926020909101359150565b6001600160a01b0381168114610f0557600080fd5b8035613f6681613f46565b919050565b600060a08284031215613f7d57600080fd5b50919050565b60008083601f840112613f9557600080fd5b5081356001600160401b03811115613fac57600080fd5b6020830191508360208260051b8501011115613fc757600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613fed57600080fd5b8935985060208a0135613fff81613f46565b975061400e8b60408c01613f6b565b965060e08a01356001600160401b038082111561402a57600080fd5b6140368d838e01613f83565b90985096506101008c013591508082111561405057600080fd5b61405c8d838e01613f83565b90965094506101208c013591508082111561407657600080fd5b506140838c828d01613f83565b915080935050809150509295985092959850929598565b60008060008060008060a087890312156140b357600080fd5b86359550602087013594506040870135935060608701356140d381613f46565b925060808701356001600160401b038111156140ee57600080fd5b6140fa89828a01613f83565b979a9699509497509295939492505050565b60008060008060006080868803121561412457600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561414f57600080fd5b61415b88828901613f83565b969995985093965092949392505050565b60006020828403121561417e57600080fd5b813561240e81613f46565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156141c1576141c1614189565b60405290565b60405161014081016001600160401b03811182821017156141c1576141c1614189565b604051601f8201601f191681016001600160401b038111828210171561421257614212614189565b604052919050565b600060a0828403121561422c57600080fd5b61423461419f565b905081358152602082013561424881613f46565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561428c5761428c614189565b5060051b60200190565b600082601f8301126142a757600080fd5b813560206142bc6142b783614273565b6141ea565b82815260059290921b840181019181810190868411156142db57600080fd5b8286015b84811015610d1857803583529183019183016142df565b600082601f83011261430757600080fd5b813560206143176142b783614273565b82815260059290921b8401810191818101908684111561433657600080fd5b8286015b84811015610d1857803561434d81613f46565b835291830191830161433a565b600082601f83011261436b57600080fd5b81356001600160401b0381111561438457614384614189565b614397601f8201601f19166020016141ea565b8181528460208386010111156143ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126143da57600080fd5b813560206143ea6142b783614273565b82815260059290921b8401810191818101908684111561440957600080fd5b8286015b84811015610d185780356001600160401b0381111561442c5760008081fd5b61443a8986838b010161435a565b84525091830191830161440d565b60006144566142b784614273565b838152905060208101600584901b830185101561447257600080fd5b825b8460051b84018110156145e2576001600160401b03808235111561449757600080fd5b8135850187601f8201126144aa57600080fd5b6144b76142b78235614273565b81358082526020808301929160051b8401018a8111156144d657600080fd5b602084015b818110156145cb5785813511156144f157600080fd5b8035850160a0818e03601f1901121561450957600080fd5b61451161419f565b876020830135111561452257600080fd5b6145348e6020808501358501016142f6565b8152876040830135111561454757600080fd5b61455a8e602060408501358501016142f6565b6020820152876060830135111561457057600080fd5b6145838e60206060850135850101614296565b6040820152876080830135111561459957600080fd5b6145ac8e602060808501358501016143c9565b606082015260a0919091013560808201528452602093840193016144db565b505085525050602092830192919091019050614474565b50509392505050565b600082601f8301126145fc57600080fd5b61240e83833560208501614448565b8015158114610f0557600080fd5b8035613f668161460b565b600082601f83011261463557600080fd5b813560206146456142b783614273565b82815260059290921b8401810191818101908684111561466457600080fd5b8286015b84811015610d185780356001600160401b03808211156146885760008081fd5b90880190610140828b03601f19018113156146a35760008081fd5b6146ab6141c7565b87840135815260406146be818601613f5b565b8983015260606146cf818701613f5b565b82840152608091506146e2828701613f5b565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120614724818701614619565b8383015292850135928484111561473d57600091508182fd5b61474b8e8b8689010161435a565b90830152508652505050918301918301614668565b600080600080600080610140878903121561477a57600080fd5b614784888861421a565b955060a08701356001600160401b03808211156147a057600080fd5b6147ac8a838b01614296565b965060c08901359150808211156147c257600080fd5b6147ce8a838b016145eb565b955060e08901359150808211156147e457600080fd5b506147f189828a01614624565b93505061010087013561480381613f46565b915061012087013561481481613f46565b809150509295509295509295565b6000806040838503121561483557600080fd5b823561484081613f46565b915060208301356148508161460b565b809150509250929050565b600080600080600080600080610120898b03121561487857600080fd5b883597506148898a60208b01613f6b565b965060c08901356001600160401b03808211156148a557600080fd5b6148b18c838d01613f83565b909850965060e08b01359150808211156148ca57600080fd5b6148d68c838d01613f83565b90965094506101008b01359150808211156148f057600080fd5b506148fd8b828c01613f83565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561492a57600080fd5b614934878761421a565b945060a08601356001600160401b038082111561495057600080fd5b61495c89838a01614296565b955060c088013591508082111561497257600080fd5b61497e89838a016145eb565b945060e088013591508082111561499457600080fd5b506149a188828901614624565b9250506101008601356149b381613f46565b809150509295509295909350565b6000602082840312156149d357600080fd5b5035919050565b60008083601f8401126149ec57600080fd5b5081356001600160401b03811115614a0357600080fd5b602083019150836020828501011115613fc757600080fd5b60008060008060008060008060c0898b031215614a3757600080fd5b883597506020890135614a4981613f46565b9650604089013595506060890135945060808901356001600160401b0380821115614a7357600080fd5b614a7f8c838d01613f83565b909650945060a08b0135915080821115614a9857600080fd5b506148fd8b828c016149da565b60008060008060608587031215614abb57600080fd5b843593506020850135925060408501356001600160401b03811115614adf57600080fd5b614aeb878288016149da565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614b3157600080fd5b61240e838361421a565b600061240e368484614448565b600060208284031215614b5a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176131ed576131ed614b77565b600082614bc157634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b60008060408385031215614c0057600080fd5b8251614c0b81613f46565b602084015190925061485081613f46565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b818103818111156131ed576131ed614b77565b808201808211156131ed576131ed614b77565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160e01b031984168152818360048301376000910160040190815292915050565b60005b83811015614cf4578181015183820152602001614cdc565b50506000910152565b60008251614d0f818460208701614cd9565b9190910192915050565b60008151808452614d31816020860160208601614cd9565b601f01601f19169290920160200192915050565b60208152600061240e6020830184614d19565b600060208284031215614d6a57600080fd5b815161240e8161460b565b60008351614d87818460208801614cd9565b6508ae4e4dee4560d31b9083019081528351614daa816006840160208801614cd9565b602960f81b60069290910191820152600701949350505050565b60008351614dd6818460208801614cd9565b650a0c2dcd2c6560d31b9083019081528351614daa816006840160208801614cd9565b60008351614e0b818460208801614cd9565b670aadcd6dcdeeedc560c31b9083019081528351614e30816008840160208801614cd9565b602960f81b60089290910191820152600901949350505050565b600060018201614e5c57614e5c614b77565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614e8f90830184614d19565b95945050505050565b60008351614eaa818460208801614cd9565b919091019182525060200191905056fe000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba2646970667358221220a37cdac574a3997210e3d2de23bf1b3aae4d43dff1c0d7133b09c21e9ace6a7a64736f6c63430008110033