UNPKG

@sonicxchain/soxswap-periphery

Version:

Peripheral smart contracts for interacting with Soxswap

876 lines 2.65 MB
{ "contractName": "SoxswapRouter", "abi": [ { "constant": true, "inputs": [], "name": "WSOX", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "factory", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_factory", "type": "address" }, { "name": "_wsox", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "constant": false, "inputs": [ { "name": "tokenA", "type": "address" }, { "name": "tokenB", "type": "address" }, { "name": "amountADesired", "type": "uint256" }, { "name": "amountBDesired", "type": "uint256" }, { "name": "amountAMin", "type": "uint256" }, { "name": "amountBMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "addLiquidity", "outputs": [ { "name": "amountA", "type": "uint256" }, { "name": "amountB", "type": "uint256" }, { "name": "liquidity", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "amountTokenDesired", "type": "uint256" }, { "name": "amountTokenMin", "type": "uint256" }, { "name": "amountSOXMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "addLiquiditySOX", "outputs": [ { "name": "amountToken", "type": "uint256" }, { "name": "amountSOX", "type": "uint256" }, { "name": "liquidity", "type": "uint256" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "tokenA", "type": "address" }, { "name": "tokenB", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountAMin", "type": "uint256" }, { "name": "amountBMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "removeLiquidity", "outputs": [ { "name": "amountA", "type": "uint256" }, { "name": "amountB", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountTokenMin", "type": "uint256" }, { "name": "amountSOXMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "removeLiquiditySOX", "outputs": [ { "name": "amountToken", "type": "uint256" }, { "name": "amountSOX", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "tokenA", "type": "address" }, { "name": "tokenB", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountAMin", "type": "uint256" }, { "name": "amountBMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" }, { "name": "approveMax", "type": "bool" }, { "name": "v", "type": "uint8" }, { "name": "r", "type": "bytes32" }, { "name": "s", "type": "bytes32" } ], "name": "removeLiquidityWithPermit", "outputs": [ { "name": "amountA", "type": "uint256" }, { "name": "amountB", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountTokenMin", "type": "uint256" }, { "name": "amountSOXMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" }, { "name": "approveMax", "type": "bool" }, { "name": "v", "type": "uint8" }, { "name": "r", "type": "bytes32" }, { "name": "s", "type": "bytes32" } ], "name": "removeLiquiditySOXWithPermit", "outputs": [ { "name": "amountToken", "type": "uint256" }, { "name": "amountSOX", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountTokenMin", "type": "uint256" }, { "name": "amountSOXMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "removeLiquiditySOXSupportingFeeOnTransferTokens", "outputs": [ { "name": "amountSOX", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "liquidity", "type": "uint256" }, { "name": "amountTokenMin", "type": "uint256" }, { "name": "amountSOXMin", "type": "uint256" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" }, { "name": "approveMax", "type": "bool" }, { "name": "v", "type": "uint8" }, { "name": "r", "type": "bytes32" }, { "name": "s", "type": "bytes32" } ], "name": "removeLiquiditySOXWithPermitSupportingFeeOnTransferTokens", "outputs": [ { "name": "amountSOX", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactTokensForTokens", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountOut", "type": "uint256" }, { "name": "amountInMax", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapTokensForExactTokens", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactSOXForTokens", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountOut", "type": "uint256" }, { "name": "amountInMax", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapTokensForExactSOX", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactTokensForSOX", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountOut", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapSOXForExactTokens", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactSOXForTokensSupportingFeeOnTransferTokens", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "amountOutMin", "type": "uint256" }, { "name": "path", "type": "address[]" }, { "name": "to", "type": "address" }, { "name": "deadline", "type": "uint256" } ], "name": "swapExactTokensForSOXSupportingFeeOnTransferTokens", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "amountA", "type": "uint256" }, { "name": "reserveA", "type": "uint256" }, { "name": "reserveB", "type": "uint256" } ], "name": "quote", "outputs": [ { "name": "amountB", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "reserveIn", "type": "uint256" }, { "name": "reserveOut", "type": "uint256" } ], "name": "getAmountOut", "outputs": [ { "name": "amountOut", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "name": "amountOut", "type": "uint256" }, { "name": "reserveIn", "type": "uint256" }, { "name": "reserveOut", "type": "uint256" } ], "name": "getAmountIn", "outputs": [ { "name": "amountIn", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "name": "amountIn", "type": "uint256" }, { "name": "path", "type": "address[]" } ], "name": "getAmountsOut", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "amountOut", "type": "uint256" }, { "name": "path", "type": "address[]" } ], "name": "getAmountsIn", "outputs": [ { "name": "amounts", "type": "uint256[]" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b5060405160408062006eb0833981018060405260408110156200004f57600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050616db380620000fd6000396000f3fe608060405260043610610168576000357c0100000000000000000000000000000000000000000000000000000000900480637311b046116100d3578063b87acc9a1161008c578063b87acc9a146111b6578063baa2abde1461127d578063bbf5c86a1461136b578063c45a015514611460578063d06ca61f146114d1578063e8e337001461160f57610168565b80637311b04614610c7657806385f8c25914610d54578063860a253114610dd15780638803dbee14610f04578063a969186414611037578063ad615dec1461113957610168565b806338ed17391161012557806338ed1739146106bb5780633a3764e3146107ee57806341428aad14610921578063473cd85e14610a1d5780635c11d79514610aca57806372a636f414610ba857610168565b8063054d50d4146101c35780630b7d621214610240578063167805db146102b15780631e8e2cfe146103b35780631f00ca74146104615780632195995c1461059f575b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101c157fe5b005b3480156101cf57600080fd5b50d380156101dc57600080fd5b50d280156101e957600080fd5b5061022a6004803603606081101561020057600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061170f565b6040518082815260200191505060405180910390f35b34801561024c57600080fd5b50d3801561025957600080fd5b50d2801561026657600080fd5b5061026f611725565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035c600480360360808110156102c757600080fd5b8101908080359060200190929190803590602001906401000000008111156102ee57600080fd5b82018360208201111561030057600080fd5b8035906020019184602083028401116401000000008311171561032257600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061174b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561039f578082015181840152602081019050610384565b505050509050019250505060405180910390f35b61043d600480360360c08110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b8b565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561046d57600080fd5b50d3801561047a57600080fd5b50d2801561048757600080fd5b506105486004803603604081101561049e57600080fd5b8101908080359060200190929190803590602001906401000000008111156104c557600080fd5b8201836020820111156104d757600080fd5b803590602001918460208302840111640100000000831117156104f957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611ea2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058b578082015181840152602081019050610570565b505050509050019250505060405180910390f35b3480156105ab57600080fd5b50d380156105b857600080fd5b50d280156105c557600080fd5b5061069e60048036036101608110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611ed8565b604051808381526020018281526020019250505060405180910390f35b3480156106c757600080fd5b50d380156106d457600080fd5b50d280156106e157600080fd5b50610797600480360360a08110156106f857600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561072957600080fd5b82018360208201111561073b57600080fd5b8035906020019184602083028401116401000000008311171561075d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061207a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107da5780820151818401526020810190506107bf565b505050509050019250505060405180910390f35b3480156107fa57600080fd5b50d3801561080757600080fd5b50d2801561081457600080fd5b506108ca600480360360a081101561082b57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561085c57600080fd5b82018360208201111561086e57600080fd5b8035906020019184602083028401116401000000008311171561089057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561090d5780820151818401526020810190506108f2565b505050509050019250505060405180910390f35b34801561092d57600080fd5b50d3801561093a57600080fd5b50d2801561094757600080fd5b50610a00600480360361014081101561095f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612787565b604051808381526020018281526020019250505060405180910390f35b610ac860048036036080811015610a3357600080fd5b810190808035906020019092919080359060200190640100000000811115610a5a57600080fd5b820183602082011115610a6c57600080fd5b80359060200191846020830284011164010000000083111715610a8e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612949565b005b348015610ad657600080fd5b50d38015610ae357600080fd5b50d28015610af057600080fd5b50610ba6600480360360a0811015610b0757600080fd5b81019080803590602001909291908035906020019092919080359060200190640100000000811115610b3857600080fd5b820183602082011115610b4a57600080fd5b80359060200191846020830284011164010000000083111715610b6c57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f06565b005b348015610bb457600080fd5b50d38015610bc157600080fd5b50d28015610bce57600080fd5b50610c59600480360360c0811015610be557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613304565b604051808381526020018281526020019250505060405180910390f35b348015610c8257600080fd5b50d38015610c8f57600080fd5b50d28015610c9c57600080fd5b50610d52600480360360a0811015610cb357600080fd5b81019080803590602001909291908035906020019092919080359060200190640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506134a7565b005b348015610d6057600080fd5b50d38015610d6d57600080fd5b50d28015610d7a57600080fd5b50610dbb60048036036060811015610d9157600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061394e565b6040518082815260200191505060405180910390f35b348015610ddd57600080fd5b50d38015610dea57600080fd5b50d28015610df757600080fd5b50610ead600480360360a0811015610e0e57600080fd5b81019080803590602001909291908035906020019092919080359060200190640100000000811115610e3f57600080fd5b820183602082011115610e5157600080fd5b80359060200191846020830284011164010000000083111715610e7357600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613964565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ef0578082015181840152602081019050610ed5565b505050509050019250505060405180910390f35b348015610f1057600080fd5b50d38015610f1d57600080fd5b50d28015610f2a57600080fd5b50610fe0600480360360a0811015610f4157600080fd5b81019080803590602001909291908035906020019092919080359060200190640100000000811115610f7257600080fd5b820183602082011115610f8457600080fd5b80359060200191846020830284011164010000000083111715610fa657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613ded565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015611023578082015181840152602081019050611008565b505050509050019250505060405180910390f35b6110e26004803603608081101561104d57600080fd5b81019080803590602001909291908035906020019064010000000081111561107457600080fd5b82018360208201111561108657600080fd5b803590602001918460208302840111640100000000831117156110a857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614071565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561112557808201518184015260208101905061110a565b505050509050019250505060405180910390f35b34801561114557600080fd5b50d3801561115257600080fd5b50d2801561115f57600080fd5b506111a06004803603606081101561117657600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506144f3565b6040518082815260200191505060405180910390f35b3480156111c257600080fd5b50d380156111cf57600080fd5b50d280156111dc57600080fd5b50611267600480360360c08110156111f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614509565b6040518082815260200191505060405180910390f35b34801561128957600080fd5b50d3801561129657600080fd5b50d280156112a357600080fd5b5061134e600480360360e08110156112ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061477b565b604051808381526020018281526020019250505060405180910390f35b34801561137757600080fd5b50d3801561138457600080fd5b50d2801561139157600080fd5b5061144a60048036036101408110156113a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050614b3b565b6040518082815260200191505060405180910390f35b34801561146c57600080fd5b50d3801561147957600080fd5b50d2801561148657600080fd5b5061148f614cf4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156114dd57600080fd5b50d380156114ea57600080fd5b50d280156114f757600080fd5b506115b86004803603604081101561150e57600080fd5b81019080803590602001909291908035906020019064010000000081111561153557600080fd5b82018360208201111561154757600080fd5b8035906020019184602083028401116401000000008311171561156957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050614d19565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156115fb5780820151818401526020810190506115e0565b505050509050019250505060405180910390f35b34801561161b57600080fd5b50d3801561162857600080fd5b50d2801561163557600080fd5b506116eb600480360361010081101561164d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614d4f565b60405180848152602001838152602001828152602001935050505060405180910390f35b600061171c848484614f13565b90509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060814281101515156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686866000818110151561180e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536f7873776170526f757465723a20494e56414c49445f50415448000000000081525060200191505060405180910390fd5b6119236000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050615049565b91508682600184510381518110151561193857fe5b906020019060200201511015151561199b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19611a5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898960008181101515611a0d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a60018181101515611a3957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b846000815181101515611a6a57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506040513d6020811015611b2357600080fd5b810190808051906020019092919050505050611b8182878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505086615360565b5095945050505050565b600080600083428110151515611c09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b611c398a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b348c8c615622565b80945081955050506000611c916000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166151c0565b9050611c9f8b338388615a19565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1982866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d6457600080fd5b505af1158015611d78573d6000803e3d6000fd5b505050506040513d6020811015611d8e57600080fd5b81019080805190602001909291905050501515611da757fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611e4257600080fd5b505af1158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b8101908080519060200190929190505050925083341115611e9457611e9333853403615c4a565b5b505096509650969350505050565b6060611ed06000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484615ce0565b905092915050565b6000806000611f096000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f8f6151c0565b9050600087611f18578c611f3a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508173ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff168152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050506120608f8f8f8f8f8f8f61477b565b809450819550505050509b509b9950505050505050505050565b6060814281101515156120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b6121626000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050615049565b91508682600184510381518110151561217757fe5b90602001906020020151101515156121da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b6122aa8686600081811015156121ec57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361228c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a6000818110151561223e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110151561226a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b85600081518110151561229b57fe5b90602001906020020151615a19565b6122f682878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505086615360565b509695505050505050565b60608142811015151561237c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686866001898990500381811015156123c957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536f7873776170526f757465723a20494e56414c49445f50415448000000000081525060200191505060405180910390fd5b6124de6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050615ce0565b9150868260008151811015156124f057fe5b9060200190602002015111151515612553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180616c386025913960400191505060405180910390fd5b61262386866000818110151561256557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16336126056000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a600081811015156125b757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811015156125e357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b85600081518110151561261457fe5b90602001906020020151615a19565b61266f82878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505030615360565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c688360018551038151811015156126bf57fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561271b57600080fd5b505af115801561272f573d6000803e3d6000fd5b505050506040513d602081101561274557600080fd5b81019080805190602001909291905050505061277c8483600185510381518110151561276d57fe5b90602001906020020151615c4a565b509695505050505050565b60008060006127da6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166151c0565b90506000876127e9578c61280b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508173ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff168152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561290a57600080fd5b505af115801561291e573d6000803e3d6000fd5b505050506129308e8e8e8e8e8e613304565b809450819550505050509a509a98505050505050505050565b804281101515156129c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858560008181101515612a0a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612ab2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536f7873776170526f757465723a20494e56414c49445f50415448000000000081525060200191505060405180910390fd5b6000349050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19612b776000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898960008181101515612b2957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a60018181101515612b5557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612bfd57600080fd5b505af1158015612c11573d6000803e3d6000fd5b505050506040513d6020811015612c2757600080fd5b81019080805190602001909291905050505060008686600189899050038181101515612c4f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d0457600080fd5b505afa158015612d18573d6000803e3d6000fd5b505050506040513d6020811015612d2e57600080fd5b81019080805190602001909291905050509050612d8c878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505086615e5f565b87612ea382898960018c8c9050038181101515612da557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612e5a57600080fd5b505afa158015612e6e573d6000803e3d6000fd5b505050506040513d6020811015612e8457600080fd5b810190808051906020019092919050505061632190919063ffffffff16565b10151515612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b5050505050505050565b80428110151515612f7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b613037858560008181101515612f9157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16336130316000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898960008181101515612fe357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110151561300f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b8a615a19565b6000858560018888905003818110151561304d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561310257600080fd5b505afa158015613116573d6000803e3d6000fd5b505050506040513d602081101561312c57600080fd5b8101908080519060200190929190505050905061318a868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505085615e5f565b866132a182888860018b8b90500381811015156131a357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561325857600080fd5b505afa15801561326c573d6000803e3d6000fd5b505050506040513d602081101561328257600080fd5b810190808051906020019092919050505061632190919063ffffffff16565b101515156132fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b5050505050505050565b60008082428110151515613380576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b6133b189600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a308a61477b565b80935081945050506133c48986856163a6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561345557600080fd5b505af1158015613469573d6000803e3d6000fd5b505050506040513d602081101561347f57600080fd5b81019080805190602001909291905050505061349b8583615c4a565b50965096945050505050565b80428110151515613520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858560018888905003818110151561356d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536f7873776170526f757465723a20494e56414c49445f50415448000000000081525060200191505060405180910390fd5b6136cd85856000818110151561362757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16336136c76000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689896000818110151561367957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811015156136a557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b8a615a19565b613718858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505030615e5f565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156137d557600080fd5b505afa1580156137e9573d6000803e3d6000fd5b505050506040513d60208110156137ff57600080fd5b8101908080519060200190929190505050905086811015151561386d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156138fe57600080fd5b505af1158015613912573d6000803e3d6000fd5b505050506040513d602081101561392857600080fd5b8101908080519060200190929190505050506139448482615c4a565b5050505050505050565b600061395b8484846165bf565b90509392505050565b6060814281101515156139df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168686600189899050038181101515613a2c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536f7873776170526f757465723a20494e56414c49445f50415448000000000081525060200191505060405180910390fd5b613b416000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050615049565b915086826001845103815181101515613b5657fe5b9060200190602002015110151515613bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616ca46029913960400191505060405180910390fd5b613c89868660008181101515613bcb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633613c6b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a60008181101515613c1d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b60018181101515613c4957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166151c0565b856000815181101515613c7a57fe5b90602001906020020151615a19565b613cd582878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505030615360565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836001855103815181101515613d2557fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613d8157600080fd5b505af1158015613d95573d6000803e3d6000fd5b505050506040513d6020811015613dab57600080fd5b810190808051906020019092919050505050613de284836001855103815181101515613dd357fe5b90602001906020020151615c4a565b509695505050505050565b606081428110151515613e68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536f7873776170526f757465723a20455850495245440000000000000000000081525060200191505060405180910390fd5b613ed56000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050615ce0565b915086826000815181101515613ee757fe5b9060200190602002015111151515613f4a5