1 tx
1.38m 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)
VERSION
viewfunction VERSION() view returns (uint256)
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)
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)
withdrawDust
nonpayablefunction withdrawDust(address token, address to, uint256 amount)
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
0x608060405234801561001057600080fd5b506148a8806100206000396000f3fe6080604052600436106101dc5760003560e01c80639a09b28511610102578063e99bfa9511610095578063f3e144b611610064578063f3e144b61461055e578063f851a4401461057e578063fa461e331461059e578063ffa1ad74146105be57600080fd5b8063e99bfa95146104de578063f1489b9f146104f1578063f2fde38b1461051e578063f3dced3c1461053e57600080fd5b8063d1b260d4116100d1578063d1b260d414610487578063d3507df51461049a578063d8837daf146104b0578063e0af3616146104c357600080fd5b80639a09b2851461041e578063b80c2f091461043e578063ca68d8f614610451578063d13a35e61461046757600080fd5b8063715018a61161017a5780638575654f116101495780638575654f1461039a578063869c6b4b146103ad5780638da5cb5b146103ed5780639871efa41461040b57600080fd5b8063715018a61461032857806373679b6b1461033d578063779e45fc146103655780638129fc1c1461038557600080fd5b80630d5f0e3b116101b65780630d5f0e3b1461027f57806327f9fa1e1461029257806341f4a959146102e05780636aa476451461030057600080fd5b806301617fab1461023357806303b87e5f1461024657806308298b5a1461026c57600080fd5b3661022e5732330361022c5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61022c610241366004613de5565b6105d3565b610259610254366004613e7f565b610967565b6040519081526020015b60405180910390f35b61025961027a366004613f4b565b6109e0565b61025961028d366004613fbd565b610a22565b34801561029e57600080fd5b506102c86102ad36600461401d565b60b4602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156102ec57600080fd5b5061022c6102fb36600461403a565b610a62565b34801561030c57600080fd5b506102c8731b5d39419c268b76db06de49e38b010fbfb5e22681565b34801561033457600080fd5b5061022c610b1f565b34801561034957600080fd5b506102c873d2f0ac2012c8433f235c8e5e97f2368197dd06c781565b34801561037157600080fd5b5061022c610380366004614089565b610b33565b34801561039157600080fd5b5061022c610bea565b6102596103a8366004613fbd565b610d04565b3480156103b957600080fd5b506103dd6103c836600461401d565b60996020526000908152604090205460ff1681565b6040519015158152602001610263565b3480156103f957600080fd5b506033546001600160a01b03166102c8565b610259610419366004613fbd565b610e07565b34801561042a57600080fd5b5061022c61043936600461401d565b610e3e565b61025961044c3660046140c2565b610ee0565b34801561045d57600080fd5b5061025961012c81565b34801561047357600080fd5b506098546102c8906001600160a01b031681565b6102596104953660046140c2565b610f58565b3480156104a657600080fd5b5061025960b65481565b6102596104be366004613fbd565b611088565b3480156104cf57600080fd5b506102c86006602160991b0181565b6102596104ec366004614178565b611187565b3480156104fd57600080fd5b5061025961050c366004614238565b60b56020526000908152604090205481565b34801561052a57600080fd5b5061022c61053936600461401d565b6113a6565b34801561054a57600080fd5b506097546102c8906001600160a01b031681565b34801561056a57600080fd5b50610259610579366004614292565b61141c565b34801561058a57600080fd5b5060ad546102c8906001600160a01b031681565b3480156105aa57600080fd5b5061022c6105b936600461431c565b61146a565b3480156105ca57600080fd5b50610259600181565b600160ff1b81166001600160801b038216806106265760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610223565b81156107d15760405163052f523360e11b81526006602160991b01600482015233602482015273d2f0ac2012c8433f235c8e5e97f2368197dd06c760448201526001600160801b0382166064820152731b5d39419c268b76db06de49e38b010fbfb5e22690630a5ea46690608401600060405180830381600087803b1580156106ae57600080fd5b505af11580156106c2573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b038416600482015273d2f0ac2012c8433f235c8e5e97f2368197dd06c79250632e1a7d4d9150602401600060405180830381600087803b15801561071b57600080fd5b505af115801561072f573d6000803e3d6000fd5b50506040516000925033915047908381818185875af1925050503d8060008114610775576040519150601f19603f3d011682016040523d82523d6000602084013e61077a565b606091505b50509050806107cb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b506108a1565b806001600160801b031634146108225760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610223565b6006602160991b016001600160a01b031663d0e30db0826001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561086d57600080fd5b505af1158015610881573d6000803e3d6000fd5b50505050506108a16006602160991b0133836001600160801b0316611652565b6040518481526000805160206148538339815191529060200160405180910390a1600080516020614833833981519152826108f05773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6108f9565b6006602160991b015b8361090b576006602160991b01610921565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015233908201526001600160801b03831660608201819052608082015260a00160405180910390a150505050565b600087608001354281101561098e5760405162461bcd60e51b81526004016102239061436e565b610996611682565b6040518b81526000805160206148538339815191529060200160405180910390a16109c6338b8b8b8b8b8b6116db565b91506109d26001606555565b509998505050505050505050565b60405160a087901c81526000906000805160206148538339815191529060200160405180910390a1610a17878787338888886117cc565b979650505050505050565b60405160a086901c81526000906000805160206148538339815191529060200160405180910390a1610a58338787878787611876565b9695505050505050565b610a6a6118d1565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601610b0f57600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610add576040519150601f19603f3d011682016040523d82523d6000602084013e610ae2565b606091505b5091509150818190610b075760405162461bcd60e51b815260040161022391906143ba565b505050505050565b610b1a838383611652565b505050565b610b276118d1565b610b31600061192b565b565b60ad546001600160a01b0316331480610b5657506033546001600160a01b031633145b610b875760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b600054610100900460ff1615808015610c0a5750600054600160ff909116105b80610c245750303b158015610c24575060005460ff166001145b610c875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610223565b6000805460ff191660011790558015610caa576000805461ff0019166101001790555b610cb261197d565b610cba6119ac565b8015610d01576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50565b3360009081526099602052604081205460ff161515600114610d385760405162461bcd60e51b8152600401610223906143ed565b60405160a087901c81526000805160206148538339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190614414565b90925090506001600160a01b038116610dec5760405162461bcd60e51b815260040161022390614443565b610dfb88888885858a8a6117cc565b98975050505050505050565b60405160a086901c81526000906000805160206148538339815191529060200160405180910390a1610a58868686333388886117cc565b60ad546001600160a01b0316331480610e6157506033546001600160a01b031633145b610e925760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001610cf8565b6000876080013542811015610f075760405162461bcd60e51b81526004016102239061436e565b610f0f611682565b6040518a81526000805160206148538339815191529060200160405180910390a1610f3f33338b8b8b8b8b6116db565b9150610f4b6001606555565b5098975050505050505050565b6000876080013542811015610f7f5760405162461bcd60e51b81526004016102239061436e565b610f87611682565b3360009081526099602052604090205460ff161515600114610fbb5760405162461bcd60e51b8152600401610223906143ed565b6040518a81526000805160206148538339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561101c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110409190614414565b90925090506001600160a01b03811661106b5760405162461bcd60e51b815260040161022390614443565b61107a82828d8d8d8d8d6116db565b93505050610f4b6001606555565b3360009081526099602052604081205460ff1615156001146110bc5760405162461bcd60e51b8152600401610223906143ed565b60405160a087901c81526000805160206148538339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190614414565b90925090506001600160a01b0381166111705760405162461bcd60e51b815260040161022390614443565b610dfb82826001600160a01b031689898989611876565b60008860800135428110156111ae5760405162461bcd60e51b81526004016102239061436e565b6111b6611682565b89356001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed19810161121c5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610223565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611263573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611287919061446b565b905060006040518060a001604052808e6000013581526020018e60200160208101906112b3919061401d565b6001600160a01b031681526020018381526020018e6060013581526020018e60800135815250905060008c8c90506001600160401b038111156112f8576112f8614484565b604051908082528060200260200182016040528015611321578160200160208202803683370190505b50905060005b8c811015611387578e60400135848f8f848181106113475761134761449a565b9050602002013561135891906144c6565b61136291906144dd565b8282815181106113745761137461449a565b6020908102919091010152600101611327565b5061139682828d8d308c6119db565b955050505050610f4b6001606555565b6113ae6118d1565b6001600160a01b0381166114135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610223565b610d018161192b565b60405160a089901c81526000906000805160206148538339815191529060200160405180910390a161144f888484611d12565b61145d338a89898989611876565b9998505050505050505050565b6114ae565b3d6000803e3d6000fd5b806114865761148661146f565b600160005114601f3d11163d1517806114aa57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa6114e5576114e561146f565b6020806004808501335afa6114fc576114fc61146f565b60206040600460088501335afa6115155761151561146f565b600080600088136001811461153157602051925087915061153a565b60005192508891505b507fff33128a8fc17869897dce68ed026d694621f6fdfd00000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146115b257635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146116245782601486015283603486015233605486015281607486015261161f602060006084601089016000731b5d39419c268b76db06de49e38b010fbfb5e2265af1611479565b611647565b336010860152816030860152611647602060006044600c89016000885af1611479565b505050505050505050565b6116658363a9059cbb60e01b8484611e78565b610b1a5760405163fb7f507960e01b815260040160405180910390fd5b6002606554036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610223565b6002606555565b60006001600160a01b0387166117215760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b600061172b611ecc565b905060008061173f838b8b60400135611f74565b90925090508a6000611798611759368d90038d018d6144ff565b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d92508c9150879050896119db565b905060006117a7868e8661213d565b90506117b38183614585565b9e9d5050505050505050505050505050565b6001606555565b60006001600160a01b0384166118125760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b600061181c611ecc565b905060008061182c83888c611f74565b91509150600061184a6001600160a01b038d168c8c8a8a8e896123ba565b90506000611859858a8561213d565b90506118658183614585565b9d9c50505050505050505050505050565b600080611881611ecc565b9050600080611891838a8a611f74565b9150915060006118a58b848b8b8b8b612bcc565b50905060006118b5858c8561213d565b90506118c18183614585565b9c9b505050505050505050505050565b6033546001600160a01b03163314610b315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610223565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166119a45760405162461bcd60e51b815260040161022390614598565b610b316130cf565b600054610100900460ff166119d35760405162461bcd60e51b815260040161022390614598565b610b316130ff565b60408601516000908790611a3c5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610223565b805160208201516001600160a01b0391821691611a5a911685613126565b9250611a65816131ba565b15611acd576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b50505050503094505b6000805b8951811015611b0957898181518110611aec57611aec61449a565b602002602001015182611aff91906145e3565b9150600101611ad1565b508260400151811115611b7c5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610223565b5087518614611bbf5760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610223565b60005b86811015611c3057611c288686611be586602001516001600160a01b03166131ba565b8c8581518110611bf757611bf761449a565b60200260200101518c8c87818110611c1157611c1161449a565b9050602002810190611c2391906145f6565b6131dc565b600101611bc2565b50611c3f826020015185613396565b60208201518390611c59906001600160a01b031686613126565b611c639190614585565b92508160600151831015611cb25760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610223565b60208083015160408085015181516001600160a01b0380871682529093169383019390935232908201526060810191909152608081018490526000805160206148338339815191529060a00160405180910390a150509695505050505050565b8015610b1a576000606060e0839003611db3576040516001600160a01b03861690611d4c9063d505accf60e01b908790879060200161463f565b60408051601f1981840301815290829052611d6691614663565b6000604051808303816000865af19150503d8060008114611da3576040519150601f19603f3d011682016040523d82523d6000602084013e611da8565b606091505b509092509050611e22565b610100839003611de4576040516001600160a01b03861690611d4c906323f2ebc360e21b908790879060200161463f565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610223565b81611e7157611e58816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b815250613650565b60405162461bcd60e51b815260040161022391906143ba565b5050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015611ec4573d8015611eba57600160005114601f3d11169150611ec2565b6000863b1191505b505b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260405160a081016040525060203603356001600160d01b03198116651e51057e155560d11b1482526001600160d01b03198116653ca20afc2bbb60d01b14826020015265ffffffffffff60a01b811660a01c82604001526001600160a01b0381168260600152506001600160a01b03604036033516816080015290565b600080846020015115611f995730611f908660800151306137b3565b91509150612135565b8451611faa57508290506000612135565b611fcb565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b604085015161012c81111561200257612002605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611faf565b60808601516060870151826127100383870204925073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214600181146120b6576040516084810160405263052f523360e11b81528360048201523360248201528260448201528460648201526000806084836000731b5d39419c268b76db06de49e38b010fbfb5e2265af19050806120b0576120b060577c13636c61696d20746f6b656e73206661696c6564000000000000000000611faf565b506120ef565b60008060008087865af1806120ed576120ed605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611faf565b505b50604051915060408201604052828252806020830152507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a15050836000915091505b935093915050565b60008360200151612150575060006123b3565b604084015161012c81111561218757612187605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611faf565b6080850151606086015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214600181146122d257604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612207576122076058740519d95d0818985b185b98d953d98819985a5b195960421b611faf565b6000518881101561222b5761222b604d6a029cdd588819985a5b195960961b611faf565b888103905061271087820204975084600884015287602884015260008060446004860160008a5af191508161228257612282605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611faf565b8960048401528781036024840152506000806044846000895af19050806122cb576122cb60607c1c7472616e7366657220746f6b656e207265636569766572206661696c611faf565b5050612374565b854710156122f3576122f3604d6a029cdd588819985a5b195960961b611faf565b85470361271085820204955060008060008089875af18061233657612336605d7c197472616e73666572206574682072656665726572206661696c000000611faf565b6000806000808a86038d5af190508061237157612371605e7c1a7472616e7366657220657468207265636569766572206661696c0000611faf565b50505b5060405192506040830160405283835280602084015250507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a1505b9392505050565b60006125ea565b828152600060206000600484600401865afa6123f6576123f66054700419d95d081d1bdad95b8819985a5b195960621b611faf565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61244457612444605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611faf565b600051915083836004015260206000602485855afa6124855761248560597c1562616c616e63654f662063616c6c206661696c656400000000000000611faf565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61244457612444605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611faf565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61251c5761251c60587c1472657365727665732063616c6c206661696c65640000000000000000611faf565b600051602051868015612548578915612540576125398786612491565b8390039650505b90919061255f565b881561255f576125588786612401565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca00929092028201910204905084801561259957816004840152600060248401526125a7565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af1610dfb57610dfb605470041cddd85c0818d85b1b0819985a5b195960621b611faf565b84602085028101858061261157612611604e6b0b656d70747920706f6f6c7360901b611faf565b5060405182358b15600181146126bb5734156126475761264760557111696e76616c6964206d73672e76616c756560581b611faf565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000731b5d39419c268b76db06de49e38b010fbfb5e2265af16126b6576126b66056720498db185a5b481d1bdad95b8819985a5b195960521b611faf565b61277a565b60018c3410036126e5576126e560557111696e76616c6964206d73672e76616c756560581b611faf565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af161272b5761272b6056720499195c1bdcda5d081155120819985a5b195960521b611faf565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af161277a5761277a605874051d1c985b9cd9995c8815d155120819985a5b195960421b611faf565b508a9450602084015b838110156127d95780356127cd6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6124d4565b96509150602001612783565b5060009350600160fe1b8116801561292057600094506128263063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6124d4565b9550672e1a7d4da9059cbb60c01b835273d2f0ac2012c8433f235c8e5e97f2368197dd06c760088401528560288401526020600060448560040160006006602160991b015af161289357612893605874051d1c985b9cd9995c8815d155120819985a5b195960421b611faf565b85600484015260206000602485600073d2f0ac2012c8433f235c8e5e97f2368197dd06c75af16128e5576128e560577c13776974686472617720455448206661696c6564000000000000000000611faf565b600080600080898b5af161291b5761291b60577c137472616e7366657220455448206661696c6564000000000000000000611faf565b612b5e565b60009350600160ff1b821680156129d257600160fc1b8316156129cd576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa61298657612986605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611faf565b600051955087846004015260206000602486895afa6129c7576129c760567c15746f6b656e302062616c616e6365206661696c656400000000000000611faf565b60005194505b612a6e565b600160fd1b831615612a6e576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612a2757612a27605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611faf565b600051955087846004015260206000602486895afa612a6857612a6860597c15746f6b656e312062616c616e6365206661696c656400000000000000611faf565b60005194505b50612aa68763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6124d4565b95508460001060018114612b0f57600160ff1b83168015612ae757612ae06770a082310dfe168160c01b6001600160a01b038616876123c1565b9650612b09565b612b066770a08231d21220a760c01b6001600160a01b038616876123c1565b96505b50612b5c565b6770a082310dfe168160c01b845287846004015260206000602486895afa612b5457612b546058740519d95d0818985b185b98d953d98819985a5b195960421b611faf565b846000510396505b505b505088841015612b9057612b90605a7c164d696e2072657475726e206e6f742072656163686564000000000000611faf565b8a815282602082015232604082015289606082015283608082015260008051602061483383398151915260a082a1505050979650505050505050565b600080612fd0565b6000846001600160ff1b031015612bf657630b3f79fd60e41b60005260046000fd5b604051600160ff1b8516156001600160a01b0386168160018114612c8357630251596160e31b8452600484018681526000602082015289604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612c775760206000fd5b5060206000803e612cdf565b630251596160e31b845260048401868152600160208201528960408201526401000276a4606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612cd75760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612d05576322323ba760e21b60005260046000fd5b19600101949350505050565b600181341003612d2c57631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af1806114aa576114aa60577c1357455448206465706f736974206661696c6564000000000000000000611faf565b60405160048101672e1a7d4da9059cbb60c01b825273d2f0ac2012c8433f235c8e5e97f2368197dd06c7600482015283602482015260008060448360006006602160991b015af1905080612de057612de060587c147472616e736665722077657468206661696c65640000000000000000611faf565b836004830152600080602484600073d2f0ac2012c8433f235c8e5e97f2368197dd06c75af1905080612e3457612e3460587c1477697468647261772077657468206661696c65640000000000000000611faf565b60008060008087875af1905080612e6557612e65605571045cd95b9908195d1a195c8819985a5b1959605a1b611faf565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612eba57612eba6055710459d95d081d1bdad95b8c0819985a5b1959605a1b611faf565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612eba57612eba6054710459d95d081d1bdad95b8c4819985a5b1959605a1b611faf565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8085612f66578235600160ff1b81161560018114612f5757612f5082612ec9565b9350612f63565b612f6082612e6b565b93505b50505b86612f9c578335600160ff1b81161560018114612f8d57612f8682612e6b565b9250612f99565b612f9682612ec9565b92505b50505b6040518260005281602052326040528560805260008051602061483383398151915260a06000a16040525095945050505050565b83601f19602085028201018480612ff2576333f3e07b60e11b60005260046000fd5b5060003411801561300a5761300689612d11565b309a505b88606052825b82811015613032576130258a82358e30612bd4565b309c509950602001613010565b506000600160fd1b83351611806001811461305257801561307057613080565b61305f8b85358f30612bd4565b965061306b878d612d6a565b613080565b61307d8b85358f8f612bd4565b96505b50888610156130b1576130b1605a7c164d696e2072657475726e206e6f742072656163686564000000000000611faf565b6130be8183888688612f1a565b945050505050965096945050505050565b600054610100900460ff166130f65760405162461bcd60e51b815260040161022390614598565b610b313361192b565b600054610100900460ff166117c55760405162461bcd60e51b815260040161022390614598565b6000613131836131ba565b1561314757506001600160a01b038116316131b4565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561318d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b1919061446b565b90505b92915050565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b6000613216838360008181106131f4576131f461449a565b9050602002810190613206919061467f565b608001356001600160a01b031690565b905060008083815b8181101561338957801561325c576132418787838181106131f4576131f461449a565b94506132566001600160a01b03861630613126565b9750309a505b30613268600184614585565b82148015613274575089155b1561328057508961334d565b61328b600184614585565b821080156132d6575087876132a18460016145e3565b8181106132b0576132b061449a565b90506020028101906132c2919061467f565b6132d09060208101906145f6565b90506001145b156133485787876132e88460016145e3565b8181106132f7576132f761449a565b9050602002810190613309919061467f565b6133179060208101906145f6565b60008181106133285761332861449a565b905060200201602081019061333d919061401d565b90506001945061334d565b600094505b61337d8c828b8b8b878181106133655761336561449a565b9050602002810190613377919061467f565b88613838565b5083925060010161321e565b5050505050505050505050565b6133a8826001600160a01b03166131ba565b156135c2576040516370a0823160e01b81523060048201526000906006602160991b01906370a0823190602401602060405180830381865afa1580156133f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613416919061446b565b905080156135085760405163a9059cbb60e01b815273d2f0ac2012c8433f235c8e5e97f2368197dd06c76004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af115801561347d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a19190614695565b50604051632e1a7d4d60e01b81526004810182905273d2f0ac2012c8433f235c8e5e97f2368197dd06c790632e1a7d4d90602401600060405180830381600087803b1580156134ef57600080fd5b505af1158015613503573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610b1a57478015612e65576000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461356c576040519150601f19603f3d011682016040523d82523d6000602084013e613571565b606091505b5050905080611e715760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b6001600160a01b03811630146114aa576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d919061446b565b90508015610b1a57610b1a838383611652565b606060048351106137815760208301516001600160e01b0319811662461bcd60e51b14801561368157506044845110155b15613721576024848101518086018201805191929091906136a39084906145e3565b6136ad91906145e3565b865110156136f55760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610223565b84816040516020016137089291906146b2565b60405160208183030381529060405293505050506131b4565b6001600160e01b03198116634e487b7160e01b148015613742575083516024145b1561377f5760248401518361375682613b2c565b604051602001613767929190614701565b604051602081830303815290604052925050506131b4565b505b8161378b84613b54565b60405160200161379c929190614736565b604051602081830303815290604052905092915050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee83146001811461382d57604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613822576138226058740519d95d0818985b185b98d953d98819985a5b195960421b611faf565b506000519150613831565b4791505b5092915050565b60808201356001600160a01b031660008061385385806145f6565b9050905060005b8181101561164757600061387160408801886145f6565b838181106138815761388161449a565b60200291909101359150506001600160a01b038116600160ff1b821661ffff60a084901c166138b081886145e3565b96506138bd600187614585565b8503613924576127108711156139245760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610223565b88613993576000816127101461395057612710613941838e6144c6565b61394b91906144dd565b613952565b8b5b90506139918e61396560208e018e6145f6565b898181106139755761397561449a565b905060200201602081019061398a919061401d565b8b84613d3b565b505b8115613a5d576139a38a806145f6565b868181106139b3576139b361449a565b90506020020160208101906139c8919061401d565b6001600160a01b0316636f7929f28d856139e560608f018f6145f6565b8a8181106139f5576139f561449a565b9050602002810190613a079190614787565b6040518563ffffffff1660e01b8152600401613a2694939291906147cd565b600060405180830381600087803b158015613a4057600080fd5b505af1158015613a54573d6000803e3d6000fd5b50505050613b1d565b613a678a806145f6565b86818110613a7757613a7761449a565b9050602002016020810190613a8c919061401d565b6001600160a01b03166330e6ae318d85613aa960608f018f6145f6565b8a818110613ab957613ab961449a565b9050602002810190613acb9190614787565b6040518563ffffffff1660e01b8152600401613aea94939291906147cd565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505050505b8460010194505050505061385a565b60606131b482604051602001613b4491815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090613b7c9060026144c6565b613b879060026145e3565b6001600160401b03811115613b9e57613b9e614484565b6040519080825280601f01601f191660200182016040528015613bc8576020820181803683370190505b509050600360fc1b81600081518110613be357613be361449a565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613c1257613c1261449a565b60200101906001600160f81b031916908160001a90535060005b8451811015613d3357826004868381518110613c4a57613c4a61449a565b01602001516001600160f81b031916901c60f81c60108110613c6e57613c6e61449a565b1a60f81b82613c7e8360026144c6565b613c899060026145e3565b81518110613c9957613c9961449a565b60200101906001600160f81b031916908160001a90535082858281518110613cc357613cc361449a565b60209101015160f81c600f1660108110613cdf57613cdf61449a565b1a60f81b82613cef8360026144c6565b613cfa9060036145e3565b81518110613d0a57613d0a61449a565b60200101906001600160f81b031916908160001a90535080613d2b81614819565b915050613c2c565b509392505050565b306001600160a01b03851603613d5b57613d56828483611652565b612e65565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052731b5d39419c268b76db06de49e38b010fbfb5e22690630a5ea46690608401600060405180830381600087803b158015613dc757600080fd5b505af1158015613ddb573d6000803e3d6000fd5b5050505050505050565b60008060408385031215613df857600080fd5b50508035926020909101359150565b6001600160a01b0381168114610d0157600080fd5b600060a08284031215613e2e57600080fd5b50919050565b60008083601f840112613e4657600080fd5b5081356001600160401b03811115613e5d57600080fd5b6020830191508360208260051b8501011115613e7857600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613e9e57600080fd5b8935985060208a0135613eb081613e07565b9750613ebf8b60408c01613e1c565b965060e08a01356001600160401b0380821115613edb57600080fd5b613ee78d838e01613e34565b90985096506101008c0135915080821115613f0157600080fd5b613f0d8d838e01613e34565b90965094506101208c0135915080821115613f2757600080fd5b50613f348c828d01613e34565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215613f6457600080fd5b8635955060208701359450604087013593506060870135613f8481613e07565b925060808701356001600160401b03811115613f9f57600080fd5b613fab89828a01613e34565b979a9699509497509295939492505050565b600080600080600060808688031215613fd557600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561400057600080fd5b61400c88828901613e34565b969995985093965092949392505050565b60006020828403121561402f57600080fd5b81356123b381613e07565b60008060006060848603121561404f57600080fd5b833561405a81613e07565b9250602084013561406a81613e07565b929592945050506040919091013590565b8015158114610d0157600080fd5b6000806040838503121561409c57600080fd5b82356140a781613e07565b915060208301356140b78161407b565b809150509250929050565b600080600080600080600080610120898b0312156140df57600080fd5b883597506140f08a60208b01613e1c565b965060c08901356001600160401b038082111561410c57600080fd5b6141188c838d01613e34565b909850965060e08b013591508082111561413157600080fd5b61413d8c838d01613e34565b90965094506101008b013591508082111561415757600080fd5b506141648b828c01613e34565b999c989b5096995094979396929594505050565b600080600080600080600080610120898b03121561419557600080fd5b61419f8a8a613e1c565b975060a08901356001600160401b03808211156141bb57600080fd5b6141c78c838d01613e34565b909950975060c08b01359150808211156141e057600080fd5b6141ec8c838d01613e34565b909750955060e08b013591508082111561420557600080fd5b506142128b828c01613e34565b90945092505061010089013561422781613e07565b809150509295985092959890939650565b60006020828403121561424a57600080fd5b5035919050565b60008083601f84011261426357600080fd5b5081356001600160401b0381111561427a57600080fd5b602083019150836020828501011115613e7857600080fd5b60008060008060008060008060c0898b0312156142ae57600080fd5b8835975060208901356142c081613e07565b9650604089013595506060890135945060808901356001600160401b03808211156142ea57600080fd5b6142f68c838d01613e34565b909650945060a08b013591508082111561430f57600080fd5b506141648b828c01614251565b6000806000806060858703121561433257600080fd5b843593506020850135925060408501356001600160401b0381111561435657600080fd5b61436287828801614251565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b60005b838110156143b1578181015183820152602001614399565b50506000910152565b60208152600082518060208401526143d9816040850160208701614396565b601f01601f19169190910160400192915050565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b6000806040838503121561442757600080fd5b825161443281613e07565b60208401519092506140b781613e07565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b60006020828403121561447d57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176131b4576131b46144b0565b6000826144fa57634e487b7160e01b600052601260045260246000fd5b500490565b600060a0828403121561451157600080fd5b60405160a081018181106001600160401b038211171561454157634e487b7160e01b600052604160045260246000fd5b60405282358152602083013561455681613e07565b806020830152506040830135604082015260608301356060820152608083013560808201528091505092915050565b818103818111156131b4576131b46144b0565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b808201808211156131b4576131b46144b0565b6000808335601e1984360301811261460d57600080fd5b8301803591506001600160401b0382111561462757600080fd5b6020019150600581901b3603821315613e7857600080fd5b6001600160e01b031984168152818360048301376000910160040190815292915050565b60008251614675818460208701614396565b9190910192915050565b60008235609e1983360301811261467557600080fd5b6000602082840312156146a757600080fd5b81516123b38161407b565b600083516146c4818460208801614396565b6508ae4e4dee4560d31b90830190815283516146e7816006840160208801614396565b602960f81b60069290910191820152600701949350505050565b60008351614713818460208801614396565b650a0c2dcd2c6560d31b90830190815283516146e7816006840160208801614396565b60008351614748818460208801614396565b670aadcd6dcdeeedc560c31b908301908152835161476d816008840160208801614396565b602960f81b60089290910191820152600901949350505050565b6000808335601e1984360301811261479e57600080fd5b8301803591506001600160401b038211156147b857600080fd5b602001915036819003821315613e7857600080fd5b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b60006001820161482b5761482b6144b0565b506001019056fe1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212209286783196e07fc1f6be4b75a2c949b869432c85aa91da3353d9bb673a74700b64736f6c63430008110033