0 txs
0 calls
constructor
constructor()
functions
authorized
viewfunction authorized(address) view returns (bool)
buildExecuteDstUniByProtocolSeparator
viewfunction buildExecuteDstUniByProtocolSeparator(address caller, address receiptAddress, address dstToken, uint256 amount, uint256 fromChainId, bytes txHash) view returns (bytes32)
buildRefundUSDTSeparator
viewfunction buildRefundUSDTSeparator(address caller, address to, bytes txHash, uint256 amount) view returns (bytes32)
buildSendTokenToByProtocolSeparator
viewfunction buildSendTokenToByProtocolSeparator(address caller, address token, address to, uint256 amount, uint256 fromChainId, bytes txHash) view returns (bytes32)
eventIndex
viewfunction eventIndex() view returns (uint256)
EXECUTE_DST_UNI_BY_PROTOCOL_TYPEHASH
viewfunction EXECUTE_DST_UNI_BY_PROTOCOL_TYPEHASH() view returns (bytes32)
indexes
viewfunction indexes(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
REFUND_USDT_BY_PROTOCOL_TYPEHASH
viewfunction REFUND_USDT_BY_PROTOCOL_TYPEHASH() view returns (bytes32)
relayer
viewfunction relayer() view returns (address)
SEND_TOKEN_TO_BY_PROTOCOL_TYPEHASH
viewfunction SEND_TOKEN_TO_BY_PROTOCOL_TYPEHASH() view returns (bytes32)
signers
viewfunction signers(uint256) view returns (address)
usedHash
viewfunction usedHash(bytes) view returns (bool)
addSigner
nonpayablefunction addSigner(address account)
emergePause
nonpayablefunction emergePause()
executeDstUniByProtocol
payablefunction executeDstUniByProtocol(tuple data) payable
executeSrcUniByUser
payablefunction executeSrcUniByUser(tuple data) payable
forwardToUniswap
payablefunction forwardToUniswap(tuple data) payable
initialize
nonpayablefunction initialize(address _universalRouter, address _usdt, address _weth9, address _permit2, address _initialOwner, address[] _signers)
refundUSDT
nonpayablefunction refundUSDT(address to, bytes txHash, uint256 amount, bytes[] signatures)
removeSigner
nonpayablefunction removeSigner(address account)
renounceOwnership
nonpayablefunction renounceOwnership()
sendTokenToByProtocol
nonpayablefunction sendTokenToByProtocol(address token, address to, uint256 amount, uint256 fromChainId, bytes txHash, bytes[] signatures)
sendTokenToByUser
payablefunction sendTokenToByUser(address token, address to, uint256 dstChainId, uint256 amount) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unPause
nonpayablefunction unPause()
withdrawEth
nonpayablefunction withdrawEth()
withdrawTokens
nonpayablefunction withdrawTokens(address token)
events
ExecDstUniByProtocol
event ExecDstUniByProtocol(uint256 indexed eventIndex, address indexed receiptAddress, address indexed dstToken, uint256 fromChainId, uint256 amount, uint256 amountOut, bytes txHash)
ForwardToUniswap
event ForwardToUniswap(uint256 indexed eventIndex, address indexed user, address indexed srcToken, address dstToken, uint256 orderId, address receiver, uint256 srcAmount, uint256 dstAmount)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RefundUSDT
event RefundUSDT(uint256 indexed eventIndex, address indexed caller, address indexed to, uint256 amount, bytes txHash)
SendTokenToByProtocol
event SendTokenToByProtocol(uint256 indexed eventIndex, address indexed caller, address indexed token, address to, uint256 amount, uint256 fromChainId, bytes txHash)
SendTokenToByUser
event SendTokenToByUser(uint256 indexed eventIndex, address indexed user, address indexed token, address to, address dstToken, uint256 fromChainId, uint256 dstChainId, uint256 amount)
SignerAdded
event SignerAdded(address indexed caller, address indexed account)
SignerRemoved
event SignerRemoved(address indexed caller, address indexed account)
SwapCompleted
event SwapCompleted(uint256 indexed eventIndex, address indexed user, address indexed srcToken, bytes dstToken, uint256 orderId, bytes32 to, uint256 srcAmount, uint256 minAmountOut, uint256 usdtAmount, uint256 dstChainId)
Unpaused
event Unpaused(address account)
errors
AlreadyExist
error AlreadyExist()
DstTokenUnExpected
error DstTokenUnExpected()
DuplicatedSignature
error DuplicatedSignature()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidInitialization
error InvalidInitialization()
InvalidParam
error InvalidParam()
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
NotExist
error NotExist()
NotInitializing
error NotInitializing()
NotWhitelistedToken
error NotWhitelistedToken()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SrcTokenUnExpected
error SrcTokenUnExpected()
TransferFailed
error TransferFailed()
UniExecuteFailed
error UniExecuteFailed()
USDTUnExpected
error USDTUnExpected()
UsedHash
error UsedHash()
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6135fb806100d96000396000f3fe6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063caf4bed111610095578063f2fde38b11610064578063f2fde38b14610518578063f7b188a514610538578063f93c968c1461054d578063fc2168341461056057600080fd5b8063caf4bed1146104a3578063e0591af3146104c3578063e9d6d85c146104d8578063eb12d61e146104f857600080fd5b8063a16d5c8c116100d1578063a16d5c8c1461042b578063a849466a1461043e578063b5df06b414610453578063b91816111461047357600080fd5b80638da5cb5b146103b95780638e5301d1146103f6578063a0ef91df1461041657600080fd5b80635c975abb1161016457806374ce50531161013e57806374ce5053146103465780638406c07914610366578063884245a0146103865780638be08a6e146103a657600080fd5b80635c975abb146102f75780636b44b81b1461031c578063715018a61461033157600080fd5b80632079fb9a116101a05780632079fb9a1461025d5780632db78d931461029557806349df728c146102c257806355c4c968146102e257600080fd5b806309ef61b0146101c75780630e316ab71461021757806317d18bee14610239575b600080fd5b3480156101d357600080fd5b506102026101e2366004612c88565b8051602081830181018051600b8252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561022357600080fd5b50610237610232366004612ce0565b610573565b005b34801561024557600080fd5b5061024f600d5481565b60405190815260200161020e565b34801561026957600080fd5b5061027d610278366004612d02565b610728565b6040516001600160a01b03909116815260200161020e565b3480156102a157600080fd5b5061024f6102b0366004612ce0565b600a6020526000908152604090205481565b3480156102ce57600080fd5b506102376102dd366004612ce0565b610752565b3480156102ee57600080fd5b5061024f6107df565b34801561030357600080fd5b506000805160206135868339815191525460ff16610202565b34801561032857600080fd5b5061024f610807565b34801561033d57600080fd5b50610237610816565b34801561035257600080fd5b50610237610361366004612d66565b61082a565b34801561037257600080fd5b5060075461027d906001600160a01b031681565b34801561039257600080fd5b506102376103a1366004612dee565b610953565b6102376103b4366004612e90565b610b21565b3480156103c557600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027d565b34801561040257600080fd5b5061024f610411366004612ed2565b610ce0565b34801561042257600080fd5b50610237610d84565b610237610439366004612f52565b610df7565b34801561044a57600080fd5b5061024f61106a565b34801561045f57600080fd5b5061023761046e366004612f8d565b611079565b34801561047f57600080fd5b5061020261048e366004612ce0565b60096020526000908152604090205460ff1681565b3480156104af57600080fd5b5061024f6104be366004613004565b611466565b3480156104cf57600080fd5b50610237611504565b3480156104e457600080fd5b5061024f6104f3366004612ed2565b611514565b34801561050457600080fd5b50610237610513366004612ce0565b611527565b34801561052457600080fd5b50610237610533366004612ce0565b61160c565b34801561054457600080fd5b5061023761164c565b61023761055b366004613069565b61165c565b61023761056e3660046130a3565b611ae5565b61057b6120ba565b6001600160a01b03811660009081526009602052604090205460ff1615806105bd57506008546001600160a01b0382166000908152600a602052604090205410155b156105db5760405163ad5679e160e01b815260040160405180910390fd5b6001600160a01b0381166000908152600a6020526040812054600854909190610606906001906130f3565b905080821461068e5760006008828154811061062457610624613106565b600091825260209091200154600880546001600160a01b03909216925082918590811061065357610653613106565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600a909152604090208290555b6001600160a01b0383166000908152600960209081526040808320805460ff19169055600a90915281205560088054806106ca576106ca61311c565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0385169133917f98d1ebbe00ae92a5de96a0f49742a8afa89f42363592bc2e7cfaaed68b45e7a69190a3505050565b6008818154811061073857600080fd5b6000918252602090912001546001600160a01b0316905081565b61075a6120ba565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156107a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c59190613132565b90506107db6001600160a01b0383163383612115565b5050565b6040516020016107ee9061314b565b6040516020818303038152906040528051906020012081565b6040516020016107ee906131d7565b61081e6120ba565b6108286000612179565b565b600b8460405161083a9190613254565b9081526040519081900360200190205460ff161561086b5760405163dcd7877f60e01b815260040160405180910390fd5b6001600160a01b03851661089257604051633494a40d60e21b815260040160405180910390fd5b6108a86108a133878787611466565b83836121ea565b506001600b856040516108bb9190613254565b908152604051908190036020019020805491151560ff199092169190911790556004546108f2906001600160a01b03168685612115565b600d80546001600160a01b03871691339190600061090f83613270565b919050557f324dcda117ddad424269ff11ccf58239f40ba126987f6e8542e6370456120f4f86886040516109449291906132b5565b60405180910390a45050505050565b61095b612376565b600b8360405161096b9190613254565b9081526040519081900360200190205460ff161561099c5760405163dcd7877f60e01b815260040160405180910390fd5b6109ad6108a1338989898989610ce0565b506001600160a01b0386166109d557604051633494a40d60e21b815260040160405180910390fd5b6001600b846040516109e79190613254565b908152604051908190036020019020805491151560ff199092169190911790556001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610a4457610a3f6001600160a01b0388168787612115565b610aba565b6000866001600160a01b03168660405160006040518083038185875af1925050503d8060008114610a91576040519150601f19603f3d011682016040523d82523d6000602084013e610a96565b606091505b5050905080610ab8576040516312171d8360e31b815260040160405180910390fd5b505b600d80546001600160a01b038916913391906000610ad783613270565b919050557f5fd14a3e0559ffe4278f08df5a56c9536b4658c22d46ef2bbb285196548d123789898989604051610b1094939291906132ce565b60405180910390a450505050505050565b610b29612376565b6001600160a01b038085166000908152600c602090815260408083208684529091529020548591849116610b70576040516365a9cebb60e01b815260040160405180910390fd5b6001600160a01b0385161580610b87575060015484145b80610b90575082155b15610bae57604051633494a40d60e21b815260040160405180910390fd5b600034118015610be557506001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141580610be55750348314155b15610c0357604051633494a40d60e21b815260040160405180910390fd5b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610c3c57610c3c6001600160a01b0387163330866123a7565b600d80546001600160a01b038816913391906000610c5983613270565b909155506001600160a01b038981166000908152600c602090815260408083208b84528252918290205460015483518d861681529190941691810191909152808201929092526060820189905260808201889052517f8d5e4eb248d0947c8811e0afc0c5a3693e8cb251b31721c616941a4d59fb8b0c9181900360a00190a4505050505050565b60008054604051602001610cf39061314b565b60405160208183030381529060405280519060200120888888888888604051602001610d2597969594939291906132fb565b60405160208183030381529060405280519060200120604051602001610d6292919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090509695505050505050565b610d8c6120ba565b6040514790600090339083908381818185875af1925050503d8060008114610dd0576040519150601f19603f3d011682016040523d82523d6000602084013e610dd5565b606091505b50509050806107db576040516312171d8360e31b815260040160405180910390fd5b610dff612376565b610e076123e6565b600154816080013503610e2d57604051633494a40d60e21b815260040160405180910390fd5b610e4a60a0820135610e456040840160208501612ce0565b61241e565b60045460a0820135906001600160a01b0316610e6c6040840160208501612ce0565b6001600160a01b031614610fbc57600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec9190613132565b9050610f18610f016040850160208601612ce0565b60a0850135610f1360e0870187613350565b6124f0565b600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a9190613132565b9050610f9682826130f3565b925082600003610fb9576040516356034c2360e01b815260040160405180910390fd5b50505b610fcc6040830160208401612ce0565b600d80546001600160a01b03929092169133916000610fea83613270565b909155507f1c6b7a1c4b2fd9e2353a2043c16ad87f92e04d2744e8f4ba5abb645f04fb16ee61101c6040870187613350565b60405161104792919089359060608b01359060a08c01359060c08d0135908c9060808f0135906133bf565b60405180910390a45061106760016000805160206135a683398151915255565b50565b6040516020016107ee90613405565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156110be5750825b90506000826001600160401b031660011480156110da5750303b155b9050811580156110e8575080155b156111065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113057845460ff60401b1916600160401b1785555b6001600160a01b038c16158061114d57506001600160a01b038816155b8061115f57506001600160a01b038b16155b8061117157506001600160a01b038a16155b8061118357506001600160a01b038916155b8061118c575085155b156111aa57604051633494a40d60e21b815260040160405180910390fd5b6111b26127df565b6111ba6127ef565b6111c3886127ff565b4660018190556112137f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fa59696762249582d4fe302deb5184422b0653a8c76fc665bb7fd04724b67bd36612810565b6000819055508c600260006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060005b878110156114105760008989838181106112d4576112d4613106565b90506020020160208101906112e99190612ce0565b6001600160a01b03160361131057604051633494a40d60e21b815260040160405180910390fd5b600854600a60008b8b8581811061132957611329613106565b905060200201602081019061133e9190612ce0565b6001600160a01b03168152602081019190915260400160002055600889898381811061136c5761136c613106565b90506020020160208101906113819190612ce0565b81546001808201845560009384526020842090910180546001600160a01b0319166001600160a01b039390931692909217909155906009908b8b858181106113cb576113cb613106565b90506020020160208101906113e09190612ce0565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016112b8565b5050831561145857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60008054604051602001611479906131d7565b60405160208183030381529060405280519060200120868686866040516020016114a79594939291906134a0565b604051602081830303815290604052805190602001206040516020016114e492919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b61150c6120ba565b610828612857565b60008054604051602001610cf390613405565b61152f6120ba565b6001600160a01b03811660009081526009602052604090205460ff1615611569576040516333e9449d60e21b815260040160405180910390fd5b600880546001600160a01b0383166000818152600a602090815260408083209490945560099052828120805460ff19166001908117909155845490810185559381527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390930180546001600160a01b031916821790559051909133917f12146497b3b826918ec47f0cac7272a09ed06b30c16c030e99ec48ff5dd60b479190a350565b6116146120ba565b6001600160a01b03811661164357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61106781612179565b6116546120ba565b6108286128ba565b611664612376565b61166c6123e6565b600061167e6060830160408401612ce0565b6001600160a01b031614806116ab575060006116a06040830160208401612ce0565b6001600160a01b0316145b806116ce575060006116c36080830160608401612ce0565b6001600160a01b0316145b806116db57506080810135155b8061171557506116f16040820160208301612ce0565b6001600160a01b031661170a6060830160408401612ce0565b6001600160a01b0316145b1561173357604051633494a40d60e21b815260040160405180910390fd5b61174b6080820135610e456040840160208501612ce0565b600061175d6060830160408401612ce0565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6117846060840160408501612ce0565b6001600160a01b0316036117a057506005546001600160a01b03165b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180b9190613132565b90506118326118206040850160208601612ce0565b6080850135610f1360a0870187613350565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190613132565b90508181116118bf5760405163728e041160e11b815260040160405180910390fd5b60006118cb83836130f3565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6118f26060870160408801612ce0565b6001600160a01b0316036119e957600554604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b50600092506119729150506080870160608801612ce0565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146119bc576040519150601f19603f3d011682016040523d82523d6000602084013e6119c1565b606091505b50509050806119e3576040516312171d8360e31b815260040160405180910390fd5b50611a0d565b611a0d6119fc6080870160608801612ce0565b6001600160a01b0386169083612115565b611a1d6040860160208701612ce0565b600d80546001600160a01b03929092169133916000611a3b83613270565b909155507f91ed54ecfaf46f9ab80a6a591d877fbc441bf9bbe2cda197a93d6b67f88bda3f611a7060608a0160408b01612ce0565b8935611a8260808c0160608d01612ce0565b60808c0135611a918b8b6130f3565b604080516001600160a01b039687168152602081019590955292909416838301526060830152608082019290925290519081900360a00190a45050505061106760016000805160206135a683398151915255565b611aed612376565b600b611afc6080830183613350565b604051611b0a9291906134e4565b9081526040519081900360200190205460ff1615611b3b5760405163dcd7877f60e01b815260040160405180910390fd5b6000611b4a6020830183612ce0565b6001600160a01b031603611b7157604051633494a40d60e21b815260040160405180910390fd5b6001600b611b826080840184613350565b604051611b909291906134e4565b90815260405160209181900382019020805460ff191692151592909217909155611c3990611c27903390611bc690850185612ce0565b611bd66040860160208701612ce0565b60408601356060870135611bed6080890189613350565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061151492505050565b611c3460c08401846134f4565b6121ea565b506004805460035460408051636eb1769f60e11b815230948101949094526001600160a01b0391821660248501528401359291169063dd62ed3e90604401602060405180830381865afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb89190613132565b1015611d6057600354600454611cdd916001600160a01b039182169116600019612900565b600354600480546002546040516387517c4560e01b81526001600160a01b0392831693810193909352811660248301526044820181905265ffffffffffff6064830152909116906387517c4590608401600060405180830381600087803b158015611d4757600080fd5b505af1158015611d5b573d6000803e3d6000fd5b505050505b6000611d726040830160208401612ce0565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee611d996040840160208501612ce0565b6001600160a01b031603611db557506005546001600160a01b03165b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e209190613132565b600454909150611e45906001600160a01b03166040850135610f1360a0870187613350565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190613132565b9050818111611ed25760405163728e041160e11b815260040160405180910390fd5b6000611ede83836130f3565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee611f056040870160208801612ce0565b6001600160a01b031603611ff957600554604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611f5957600080fd5b505af1158015611f6d573d6000803e3d6000fd5b5060009250611f829150506020870187612ce0565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611fcc576040519150601f19603f3d011682016040523d82523d6000602084013e611fd1565b606091505b5050905080611ff3576040516312171d8360e31b815260040160405180910390fd5b5061202a565b61202a6120096020870187612ce0565b8261201a6040890160208a01612ce0565b6001600160a01b03169190612115565b61203a6040860160208701612ce0565b6001600160a01b03166120506020870187612ce0565b6001600160a01b0316600d600081548092919061206c90613270565b909155507f6468f0fd09a339eb86226c1fd49a79110476154f6f25b367b9a482db022086d5606089013560408a0135866120a960808d018d613350565b60405161094495949392919061353d565b336120ec7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108285760405163118cdaa760e01b815233600482015260240161163a565b6040516001600160a01b0383811660248301526044820183905261217491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061298c565b505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6008546000908015806121fd5750808314155b1561221b57604051633494a40d60e21b815260040160405180910390fd5b6000816001600160401b0381111561223557612235612be5565b60405190808252806020026020018201604052801561225e578160200160208202803683370190505b50905060005b8281101561236957600061229b8888888581811061228457612284613106565b90506020028101906122969190613350565b6129fd565b6001600160a01b03811660009081526009602052604090205490915060ff166122d757604051638baa579f60e01b815260040160405180910390fd5b60005b8281101561233457816001600160a01b03168482815181106122fe576122fe613106565b60200260200101516001600160a01b03160361232c57604051628d553f60e01b815260040160405180910390fd5b6001016122da565b508083838151811061234857612348613106565b6001600160a01b039092166020928302919091019091015250600101612264565b5060019695505050505050565b6000805160206135868339815191525460ff16156108285760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526123e09186918216906323b872dd90608401612142565b50505050565b6000805160206135a683398151915280546001190161241857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b34156124db57813414158061245057506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b1561246e57604051633494a40d60e21b815260040160405180910390fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156124be57600080fd5b505af11580156124d2573d6000803e3d6000fd5b50505050505050565b6107db6001600160a01b0382163330856123a7565b8373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0382160161252457506005546001600160a01b03165b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190613132565b600354604051636eb1769f60e11b81523060048201526001600160a01b03918216602482015291925086919084169063dd62ed3e90604401602060405180830381865afa1580156125e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126089190613132565b10156126a75760035461262a906001600160a01b038481169116600019612900565b6003546002546040516387517c4560e01b81526001600160a01b03858116600483015291821660248201526044810182905265ffffffffffff60648201529116906387517c4590608401600060405180830381600087803b15801561268e57600080fd5b505af11580156126a2573d6000803e3d6000fd5b505050505b6002546040516000916001600160a01b0316906126c790879087906134e4565b6000604051808303816000865af19150503d8060008114612704576040519150601f19603f3d011682016040523d82523d6000602084013e612709565b606091505b505090508061272b5760405163020f798b60e31b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127969190613132565b9050866127a382856130f3565b146127c1576040516307a208e160e11b815260040160405180910390fd5b5050505050505050565b60016000805160206135a683398151915255565b6127e7612aec565b610828612b35565b6127f7612aec565b610828612b56565b612807612aec565b61106781612b5e565b6001546040805160208101859052908101839052606081019190915230608082015260009060a0016040516020818303038152906040528051906020012090505b92915050565b61285f612376565b600080516020613586833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6128c2612b66565b600080516020613586833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361289c565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526129518482612b96565b6123e0576040516001600160a01b0384811660248301526000604483015261298691869182169063095ea7b390606401612142565b6123e084825b600080602060008451602086016000885af1806129af576040513d6000823e3d81fd5b50506000513d915081156129c75780600114156129d4565b6001600160a01b0384163b155b156123e057604051635274afe760e01b81526001600160a01b038516600482015260240161163a565b60008080806041859003612a4057612a1785870187613563565b909350915085856040818110612a2f57612a2f613106565b919091013560f81c9150612a599050565b604051634be6321b60e01b815260040160405180910390fd5b604080516000808252602082018084528a905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612aad573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612ae157604051638baa579f60e01b815260040160405180910390fd5b979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661082857604051631afcd79f60e31b815260040160405180910390fd5b612b3d612aec565b600080516020613586833981519152805460ff19169055565b6127cb612aec565b611614612aec565b6000805160206135868339815191525460ff1661082857604051638dfc202b60e01b815260040160405180910390fd5b6000806000806020600086516020880160008a5af192503d91506000519050828015612bdb57508115612bcc5780600114612bdb565b6000866001600160a01b03163b115b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612c0c57600080fd5b81356001600160401b03811115612c2557612c25612be5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612c5357612c53612be5565b604052818152838201602001851015612c6b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612c9a57600080fd5b81356001600160401b03811115612cb057600080fd5b612cbc84828501612bfb565b949350505050565b80356001600160a01b0381168114612cdb57600080fd5b919050565b600060208284031215612cf257600080fd5b612cfb82612cc4565b9392505050565b600060208284031215612d1457600080fd5b5035919050565b60008083601f840112612d2d57600080fd5b5081356001600160401b03811115612d4457600080fd5b6020830191508360208260051b8501011115612d5f57600080fd5b9250929050565b600080600080600060808688031215612d7e57600080fd5b612d8786612cc4565b945060208601356001600160401b03811115612da257600080fd5b612dae88828901612bfb565b9450506040860135925060608601356001600160401b03811115612dd157600080fd5b612ddd88828901612d1b565b969995985093965092949392505050565b600080600080600080600060c0888a031215612e0957600080fd5b612e1288612cc4565b9650612e2060208901612cc4565b9550604088013594506060880135935060808801356001600160401b03811115612e4957600080fd5b612e558a828b01612bfb565b93505060a08801356001600160401b03811115612e7157600080fd5b612e7d8a828b01612d1b565b989b979a50959850939692959293505050565b60008060008060808587031215612ea657600080fd5b612eaf85612cc4565b9350612ebd60208601612cc4565b93969395505050506040820135916060013590565b60008060008060008060c08789031215612eeb57600080fd5b612ef487612cc4565b9550612f0260208801612cc4565b9450612f1060408801612cc4565b9350606087013592506080870135915060a08701356001600160401b03811115612f3957600080fd5b612f4589828a01612bfb565b9150509295509295509295565b600060208284031215612f6457600080fd5b81356001600160401b03811115612f7a57600080fd5b82016101008185031215612cfb57600080fd5b600080600080600080600060c0888a031215612fa857600080fd5b612fb188612cc4565b9650612fbf60208901612cc4565b9550612fcd60408901612cc4565b9450612fdb60608901612cc4565b9350612fe960808901612cc4565b925060a08801356001600160401b03811115612e7157600080fd5b6000806000806080858703121561301a57600080fd5b61302385612cc4565b935061303160208601612cc4565b925060408501356001600160401b0381111561304c57600080fd5b61305887828801612bfb565b949793965093946060013593505050565b60006020828403121561307b57600080fd5b81356001600160401b0381111561309157600080fd5b820160c08185031215612cfb57600080fd5b6000602082840312156130b557600080fd5b81356001600160401b038111156130cb57600080fd5b820160e08185031215612cfb57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612851576128516130dd565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561314457600080fd5b5051919050565b7f73656e64546f6b656e546f427950726f746f636f6c286164647265737320636181527f6c6c65722c6164647265737320746f6b656e2c6164647265737320746f2c756960208201527f6e7432353620616d6f756e742c75696e743235362066726f6d436861696e496460408201526d2c6279746573207478486173682960901b6060820152606e0190565b7f726566756e645553445428616464726573732063616c6c65722c61646472657381527f7320746f2c6279746573207478486173682c75696e7432353620616d6f756e746020820152602960f81b604082015260410190565b60005b8381101561324b578181015183820152602001613233565b50506000910152565b60008251613266818460208701613230565b9190910192915050565b600060018201613282576132826130dd565b5060010190565b600081518084526132a1816020860160208601613230565b601f01601f19169290920160200192915050565b828152604060208201526000612cbc6040830184613289565b60018060a01b0385168152836020820152826040820152608060608201526000612bdb6080830184613289565b8781526001600160a01b0387811660208301528681166040830152851660608201526080810184905260a0810183905260e060c0820181905260009061334390830184613289565b9998505050505050505050565b6000808335601e1984360301811261336757600080fd5b8301803591506001600160401b0382111561338157600080fd5b602001915036819003821315612d5f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60e0815260006133d360e083018a8c613396565b60208301989098525060408101959095526060850193909352608084019190915260a083015260c09091015292915050565b7f65786563757465447374556e69427950726f746f636f6c28616464726573732081527f63616c6c65722c616464726573732072656365697074416464726573732c616460208201527f647265737320647374546f6b656e2c75696e7432353620616d6f756e742c756960408201527f6e743235362066726f6d436861696e49642c62797465732074784861736829006060820152607f0190565b8581526001600160a01b0385811660208301528416604082015260a0606082018190526000906134d290830185613289565b90508260808301529695505050505050565b8183823760009101908152919050565b6000808335601e1984360301811261350b57600080fd5b8301803591506001600160401b0382111561352557600080fd5b6020019150600581901b3603821315612d5f57600080fd5b858152846020820152836040820152608060608201526000612ae1608083018486613396565b6000806040838503121561357657600080fd5b5050803592602090910135915056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220829951572e6b684aafb4fa73d3b1fd37295284679908ce74778e300e594b79d864736f6c634300081c0033