UNPKG

@kaiachain/kss-bridges-celer

Version:
1,424 lines 124 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Bridge", "sourceName": "contracts/Bridge.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "period", "type": "uint256" } ], "name": "DelayPeriodUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "threshold", "type": "uint256" } ], "name": "DelayThresholdUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "DelayedTransferAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "id", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DelayedTransferExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "EpochLengthUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "EpochVolumeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "GovernorAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "GovernorRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "seqnum", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "provider", "type": "address" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LiquidityAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MaxSendUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MinAddUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MinSendUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "PauserAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "PauserRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "transferId", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "srcChainId", "type": "uint64" }, { "indexed": false, "internalType": "bytes32", "name": "srcTransferId", "type": "bytes32" } ], "name": "Relay", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "resetTime", "type": "uint256" } ], "name": "ResetNotification", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "transferId", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "dstChainId", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "indexed": false, "internalType": "uint32", "name": "maxSlippage", "type": "uint32" } ], "name": "Send", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "_signers", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "_powers", "type": "uint256[]" } ], "name": "SignersUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "withdrawId", "type": "bytes32" }, { "indexed": false, "internalType": "uint64", "name": "seqnum", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes32", "name": "refid", "type": "bytes32" } ], "name": "WithdrawDone", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "addGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "addLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "addNativeLiquidity", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addPauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "addseq", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "delayPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "delayThresholds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "delayedTransfers", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "epochLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "epochVolumeCaps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "epochVolumes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "executeDelayedTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "governors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "period", "type": "uint256" } ], "name": "increaseNoticePeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "isGovernor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isPauser", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastOpTimestamps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxSend", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minAdd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minSend", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimalMaxSlippage", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nativeWrap", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "noticePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "notifyResetSigners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "pausers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_relayRequest", "type": "bytes" }, { "internalType": "bytes[]", "name": "_sigs", "type": "bytes[]" }, { "internalType": "address[]", "name": "_signers", "type": "address[]" }, { "internalType": "uint256[]", "name": "_powers", "type": "uint256[]" } ], "name": "relay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "removeGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removePauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renouncePauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_signers", "type": "address[]" }, { "internalType": "uint256[]", "name": "_powers", "type": "uint256[]" } ], "name": "resetSigners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resetTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint64", "name": "_dstChainId", "type": "uint64" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "uint32", "name": "_maxSlippage", "type": "uint32" } ], "name": "send", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint64", "name": "_dstChainId", "type": "uint64" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "uint32", "name": "_maxSlippage", "type": "uint32" } ], "name": "sendNative", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_period", "type": "uint256" } ], "name": "setDelayPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "_thresholds", "type": "uint256[]" } ], "name": "setDelayThresholds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_length", "type": "uint256" } ], "name": "setEpochLength", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "_caps", "type": "uint256[]" } ], "name": "setEpochVolumeCaps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "setMaxSend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "setMinAdd", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "setMinSend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_minimalMaxSlippage", "type": "uint32" } ], "name": "setMinimalMaxSlippage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_weth", "type": "address" } ], "name": "setWrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "ssHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "transfers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "triggerTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_triggerTime", "type": "uint256" }, { "internalType": "address[]", "name": "_newSigners", "type": "address[]" }, { "internalType": "uint256[]", "name": "_newPowers", "type": "uint256[]" }, { "internalType": "bytes[]", "name": "_sigs", "type": "bytes[]" }, { "internalType": "address[]", "name": "_curSigners", "type": "address[]" }, { "internalType": "uint256[]", "name": "_curPowers", "type": "uint256[]" } ], "name": "updateSigners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_msg", "type": "bytes" }, { "internalType": "bytes[]", "name": "_sigs", "type": "bytes[]" }, { "internalType": "address[]", "name": "_signers", "type": "address[]" }, { "internalType": "uint256[]", "name": "_powers", "type": "uint256[]" } ], "name": "verifySigs", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_wdmsg", "type": "bytes" }, { "internalType": "bytes[]", "name": "_sigs", "type": "bytes[]" }, { "internalType": "address[]", "name": "_signers", "type": "address[]" }, { "internalType": "uint256[]", "name": "_powers", "type": "uint256[]" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "withdraws", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60806040523480156200001157600080fd5b506200001d3362000048565b60016005556006805460ff19169055620000373362000098565b620000423362000162565b62000222565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811660009081526007602052604090205460ff1615620001075760405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c7265616479207061757365720000000000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260076020908152604091829020805460ff1916600117905590519182527f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f891015b60405180910390a150565b6001600160a01b03811660009081526008602052604090205460ff1615620001cd5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f7200000000006044820152606401620000fe565b6001600160a01b038116600081815260086020908152604091829020805460ff1916600117905590519182527fdc5a48d79e2e147530ff63ecdbed5a5a66adb9d5cf339384d5d076da197c40b5910162000157565b61505e80620002326000396000f3fe60806040526004361061036f5760003560e01c806382dc1ec4116101c6578063ba2cb25c116100f7578063e43581b811610095578063f20c922a1161006f578063f20c922a14610acf578063f2fde38b14610aef578063f832138314610b0f578063f8b30d7d14610b3c57600080fd5b8063e43581b814610a56578063e999e5f414610a8f578063eecdac8814610aaf57600080fd5b8063d0790da9116100d1578063d0790da9146109cb578063e026049c146109e1578063e09ab428146109f6578063e3eece2614610a2657600080fd5b8063ba2cb25c1461095e578063ccde517a1461097e578063cdd1b25d146109ab57600080fd5b80639ff9001a11610164578063a7bdf45a1161013e578063a7bdf45a14610881578063adc0d57f146108a1578063b1c94d941461091b578063b5f2bc471461093157600080fd5b80639ff9001a14610821578063a21a928014610841578063a5977fbb1461086157600080fd5b806389e39127116101a057806389e39127146107935780638da5cb5b146107cd5780639b14d4c6146107eb5780639e25fc5c1461080157600080fd5b806382dc1ec41461073e5780638456cb591461075e578063878fe1ce1461077357600080fd5b806352532faa116102a057806365a114f11161023e5780636ef8d66d116102185780636ef8d66d146106d15780637044c89e146106e6578063715018a6146106f957806380f51c121461070e57600080fd5b806365a114f11461067b578063682dbc22146106915780636b2c0f55146106b157600080fd5b806357d775f81161027a57806357d775f8146105f35780635c975abb1461060957806360216b0014610621578063618ee0551461064e57600080fd5b806352532faa1461058657806354eea796146105b357806356688700146105d357600080fd5b80633d5721071161030d578063457bfa2f116102e7578063457bfa2f146104d557806346fbf68e1461050d57806347b16c6c14610546578063482341261461056657600080fd5b80633d5721071461048d5780633f2e5fc3146104ad5780633f4ba83a146104c057600080fd5b80632fd1b0a4116103495780632fd1b0a4146103d2578063370fb47b146104095780633c4a25d01461042d5780633c64f04b1461044d57600080fd5b8063089927411461037b57806317bdbae51461039d57806325c38b9f146103bd57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b6103963660046147b9565b610b69565b005b3480156103a957600080fd5b5061039b6103b83660046147b9565b610d0c565b3480156103c957600080fd5b5061039b610ea3565b3480156103de57600080fd5b506017546103ef9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561041557600080fd5b5061041f60025481565b604051908152602001610400565b34801561043957600080fd5b5061039b610448366004614841565b610f33565b34801561045957600080fd5b5061047d61046836600461485c565b60146020526000908152604090205460ff1681565b6040519015158152602001610400565b34801561049957600080fd5b5061039b6104a836600461485c565b610f87565b61039b6104bb3660046148a1565b61101b565b3480156104cc57600080fd5b5061039b611271565b3480156104e157600080fd5b506013546104f5906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b34801561051957600080fd5b5061047d610528366004614841565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561055257600080fd5b5061039b6105613660046147b9565b6112da565b34801561057257600080fd5b5061039b6105813660046148ff565b611471565b34801561059257600080fd5b5061041f6105a1366004614841565b600e6020526000908152604090205481565b3480156105bf57600080fd5b5061039b6105ce36600461485c565b6114e5565b3480156105df57600080fd5b5061039b6105ee36600461491a565b611572565b3480156105ff57600080fd5b5061041f60095481565b34801561061557600080fd5b5060065460ff1661047d565b34801561062d57600080fd5b5061041f61063c366004614841565b600a6020526000908152604090205481565b34801561065a57600080fd5b5061041f610669366004614841565b60166020526000908152604090205481565b34801561068757600080fd5b5061041f60035481565b34801561069d57600080fd5b5061039b6106ac36600461495a565b611734565b3480156106bd57600080fd5b5061039b6106cc366004614841565b611820565b3480156106dd57600080fd5b5061039b611871565b61039b6106f436600461485c565b61187a565b34801561070557600080fd5b5061039b611b2c565b34801561071a57600080fd5b5061047d610729366004614841565b60076020526000908152604090205460ff1681565b34801561074a57600080fd5b5061039b610759366004614841565b611b7e565b34801561076a57600080fd5b5061039b611bcf565b34801561077f57600080fd5b5061039b61078e3660046147b9565b611c36565b34801561079f57600080fd5b506010546107b49067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610400565b3480156107d957600080fd5b506000546001600160a01b03166104f5565b3480156107f757600080fd5b5061041f60045481565b34801561080d57600080fd5b5061039b61081c36600461485c565b611dcd565b34801561082d57600080fd5b5061039b61083c366004614841565b611e3b565b34801561084d57600080fd5b5061039b61085c366004614a88565b611ea5565b34801561086d57600080fd5b5061039b61087c366004614b77565b6121ec565b34801561088d57600080fd5b5061039b61089c3660046147b9565b61233a565b3480156108ad57600080fd5b506108f06108bc36600461485c565b600d6020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919092169184565b604080516001600160a01b039586168152949093166020850152918301526060820152608001610400565b34801561092757600080fd5b5061041f600f5481565b34801561093d57600080fd5b5061041f61094c366004614841565b600b6020526000908152604090205481565b34801561096a57600080fd5b5061039b610979366004614be4565b6123eb565b34801561098a57600080fd5b5061041f610999366004614841565b60116020526000908152604090205481565b3480156109b757600080fd5b5061039b6109c6366004614a88565b612541565b3480156109d757600080fd5b5061041f60015481565b3480156109ed57600080fd5b5061039b612866565b348015610a0257600080fd5b5061047d610a1136600461485c565b60126020526000908152604090205460ff1681565b348015610a3257600080fd5b5061047d610a41366004614841565b60086020526000908152604090205460ff1681565b348015610a6257600080fd5b5061047d610a71366004614841565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610a9b57600080fd5b5061039b610aaa3660046147b9565b61286f565b348015610abb57600080fd5b5061039b610aca366004614841565b612a06565b348015610adb57600080fd5b5061039b610aea36600461485c565b612a57565b348015610afb57600080fd5b5061039b610b0a366004614841565b612b01565b348015610b1b57600080fd5b5061041f610b2a366004614841565b600c6020526000908152604090205481565b348015610b4857600080fd5b5061041f610b57366004614841565b60156020526000908152604090205481565b3360009081526008602052604090205460ff16610bc65760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b60448201526064015b60405180910390fd5b828114610c075760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610bbd565b60005b83811015610d0557828282818110610c2457610c24614ce4565b9050602002013560156000878785818110610c4157610c41614ce4565b9050602002016020810190610c569190614841565b6001600160a01b031681526020810191909152604001600020557f8b59d386e660418a48d742213ad5ce7c4dd51ae81f30e4e2c387f17d907010c9858583818110610ca357610ca3614ce4565b9050602002016020810190610cb89190614841565b848484818110610cca57610cca614ce4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610cfd81614d10565b915050610c0a565b5050505050565b3360009081526008602052604090205460ff16610d645760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b6044820152606401610bbd565b828114610da55760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610bbd565b60005b83811015610d0557828282818110610dc257610dc2614ce4565b90506020020135600e6000878785818110610ddf57610ddf614ce4565b9050602002016020810190610df49190614841565b6001600160a01b031681526020810191909152604001600020557fceaad6533bfb481492fb3e08ef19297f46611b8fa9de5ef4cf8dc23a56ad09ce858583818110610e4157610e41614ce4565b9050602002016020810190610e569190614841565b848484818110610e6857610e68614ce4565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610e9b81614d10565b915050610da8565b6000546001600160a01b03163314610eeb5760405162461bcd60e51b815260206004820181905260248201526000805160206150098339815191526044820152606401610bbd565b600454610ef89042614d2b565b60038190556040519081527f68e825132f7d4bc837dea2d64ac9fc19912bf0224b67f9317d8f1a917f5304a1906020015b60405180910390a1565b6000546001600160a01b03163314610f7b5760405162461bcd60e51b815260206004820181905260248201526000805160206150098339815191526044820152606401610bbd565b610f8481612bce565b50565b3360009081526008602052604090205460ff16610fdf5760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b6044820152606401610bbd565b600f8190556040518181527fc0a39f234199b125fb93713c4d067bdcebbf691087f87b79c0feb92b156ba8b6906020