@atlantiswap/lite-periphery
Version:
Peripheral smart contracts for interacting with Atlantiswap Lite
776 lines • 313 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_factory",
"type": "address"
},
{
"internalType": "address",
"name": "_WETH",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "WETH",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountADesired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountBDesired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountAMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountBMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "addLiquidity",
"outputs": [
{
"internalType": "uint256",
"name": "amountA",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountB",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountTokenDesired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountTokenMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETHMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "addLiquidityETH",
"outputs": [
{
"internalType": "uint256",
"name": "amountToken",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETH",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveOut",
"type": "uint256"
}
],
"name": "getAmountIn",
"outputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveOut",
"type": "uint256"
}
],
"name": "getAmountOut",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
}
],
"name": "getAmountsIn",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
}
],
"name": "getAmountsOut",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountA",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveA",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "reserveB",
"type": "uint256"
}
],
"name": "quote",
"outputs": [
{
"internalType": "uint256",
"name": "amountB",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountAMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountBMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "removeLiquidity",
"outputs": [
{
"internalType": "uint256",
"name": "amountA",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountB",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountTokenMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETHMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "removeLiquidityETH",
"outputs": [
{
"internalType": "uint256",
"name": "amountToken",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETH",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountTokenMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETHMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "bool",
"name": "approveMax",
"type": "bool"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "removeLiquidityETHWithPermit",
"outputs": [
{
"internalType": "uint256",
"name": "amountToken",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountETH",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountAMin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountBMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "bool",
"name": "approveMax",
"type": "bool"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "removeLiquidityWithPermit",
"outputs": [
{
"internalType": "uint256",
"name": "amountA",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountB",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapETHForExactTokens",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOutMin",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapExactETHForTokens",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOutMin",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapExactTokensForETH",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOutMin",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapExactTokensForTokens",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountInMax",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapTokensForExactETH",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountInMax",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"name": "swapTokensForExactTokens",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60c060405234801561001057600080fd5b506040516141633803806141638339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61402761013c600039806101655280610b235280610b5e5280610c9b5280610f4852806113a252806115ba528061175752806117ec5280611abb5280611e7152806121a752806121fd528061223152806122b252806124cc528061266652806126fb525080610d775280610e75528061101b528061105452806111ff528061147e528061168a528061182b52806119f15280611b645280611df65280611e1f5280611e4f528061202c52806121db528061259c528061273a528061318d52806131d052806137375280613818528061389852506140276000f3fe6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611014945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561104a565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611188565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611319565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611546565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561197a565b34801561071957600080fd5b50610722611ab9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611add565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611aea565b3480156107f757600080fd5b50610722611df4565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e18945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e45565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611f9d565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561212c565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612458565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611aea565b9093509150610b5c898685612891565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612a58565b50965096945050505050565b6000610c0a848484612b95565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eb96023913960400191505060405180910390fd5b610dd07f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb992505050565b91508682600184510381518110610de357fe5b60200260200101511015610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f396031913960400191505060405180910390fd5b610f0786866000818110610e5257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610eed7f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610ea157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ecb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e09565b85600081518110610efa57fe5b6020026020010151612ef4565b610f46828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506130c4915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610f9257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050506110098483600185510381518110610ffc57fe5b6020026020010151612a58565b509695505050505050565b60606110417f0000000000000000000000000000000000000000000000000000000000000000848461334b565b90505b92915050565b600080600061107a7f00000000000000000000000000000000000000000000000000000000000000008f8f612e09565b9050600087611089578c6110ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b5050505061116e8f8f8f8f8f8f8f611aea565b809450819550505050509b509b9950505050505050505050565b606081428110156111fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b6112587f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb992505050565b9150868260018451038151811061126b57fe5b602002602001015110156112ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f396031913960400191505060405180910390fd5b6112da86866000818110610e5257fe5b611009828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506130c4915050565b6060814281101561138b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106113f057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eb96023913960400191505060405180910390fd5b6114d77f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061334b92505050565b915086826000815181106114e757fe5b60200260200101511115610e42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613fc5602d913960400191505060405180910390fd5b606081428110156115b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106115fc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eb96023913960400191505060405180910390fd5b6116e37f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb992505050565b915086826001845103815181106116f657fe5b60200260200101511015611755576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f396031913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061179e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117d157600080fd5b505af11580156117e5573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118817f00000000000000000000000000000000000000000000000000000000000000008989600081811061185757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ecb57fe5b8460008151811061188e57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156118ff57600080fd5b505af1158015611913573d6000803e3d6000fd5b505050506040513d602081101561192957600080fd5b505161193157fe5b611970828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506130c4915050565b5095945050505050565b606081428110156119ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b611a4a7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061334b92505050565b91508682600081518110611a5a57fe5b602002602001015111156112ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613fc5602d913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a8484846134c3565b6000808242811015611b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b6000611b8a7f00000000000000000000000000000000000000000000000000000000000000008c8c612e09565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d6020811015611c3557600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611ca857600080fd5b505af1158015611cbc573d6000803e3d6000fd5b505050506040513d6040811015611cd257600080fd5b50805160209091015190925090506000611cec8e8e6135a3565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d29578183611d2c565b82825b90975095508a871015611d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613edc602c913960400191505060405180910390fd5b89861015611de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613d8a602c913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110417f00000000000000000000000000000000000000000000000000000000000000008484612cb9565b6000806000611e957f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e09565b9050600087611ea4578c611ec6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b50505050611f888e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561201257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b6120208c8c8c8c8c8c6136e0565b909450925060006120527f00000000000000000000000000000000000000000000000000000000000000008e8e612e09565b90506120608d338388612ef4565b61206c8c338387612ef4565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156120eb57600080fd5b505af11580156120ff573d6000803e3d6000fd5b505050506040513d602081101561211557600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b6121cf8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c6136e0565b909450925060006122217f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e09565b905061222f8b338388612ef4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b505050506040513d602081101561238157600080fd5b505161238957fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050506040513d602081101561243257600080fd5b505192503484101561244a5761244a33853403612a58565b505096509650969350505050565b606081428110156124ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41746c616e7469737761704c697465526f757465723a20455850495245440000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061250e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eb96023913960400191505060405180910390fd5b6125f57f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061334b92505050565b9150348260008151811061260557fe5b60200260200101511115612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613fc5602d913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106126ad57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127667f00000000000000000000000000000000000000000000000000000000000000008989600081811061185757fe5b8460008151811061277357fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156127e457600080fd5b505af11580156127f8573d6000803e3d6000fd5b505050506040513d602081101561280e57600080fd5b505161281657fe5b612855828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506130c4915050565b8160008151811061286257fe5b602002602001015134111561197057611970338360008151811061288257fe5b60200260200101513403612a58565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061296757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161292a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146129c9576040519150601f19603f3d011682016040523d82523d6000602084013e6129ce565b606091505b50915091508180156129fc5750805115806129fc57508080602001905160208110156129f957600080fd5b50515b612a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f98602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612acf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a92565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b31576040519150601f19603f3d011682016040523d82523d6000602084013e612b36565b606091505b5050905080612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e366034913960400191505060405180910390fd5b505050565b6000808411612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f086031913960400191505060405180910390fd5b600083118015612bff5750600082115b612c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f6a602e913960400191505060405180910390fd5b6000612c68856103e563ffffffff6139e116565b90506000612c7c828563ffffffff6139e116565b90506000612ca283612c96886103e863ffffffff6139e116565b9063ffffffff613a6716565b9050808281612cad57fe5b04979650505050505050565b6060600282511015612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613e956024913960400191505060405180910390fd5b815167ffffffffffffffff81118015612d2e57600080fd5b50604051908082528060200260200182016040528015612d58578160200160208202803683370190505b5090508281600081518110612d6957fe5b60200260200101818152505060005b6001835103811015612e0157600080612dbb87868581518110612d9757fe5b6020026020010151878660010181518110612dae57fe5b6020026020010151613ad9565b91509150612ddd848481518110612dce57fe5b60200260200101518383612b95565b848460010181518110612dec57fe5b60209081029190910101525050600101612d78565b509392505050565b6000806000612e1885856135a3565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f443b809cf6503337cb9cfa139d0f9e5e47fec8bac51e4fd01edd3ea6f2de2564609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b60208310612fd257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f95565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613034576040519150601f19603f3d011682016040523d82523d6000602084013e613039565b606091505b5091509150818015613067575080511580613067575080806020019051602081101561306457600080fd5b50515b6130bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e056031913960400191505060405180910390fd5b505050505050565b60005b6001835103811015613345576000808483815181106130e257fe5b60200260200101518584600101815181106130f957fe5b602002602001015191509150600061311183836135a3565b509050600087856001018151811061312557fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461316d57826000613171565b6000835b91509150600060028a5103881061318857886131c9565b6131c97f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106131bc57fe5b6020026020010151612e09565b90506131f67f00000000000000000000000000000000000000000000000000000000000000008888612e09565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613240576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156132cb5781810151838201526020016132b3565b50505050905090810190601f1680156132f85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561331a57600080fd5b505af115801561332e573d6000803e3d6000fd5b5050600190990198506130c7975050505050505050565b50505050565b60606002825110156133a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613e956024913960400191505060405180910390fd5b815167ffffffffffffffff811180156133c057600080fd5b506040519080825280602002602001820160405280156133ea578160200160208202803683370190505b50905082816001835103815181106133fe57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e015760008061345e8786600186038151811061344a57fe5b6020026020010151878681518110612dae57fe5b9150915061348084848151811061347157fe5b60200260200101518383613bc1565b84600185038151811061348f57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161342e565b600080841161351d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613db6602b913960400191505060405180910390fd5b60008311801561352d5750600082115b613582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f6a602e913960400191505060405180910390fd5b82613593858463ffffffff6139e116565b8161359a57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561362b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613e6a602b913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610613665578284613668565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff82166136d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613de16024913960400191505060405180910390fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561378057600080fd5b505afa158015613794573d6000803e3d6000fd5b505050506040513d60208110156137aa57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561389057604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561386357600080fd5b505af1158015613877573d6000803e3d6000fd5b505050506040513d602081101561388d57600080fd5b50505b6000806138be7f00000000000000000000000000000000000000000000000000000000000000008b8b613ad9565b915091508160001480156138d0575080155b156138e0578793508692506139d4565b60006138ed8984846134c3565b905087811161395a578581101561394f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613d8a602c913960400191505060405180910390fd5b8894509250826139d2565b60006139678984866134c3565b90508981111561397357fe5b878110156139cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613edc602c913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806139fc575050808202828282816139f957fe5b04145b61104457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561104457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613ae885856135a3565b509050600080613af9888888612e09565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613b3e57600080fd5b505afa158015613b52573d6000803e3d6000fd5b505050506040513d6060811015613b6857600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613baf578082613bb2565b81815b90999098509650505050505050565b6000808411613c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613d586032913960400191505060405180910390fd5b600083118015613c2b5750600082115b613c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f6a602e913960400191505060405180910390fd5b6000613ca46103e8613c98868863ffffffff6139e116565b9063ffffffff6139e116565b90506000613cbe6103e5613c98868963ffffffff613ce516565b9050613cdb6001828481613cce57fe5b049063ffffffff613a6716565b9695505050505050565b8082038281111561104457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe41746c616e7469737761704c6974654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441746c616e7469737761704c697465526f757465723a20494e53554646494349454e545f425f414d4f554e5441746c616e7469737761704c6974654c6962726172793a20494e53554646494349454e545f414d4f554e5441746c616e7469737761704c6974654c6962726172793a205a45524f5f414444524553535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c656441746c616e7469737761704c6974654c6962726172793a204944454e544943414c5f41444452455353455341746c616e7469737761704c6974654c6962726172793a20494e56414c49445f5041544841746c616e7469737761704c697465526f757465723a20494e56414c49445f5041544841746c616e7469737761704c697465526f757465723a20494e53554646494349454e545f415f414d4f554e5441746c616e7469737761704c6974654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5441746c616e7469737761704c