ocean-subgraph/abis/BPool.json

1757 lines
132 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "BPool",
"sourceName": "contracts/pools/balancer/BPool.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "src",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "bptAmount",
"type": "uint256"
}
],
"name": "LOG_BPT",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "bptAmount",
"type": "uint256"
}
],
"name": "LOG_BPT_SS",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes4",
"name": "sig",
"type": "bytes4"
},
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "LOG_CALL",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "LOG_EXIT",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "LOG_JOIN",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "baseTokenAmountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "baseTokenWeight",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "datatokenAmountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "datatokenWeight",
"type": "uint256"
}
],
"name": "LOG_SETUP",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "LOG_SWAP",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newMarketCollector",
"type": "address"
}
],
"name": "MarketCollectorChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "MarketFees",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "OPCWallet",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "OPCFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "marketAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PublishMarketFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "swapFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenFees",
"type": "address"
}
],
"name": "SWAP_FEES",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SwapFeeChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "src",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "BONE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BPOW_PRECISION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXIT_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INIT_POOL_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_BOUND_TOKENS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_BPOW_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_IN_RATIO",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_OUT_RATIO",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_TOTAL_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BALANCE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BOUND_TOKENS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BPOW_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_opcCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_publishMarketCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_swapPublishMarketFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "src",
"type": "address"
},
{
"internalType": "address",
"name": "dst",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "whom",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
}
],
"name": "calcPoolInSingleOut",
"outputs": [
{
"internalType": "uint256",
"name": "poolAmountIn",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
}
],
"name": "calcPoolOutSingleIn",
"outputs": [
{
"internalType": "uint256",
"name": "poolAmountOut",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "uint256",
"name": "poolAmountOut",
"type": "uint256"
}
],
"name": "calcSingleInPoolOut",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "poolAmountIn",
"type": "uint256"
}
],
"name": "calcSingleOutPoolIn",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "collectOPC",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "communityFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "decreaseApproval",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolAmountIn",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "minAmountsOut",
"type": "uint256[]"
}
],
"name": "exitPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxPoolAmountIn",
"type": "uint256"
}
],
"name": "exitswapExternAmountOut",
"outputs": [
{
"internalType": "uint256",
"name": "poolAmountIn",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "poolAmountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minAmountOut",
"type": "uint256"
}
],
"name": "exitswapPoolAmountIn",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_swapMarketFee",
"type": "uint256"
}
],
"name": "getAmountInExactOut",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_swapMarketFee",
"type": "uint256"
}
],
"name": "getAmountOutExactIn",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBaseTokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getController",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentMarketFees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentOPCFees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentTokens",
"outputs": [
{
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDatatokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getDenormalizedWeight",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getFinalTokens",
"outputs": [
{
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getId",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getMarketFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getNormalizedWeight",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNumTokens",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOPCFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "_swapMarketFee",
"type": "uint256"
}
],
"name": "getSpotPrice",
"outputs": [
{
"internalType": "uint256",
"name": "spotPrice",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getSwapFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalDenormalizedWeight",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "increaseApproval",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "controller",
"type": "address"
},
{
"internalType": "address",
"name": "factory",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "swapFees",
"type": "uint256[]"
},
{
"internalType": "bool",
"name": "publicSwap",
"type": "bool"
},
{
"internalType": "bool",
"name": "finalized",
"type": "bool"
},
{
"internalType": "address[2]",
"name": "tokens",
"type": "address[2]"
},
{
"internalType": "address[2]",
"name": "feeCollectors",
"type": "address[2]"
}
],
"name": "initialize",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "t",
"type": "address"
}
],
"name": "isBound",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isFinalized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isInitialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isPublicSwap",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolAmountOut",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "maxAmountsIn",
"type": "uint256[]"
}
],
"name": "joinPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minPoolAmountOut",
"type": "uint256"
}
],
"name": "joinswapExternAmountIn",
"outputs": [
{
"internalType": "uint256",
"name": "poolAmountOut",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "uint256",
"name": "poolAmountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmountIn",
"type": "uint256"
}
],
"name": "joinswapPoolAmountOut",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "publishMarketFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "swapFee",
"type": "uint256"
}
],
"name": "setSwapFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "datatokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "datatokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "datatokenWeight",
"type": "uint256"
},
{
"internalType": "address",
"name": "baseTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "baseTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseTokenWeight",
"type": "uint256"
}
],
"name": "setup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[3]",
"name": "tokenInOutMarket",
"type": "address[3]"
},
{
"internalType": "uint256[4]",
"name": "amountsInOutMaxFee",
"type": "uint256[4]"
}
],
"name": "swapExactAmountIn",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "spotPriceAfter",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[3]",
"name": "tokenInOutMarket",
"type": "address[3]"
},
{
"internalType": "uint256[4]",
"name": "amountsInOutMaxFee",
"type": "uint256[4]"
}
],
"name": "swapExactAmountOut",
"outputs": [
{
"internalType": "uint256",
"name": "tokenAmountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "spotPriceAfter",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "src",
"type": "address"
},
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newCollector",
"type": "address"
}
],
"name": "updateMarketFeeCollector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b615eb880620001826000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c806380ca730811610236578063bf7db2361161013b578063cd2ed8fb116100c3578063ec09302111610087578063ec093021146108c7578063f1b8a9b7146108cf578063f8b2cb4f146108e2578063fde924f7146108f5578063ff9b18501461090757600080fd5b8063cd2ed8fb1461086b578063d4cadf6814610873578063d73dd6231461087b578063dd62ed3e1461088e578063e4a28a52146104a957600080fd5b8063c44a42831161010a578063c44a42831461082d578063c6580d1214610835578063c98a59cf1461083d578063caa0114814610850578063cc77828d1461086357600080fd5b8063bf7db236146107dc578063c070a6d8146107f2578063c36596a6146104d6578063c421a3fc1461080557600080fd5b8063a9059cbb116101be578063b7b800a41161018d578063b7b800a4146107a7578063ba019dab146107af578063bc063e1a146107b7578063bc694ea2146107bf578063be3bbd2e146107c757600080fd5b8063a9059cbb14610779578063ab77a2de1461078c578063b02f0b7314610794578063b0e0d136146107a757600080fd5b80639381cd2b116102055780639381cd2b1461073b578063948d8ce61461074357806395d89b4114610756578063992e2a921461075e578063a3b3a16d1461076657600080fd5b806380ca730814610711578063867378c5146107195780638d4e408314610721578063936c34771461073357600080fd5b80633950b3fd1161033c5780635e123add116102c4578063703305181161029357806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637a284be4146106e85780637c5918b3146106f157600080fd5b80635e123add14610663578063638c9e951461066b578063661884631461067e5780636d06dfa01461069157600080fd5b80634df947d01161030b5780634df947d0146106125780634f69c0d4146106235780635c3f1532146106365780635d1ca631146106495780635db342771461065057600080fd5b80633950b3fd146105c8578063430ed5d0146105db578063458c3fb5146105ee57806346ab38f1146105ff57600080fd5b806323b872dd116103bf578063300621921161038e578063300621921461053f5780633018205f1461055f578063313ce5671461058a57806334e19907146105a3578063392e53cd146105b657600080fd5b806323b872dd146104e557806329b88a6a146104f85780632eebd6ae146105005780632f37b6241461051357600080fd5b806309a3bbe41161040657806309a3bbe4146104a957806309ef3f5b146104b157806318160ddd146104c6578063189d00ca146104ce578063218b5382146104d657600080fd5b806302c967481461043857806306fdde031461045e578063079492d414610473578063095ea7b314610486575b600080fd5b61044b6104463660046156e7565b61091a565b6040519081526020015b60405180910390f35b610466610d7b565b6040516104559190615746565b61044b610481366004615779565b610e0d565b6104996104943660046157b5565b610e97565b6040519015158152602001610455565b61044b610ef2565b6104c46104bf3660046157df565b610f08565b005b60095461044b565b61044b611144565b61044b670de0b6b3a764000081565b6104996104f3366004615779565b61115b565b61044b6112af565b61044b61050e366004615837565b611329565b610499610521366004615879565b6001600160a01b031660009081526010602052604090205460ff1690565b61044b61054d366004615879565b60056020526000908152604090205481565b600c546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610455565b600c5460ff165b60405160ff9091168152602001610455565b6104c46105b1366004615894565b61138a565b601254600160a01b900460ff16610499565b61044b6105d63660046157b5565b6114c3565b61044b6105e93660046157b5565b61152b565b6003546001600160a01b0316610572565b61044b61060d3660046156e7565b61158b565b6004546001600160a01b0316610572565b6104c46106313660046158f2565b611991565b600e54610572906001600160a01b031681565b6001610591565b61044b61065e3660046156e7565b611bb8565b60005461044b565b600d54610572906001600160a01b031681565b61049961068c3660046157b5565b611f79565b61044b61069f3660046156e7565b61204f565b6104c46106b2366004615879565b61242b565b61044b6106c5366004615879565b6001600160a01b031660009081526007602052604090205490565b61044b612528565b61044b60005481565b61044b6106ff366004615879565b60066020526000908152604090205481565b6104c461253d565b61044b6126cf565b600e54600160a01b900460ff16610499565b61044b6126e6565b61044b612718565b61044b610751366004615879565b61272b565b610466612782565b61044b612791565b61044b6107743660046157b5565b6127af565b6104996107873660046157b5565b61280f565b6104c4612825565b6104c46107a23660046158f2565b612993565b61044b600281565b61044b600181565b61044b612bef565b61044b612c02565b6107cf612c21565b6040516104559190615982565b6107e4612cd4565b604051610455929190615995565b610499610800366004615a0b565b612e44565b610818610813366004615ab8565b6130b4565b60408051928352602083019190915201610455565b6107e461355b565b61044b600081565b61081861084b366004615ab8565b6136c0565b61044b61085e366004615837565b613b04565b6107cf613b5a565b600f5461044b565b60015461044b565b6104996108893660046157b5565b613b85565b61044b61089c366004615afa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61044b613bf8565b61044b6108dd366004615879565b613c0b565b61044b6108f0366004615879565b613c69565b600c54600160b01b900460ff16610499565b61044b6109153660046157b5565b613cbc565b600c54600090610100900460ff161561094e5760405162461bcd60e51b815260040161094590615b2d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109865760405162461bcd60e51b815260040161094590615b52565b61098f84613d1c565b6001600160a01b03841660009081526010602052604090206003908101546109d3916109c390670de0b6b3a7640000615ba9565b6109ce906001615bbd565b613d77565b8311156109f25760405162461bcd60e51b815260040161094590615bd5565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a279392919088613e5c565b915081610a465760405162461bcd60e51b815260040161094590615c00565b82821115610a665760405162461bcd60e51b815260040161094590615c29565b610a74816003015485613f20565b60038201556000610a858382613d77565b604080518781524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051838152600080516020615e238339815191529060200160405180910390a1610ae63384613f7d565b610af8610af38483613f20565b613f87565b600254610b0e906001600160a01b031682613f90565b610b19863387613f9a565b6003546000906001600160a01b0388811691161415610b4457506004546001600160a01b0316610b52565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b8a9291169085908990600401615c4f565b602060405180830381865afa158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb9190615c73565b15610d6657600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c07939291908a613fb3565b9050610c17826003015482613f20565b6003830155610c27866000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c54610c84906201000090046001600160a01b031687613f7d565b610c91610af38786613f20565b600254610ca7906001600160a01b031685613f90565b600c54610cc59084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b50505050600080516020615e0383398151915286604051610d5b91815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d8a90615c90565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690615c90565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e385760405162461bcd60e51b815260040161094590615b2d565b610e4184613d1c565b610e4a83613d1c565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e8b9391908861407d565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e6383398151915290610ee09086815260200190565b60405180910390a35060015b92915050565b610f05670de0b6b3a76400006032615ccb565b81565b600c54610100900460ff1615610f305760405162461bcd60e51b815260040161094590615b2d565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f995760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b6044820152606401610945565b6003546001600160a01b03878116911614610ff65760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f414444524553530000006044820152606401610945565b6004546001600160a01b038481169116146110535760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f62617365546f6b656e5f414444524553530000006044820152606401610945565b61105e868686614109565b604080518681524260208201526001600160a01b038816913391600080516020615e43833981519152910160405180910390a361109c838383614109565b604080518381524260208201526001600160a01b038516913391600080516020615e43833981519152910160405180910390a36110d76142f3565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610f056402540be400670de0b6b3a7640000615ba9565b6000336001600160a01b038516148061119757506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111db5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b6044820152606401610945565b6111e6848484614352565b336001600160a01b0385161480159061122457506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112a5576001600160a01b03841660009081526008602090815260408083203384529091529020546112579083613f20565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e63833981519152910160405180910390a35b5060019392505050565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190615cea565b905090565b600061133485613d1c565b61133d84613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614464565b979650505050505050565b600c546201000090046001600160a01b031633146113df5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6113f4620f4240670de0b6b3a7640000615ba9565b8110156114315760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b611444600a670de0b6b3a7640000615ba9565b8111156114815760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614516565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613fb3565b600c54600090610100900460ff16156115b65760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166115ee5760405162461bcd60e51b815260040161094590615b52565b6115f784613d1c565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461162c9392919088613fb3565b91508282101561164e5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b0385166000908152601060205260409020600390810154611682916109c390670de0b6b3a7640000615ba9565b8211156116a15760405162461bcd60e51b815260040161094590615bd5565b6116af816003015483613f20565b600382015560006116c08582613d77565b604080518581524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051858152600080516020615e238339815191529060200160405180910390a16117213386613f7d565b61172e610af38683613f20565b600254611744906001600160a01b031682613f90565b61174f863385613f9a565b6003546000906001600160a01b038881169116141561177a57506004546001600160a01b0316611788565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117c09291169085908b90600401615c4f565b602060405180830381865afa1580156117dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118019190615c73565b15610d6657600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461183d939291908c613fb3565b905061184d826003015482613f20565b600383015561185d886000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c546118ba906201000090046001600160a01b031689613f7d565b6118c7610af38986613f20565b6002546118dd906001600160a01b031685613f90565b600c546118fb9084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b50505050600080516020615e0383398151915288604051610d5b91815260200190565b600c54610100900460ff16156119b95760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166119f15760405162461bcd60e51b815260040161094590615b52565b60006119fc60095490565b90506000611a0a858361459a565b905080611a295760405162461bcd60e51b815260040161094590615c00565b60005b600f54811015611b71576000600f8281548110611a4b57611a4b615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611a808583613d77565b905080611a9f5760405162461bcd60e51b815260040161094590615c00565b878785818110611ab157611ab1615d2a565b90506020020135811115611ad75760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038316600090815260106020526040902060030154611afd90826146b2565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e4383398151915290611b489085904290918252602082015260400190565b60405180910390a3611b5b833383614704565b5050508080611b6990615d40565b915050611a2c565b50611b7b85614719565b611b853386613f90565b604051858152600080516020615e238339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611be35760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff16611c1b5760405162461bcd60e51b815260040161094590615b52565b611c2484613d1c565b6001600160a01b038416600090815260106020526040902060030154611c57906109ce6002670de0b6b3a7640000615ba9565b831115611c765760405162461bcd60e51b815260040161094590615d5b565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611cab9392919088614516565b915082821015611ccd5760405162461bcd60e51b815260040161094590615d03565b611cdb8160030154856146b2565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051828152600080516020615e238339815191529060200160405180910390a1611d3d82614719565b611d473383613f90565b611d52853386614704565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611d8c939092909189614722565b6003549091506001600160a01b0389811691161415611db8576004546001600160a01b03169150611dc7565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611dff9291169086908690600401615c4f565b602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611e7d9291169086908690600401615c4f565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b50505050611ebd8360030154826146b2565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e43833981519152910160405180910390a3604051858152600080516020615e038339815191529060200160405180910390a1611f2985614719565b600c54611f45906201000090046001600160a01b031686613f90565b600c54611f639083906201000090046001600160a01b031683614704565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611fce573360009081526008602090815260408083206001600160a01b0388168452909152812055611ffd565b611fd88184613f20565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e63833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff161561207a5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166120b25760405162461bcd60e51b815260040161094590615b52565b6120bb84613d1c565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546120f09392919088614722565b91508161210f5760405162461bcd60e51b815260040161094590615c00565b8282111561212f5760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038516600090815260106020526040902060030154612162906109ce6002670de0b6b3a7640000615ba9565b8211156121815760405162461bcd60e51b815260040161094590615d5b565b61218f8160030154836146b2565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051848152600080516020615e238339815191529060200160405180910390a16121f184614719565b6121fb3385613f90565b612206853384614704565b600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461223d939291908a614722565b6003549091506000906001600160a01b038981169116141561226b57506004546001600160a01b0316612279565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122b19291169085908790600401615c4f565b602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f29190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261232f9291169085908790600401615c4f565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b5050505061236f8360030154836146b2565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e43833981519152910160405180910390a36123ba87614719565b600c546123d6906201000090046001600160a01b031688613f90565b600c546123f49082906201000090046001600160a01b031684614704565b604051878152600080516020615e038339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b600d546001600160a01b0316331461247d5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b6044820152606401610945565b6001600160a01b0381166124d35760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f7220616464726573730000006044820152606401610945565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b891016114b8565b610f05620f4240670de0b6b3a7640000615ba9565b6000612547612c21565b905060005b81518110156126cb5760006006600084848151811061256d5761256d615d2a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490506000600660008585815181106125b0576125b0615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612628600d60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b60200260200101516001600160a01b03166147bc9092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061267257612672615d2a565b6020026020010151846040516126b094939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126c381615d40565b91505061254c565b5050565b610f0564e8d4a51000670de0b6b3a7640000615ba9565b600c54600090610100900460ff16156127115760405162461bcd60e51b815260040161094590615b2d565b5060115490565b610f05670de0b6b3a76400006064615ccb565b600c54600090610100900460ff16156127565760405162461bcd60e51b815260040161094590615b2d565b61275f82613d1c565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d8a90615c90565b6127a46003670de0b6b3a7640000615ba9565b610f05906001615bbd565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613e5c565b600061281c338484614352565b50600192915050565b600061282f612c21565b905060005b81518110156126cb5760006005600084848151811061285557612855615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006005600085858151811061289857612898615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055506128f0600e60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b7fed2b0288692cfc6d01c94a67a53721792f59c3d1388221f8aa4f66c8d2808dde33600e60009054906101000a90046001600160a01b031685858151811061293a5761293a615d2a565b60200260200101518460405161297894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a1508061298b81615d40565b915050612834565b600c54610100900460ff16156129bb5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166129f35760405162461bcd60e51b815260040161094590615b52565b60006129fe60095490565b90506000612a0d856000613d77565b90506000612a1b8683613f20565b90506000612a29828561459a565b905080612a485760405162461bcd60e51b815260040161094590615c00565b612a523388613f7d565b600254612a68906001600160a01b031684613f90565b612a7182613f87565b60005b600f54811015612bb9576000600f8281548110612a9357612a93615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612ac88583613d77565b905080612ae75760405162461bcd60e51b815260040161094590615c00565b898985818110612af957612af9615d2a565b90506020020135811015612b1f5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b038316600090815260106020526040902060030154612b459082613f20565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615de383398151915290612b909085904290918252602082015260400190565b60405180910390a3612ba3833383613f9a565b5050508080612bb190615d40565b915050612a74565b50604051878152600080516020615e238339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610f05600a670de0b6b3a7640000615ba9565b6001612c17670de0b6b3a76400006002615ccb565b610f059190615d85565b600c54606090610100900460ff1615612c4c5760405162461bcd60e51b815260040161094590615b2d565b600e54600160a01b900460ff16612c755760405162461bcd60e51b815260040161094590615b52565b600f805480602002602001604051908101604052809291908181526020018280548015610e0357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cad575050505050905090565b6060806000612ce1612c21565b90506000815167ffffffffffffffff811115612cff57612cff615d9c565b604051908082528060200260200182016040528015612d28578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612d4757612d47615d9c565b604051908082528060200260200182016040528015612d70578160200160208202803683370190505b50905060005b8351811015612e3957838181518110612d9157612d91615d2a565b6020026020010151838281518110612dab57612dab615d2a565b60200260200101906001600160a01b031690816001600160a01b03168152505060056000858381518110612de157612de1615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110612e1c57612e1c615d2a565b602090810291909101015280612e3181615d40565b915050612d76565b509094909350915050565b601254600090600160a01b900460ff1615612ea15760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a45440000000000000000006044820152606401610945565b6001600160a01b038916612ef75760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f4144445245535300006044820152606401610945565b6001600160a01b038816612f4d5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f4144445245535300000000006044820152606401610945565b612f62620f4240670de0b6b3a7640000615ba9565b87876000818110612f7557612f75615d2a565b905060200201351015612fb85760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b612fcb600a670de0b6b3a7640000615ba9565b87876000818110612fde57612fde615d2a565b9050602002013511156130215760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b6130a78989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061481f915050565b9998505050505050505050565b600c546000908190610100900460ff16156130e15760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166131195760405162461bcd60e51b815260040161094590615b52565b6131388460005b6020020160208101906131339190615879565b613d1c565b613143846001613120565b60006010816131556020880188615879565b6001600160a01b0316815260208101919091526040016000908120915060108187600160200201602081019061318b9190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506131ca82600301546002670de0b6b3a76400006109ce9190615ba9565b853511156131ea5760405162461bcd60e51b815260040161094590615d5b565b600061322083600301548460020154846003015485600201548a60036004811061321657613216615d2a565b602002013561407d565b9050604086013581111561326c5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916132c39082908a35906132b9908d018d615879565b60608c013561495d565b909750915060208801358710156132ec5760405162461bcd60e51b815260040161094590615d03565b6132fa8560030154836146b2565b8560030181905550613310846003015488613f20565b846003018190555061334285600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156133645760405162461bcd60e51b815260040161094590615c00565b60408801358611156133aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6133b588358861459a565b8311156133d45760405162461bcd60e51b815260040161094590615c00565b6133e460408a0160208b01615879565b6001600160a01b03166133fa60208b018b615879565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461346261345a60208b018b615879565b338a35614704565b600061348c8935613487816109ce670de0b6b3a76400008e60035b6020020135613f20565b613f20565b9050606089013515613527576134d08a60025b6020020160208101906134b29190615879565b826134c060208e018e615879565b6001600160a01b031691906147bc565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61350160608c0160408d01615879565b61350e60208d018d615879565b8360405161351e93929190615c4f565b60405180910390a15b61354161353a60408c0160208d01615879565b338a613f9a565b505050505050600c805461ff001916905590939092509050565b6060806000613568612c21565b90506000815167ffffffffffffffff81111561358657613586615d9c565b6040519080825280602002602001820160405280156135af578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156135ce576135ce615d9c565b6040519080825280602002602001820160405280156135f7578160200160208202803683370190505b50905060005b8351811015612e395783818151811061361857613618615d2a565b602002602001015183828151811061363257613632615d2a565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061366857613668615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106136a3576136a3615d2a565b6020908102919091010152806136b881615d40565b9150506135fd565b600c546000908190610100900460ff16156136ed5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166137255760405162461bcd60e51b815260040161094590615b52565b613730846000613120565b61373b846001613120565b600060108161374d6020880188615879565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906137839190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506137c281600301546003670de0b6b3a76400006109c39190615ba9565b602086013511156137e55760405162461bcd60e51b815260040161094590615bd5565b600061381183600301548460020154846003015485600201548a60036004811061321657613216615d2a565b9050604086013581111561385d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916138b69082908a810135906138ac908d018d615879565b60608c0135614b75565b909750915087358711156138dc5760405162461bcd60e51b815260040161094590615c29565b6138ea8560030154836146b2565b6003808701919091558401546139029089600161347d565b846003018190555061393485600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156139565760405162461bcd60e51b815260040161094590615c00565b604088013586111561399c5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6139aa8760208a013561459a565b8311156139c95760405162461bcd60e51b815260040161094590615c00565b6139d960408a0160208b01615879565b6001600160a01b03166139ef60208b018b615879565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a4613a5a613a5360208b018b615879565b3389614704565b6000613a7888613487816109ce670de0b6b3a76400008e600361347d565b9050606089013515613ae657613a8f8a600261349f565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae613ac060608c0160408d01615879565b613acd60208d018d615879565b83604051613add93929190615c4f565b60405180910390a15b613541613af960408c0160208d01615879565b3360208c0135613f9a565b6000613b0f85613d1c565b613b1884613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614d99565b600c54606090610100900460ff1615612c755760405162461bcd60e51b815260040161094590615b2d565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613bb390836146b2565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e638339815191529101610ee0565b610f056002670de0b6b3a7640000615ba9565b600c54600090610100900460ff1615613c365760405162461bcd60e51b815260040161094590615b2d565b613c3f82613d1c565b6001600160a01b038216600090815260106020526040902060020154601154610e9090829061459a565b600c54600090610100900460ff1615613c945760405162461bcd60e51b815260040161094590615b2d565b613c9d82613d1c565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614722565b6001600160a01b03811660009081526010602052604090205460ff16613d745760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b6044820152606401610945565b50565b600080613d848385615ccb565b9050831580613d9b575082613d998583615ba9565b145b613dda5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613def6002670de0b6b3a7640000615ba9565b613df99083615bbd565b905081811015613e3e5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613e52670de0b6b3a764000083615ba9565b9695505050505050565b600080613e69868561459a565b90506000613e7f670de0b6b3a764000083613f20565b90506000613e8f82600154613d77565b90506000613eae86613ea9670de0b6b3a764000085613f20565b61459a565b90506000613ebc8b83613f20565b90506000613eca828d61459a565b90506000613ed88288614e4d565b90506000613ee6828d613d77565b90506000613ef48d83613f20565b9050613f0d81613ea9670de0b6b3a76400006000613f20565b9f9e505050505050505050505050505050565b6000806000613f2f8585614f6e565b915091508015613f755760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b6044820152606401610945565b509392505050565b6126cb8282614fa5565b613d7481614fb0565b6126cb828261507c565b613fae6001600160a01b03841683836147bc565b505050565b600080613fc0868561459a565b90506000613fdb846109ce670de0b6b3a76400006000613f20565b90506000613fe98783613f20565b90506000613ff7828961459a565b9050600061401682614011670de0b6b3a76400008861459a565b614e4d565b90506000614024828d613d77565b905060006140328d83613f20565b9050600061405361404b670de0b6b3a76400008a613f20565b600154613d77565b905061406b826109ce670de0b6b3a764000084613f20565b9e9d5050505050505050505050505050565b60008061408a878761459a565b90506000614098868661459a565b905060006140a6838361459a565b905060006140ef670de0b6b3a7640000613ea9670de0b6b3a7640000896000546140ce6112af565b6001546140db9190615bbd565b6140e59190615bbd565b6134879190615bbd565b90506140fb8282613d77565b9a9950505050505050505050565b600c546201000090046001600160a01b0316331461415e5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6001600160a01b03831660009081526010602052604090205460ff16156141b65760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b6044820152606401610945565b600e54600160a01b900460ff16156142035760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b6044820152606401610945565b600f546002116142465760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b6044820152606401610945565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613fae838383615087565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561433461432f670de0b6b3a76400006064615ccb565b614719565b6143503361434b670de0b6b3a76400006064615ccb565b613f90565b565b6001600160a01b0383166000908152600760205260409020548111156143b15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b6001600160a01b0383166000908152600760205260409020546143d49082613f20565b6001600160a01b03808516600090815260076020526040808220939093559084168152205461440390826146b2565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144579085815260200190565b60405180910390a3505050565b600080614471878661459a565b905060008054846144806112af565b60015461448d9190615bbd565b6144979190615bbd565b6144a19190615bbd565b905060006144b7670de0b6b3a764000083613f20565b90506144c38682613d77565b905060006144d58b613ea98d856146b2565b905060006144e38286614e4d565b905060006144f9670de0b6b3a764000083613f20565b90506145058b82613d77565b9d9c50505050505050505050505050565b600080614523868561459a565b9050600061453c61404b670de0b6b3a764000084613f20565b90506000614556856109ce670de0b6b3a764000085613f20565b905060006145648a836146b2565b90506000614572828c61459a565b905060006145808287614e4d565b9050600061458e828c613d77565b9050614505818c613f20565b6000816145d85760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b6044820152606401610945565b60006145ec670de0b6b3a764000085615ccb565b905083158061460b5750670de0b6b3a76400006146098583615ba9565b145b61464a5760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000614657600285615ba9565b6146619083615bbd565b9050818110156146a65760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000613e528583615ba9565b6000806146bf8385615bbd565b905083811015610e905760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b6044820152606401610945565b613fae6001600160a01b0384168330846152d7565b613d74816152fe565b60008061472f868561459a565b9050600061473d86856146b2565b9050600061474b828861459a565b90506000614761670de0b6b3a76400008561459a565b9050600061476f8383614e4d565b9050600061477d828d613d77565b9050600061478b828e613f20565b905060006147a461404b670de0b6b3a76400008a613f20565b905061406b82613ea9670de0b6b3a764000084613f20565b6040516001600160a01b038316602482015260448101829052613fae90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261536d565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061487557614875615d2a565b60200260200101516001819055508560018151811061489657614896615d2a565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061497a87600160200201518860035b602002015161459a565b9050600061499a87613487896109ce670de0b6b3a76400006134876112af565b6001600160a01b0387166000908152600560205260409020549091506149c090826146b2565b60056000886001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a07886134878a6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038816600090815260066020526040902054909150614a2d90826146b2565b6001600160a01b03881660009081526006602052604081209190915580548790614a556112af565b600154614a629190615bbd565b614a6c9190615bbd565b614a769190615bbd565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614ab58a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614af6670de0b6b3a764000083613f20565b9050614b028a82613d77565b8b51909150600090614b1890613ea981856146b2565b90506000614b268288614e4d565b90506000614b3c670de0b6b3a764000083613f20565b9050614b4f8e6002602002015182613d77565b995089614b608e613487898b615bbd565b99509950505050505050505094509492505050565b60008080614b8c8760036020020151886001614970565b90506000614ba1886002602002015188613f20565b90506000614bb689600260200201518361459a565b90506000614bc48285614e4d565b9050614bd881670de0b6b3a7640000613f20565b90506000805488614be76112af565b600154614bf49190615bbd565b614bfe9190615bbd565b614c089190615bbd565b8b51909150614c2d90614c1b9084613d77565b613ea9670de0b6b3a764000084613f20565b96506000614c4d886134878a6109ce670de0b6b3a76400006134876112af565b6001600160a01b038b16600090815260056020526040902054909150614c7390826146b2565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614cba896134878b6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038c16600090815260066020526040902054909150614ce090826146b2565b6001600160a01b038c166000908152600660205260409020558c51614d1d90614d099086613d77565b613ea9670de0b6b3a7640000600154613f20565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d5c8a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614da6858861459a565b90506000614db48786613f20565b90506000614dc2888361459a565b90506000614dd08285614e4d565b9050614de481670de0b6b3a7640000613f20565b90506000805487614df36112af565b600154614e009190615bbd565b614e0a9190615bbd565b614e149190615bbd565b9050614e28670de0b6b3a764000082613f20565b9550614e3d614e378d84613d77565b8761459a565b9c9b505050505050505050505050565b60006001831015614e985760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b6044820152606401610945565b6001614ead670de0b6b3a76400006002615ccb565b614eb79190615d85565b831115614eff5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b6044820152606401610945565b6000614f0a8361543f565b90506000614f188483613f20565b90506000614f2e86614f298561545d565b615471565b905081614f3f579250610eec915050565b6000614f628784614f5d6402540be400670de0b6b3a7640000615ba9565b6154e5565b905061137f8282613d77565b600080828410614f8d57614f828385615d85565b600091509150614f9e565b614f978484615d85565b6001915091505b9250929050565b6126cb823083614352565b306000908152600760205260409020548111156150065760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b306000908152600760205260409020546150209082613f20565b3060009081526007602052604090205560095461503d9082613f20565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126cb308383614352565b670de0b6b3a76400008110156150d05760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b6044820152606401610945565b6150e3670de0b6b3a76400006032615ccb565b8111156151235760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b6044820152606401610945565b61513a64e8d4a51000670de0b6b3a7640000615ba9565b82101561517b5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b6044820152606401610945565b6001600160a01b03831660009081526010602052604090206002015480821115615217576151b46011546151af8484613f20565b6146b2565b6011556151ca670de0b6b3a76400006032615ccb565b60115411156152125760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b6044820152606401610945565b615233565b808210156152335761522f6011546134878385613f20565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561527c5761527785336152728785613f20565b614704565b6152d0565b808410156152d05760006152908286613f20565b9050600061529f826000613d77565b90506152b587336152b08585613f20565b613f9a565b6002546152cd9088906001600160a01b031683613f9a565b50505b5050505050565b6152f8846323b872dd60e01b8585856040516024016147e893929190615c4f565b50505050565b3060009081526007602052604090205461531890826146b2565b3060009081526007602052604090205560095461533590826146b2565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001615071565b60006153c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155d59092919063ffffffff16565b805190915015613fae57808060200190518101906153e09190615c73565b613fae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610945565b6000670de0b6b3a76400006154538361545d565b610eec9190615ccb565b6000610eec670de0b6b3a764000083615ba9565b60008281615480600285615db2565b61549257670de0b6b3a7640000615494565b815b90506154a1600285615ba9565b93505b8315611523576154b48283613d77565b91506154c1600285615db2565b156154d3576154d08183613d77565b90505b6154de600285615ba9565b93506154a4565b60008281806154fc87670de0b6b3a7640000614f6e565b9092509050670de0b6b3a764000080600060015b8884106155c657600061552b670de0b6b3a764000083615ccb565b905060008061554b8a61554685670de0b6b3a7640000613f20565b614f6e565b9150915061555d876109ce848c613d77565b9650615569878461459a565b965086615578575050506155c6565b8715615582579315935b801561558c579315935b84156155a35761559c8688613f20565b95506155b0565b6155ad86886146b2565b95505b50505080806155be90615d40565b915050615510565b50909998505050505050505050565b6060611523848460008585843b61562e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610945565b600080866001600160a01b0316858760405161564a9190615dc6565b60006040518083038185875af1925050503d8060008114615687576040519150601f19603f3d011682016040523d82523d6000602084013e61568c565b606091505b509150915061137f828286606083156156a6575081610e90565b8251156156b65782518084602001fd5b8160405162461bcd60e51b81526004016109459190615746565b80356001600160a01b038116811461277d57600080fd5b6000806000606084860312156156fc57600080fd5b615705846156d0565b95602085013595506040909401359392505050565b60005b8381101561573557818101518382015260200161571d565b838111156152f85750506000910152565b602081526000825180602084015261576581604085016020870161571a565b601f01601f19169190910160400192915050565b60008060006060848603121561578e57600080fd5b615797846156d0565b92506157a5602085016156d0565b9150604084013590509250925092565b600080604083850312156157c857600080fd5b6157d1836156d0565b946020939093013593505050565b60008060008060008060c087890312156157f857600080fd5b615801876156d0565b9550602087013594506040870135935061581d606088016156d0565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561584d57600080fd5b615856856156d0565b9350615864602086016156d0565b93969395505050506040820135916060013590565b60006020828403121561588b57600080fd5b610e90826156d0565b6000602082840312156158a657600080fd5b5035919050565b60008083601f8401126158bf57600080fd5b50813567ffffffffffffffff8111156158d757600080fd5b6020830191508360208260051b8501011115614f9e57600080fd5b60008060006040848603121561590757600080fd5b83359250602084013567ffffffffffffffff81111561592557600080fd5b615931868287016158ad565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159775781516001600160a01b031687529582019590820190600101615952565b509495945050505050565b602081526000610e90602083018461593e565b6040815260006159a8604083018561593e565b82810360208481019190915284518083528582019282019060005b818110156159df578451835293830193918301916001016159c3565b5090979650505050505050565b8015158114613d7457600080fd5b8060408101831015610eec57600080fd5b600080600080600080600080610120898b031215615a2857600080fd5b615a31896156d0565b9750615a3f60208a016156d0565b9650604089013567ffffffffffffffff811115615a5b57600080fd5b615a678b828c016158ad565b9097509550506060890135615a7b816159ec565b93506080890135615a8b816159ec565b9250615a9a8a60a08b016159fa565b9150615aa98a60e08b016159fa565b90509295985092959890939650565b60008060e08385031215615acb57600080fd5b6060830184811115615adc57600080fd5b8392508460e085011115615aef57600080fd5b809150509250929050565b60008060408385031215615b0d57600080fd5b615b16836156d0565b9150615b24602084016156d0565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615bb857615bb8615b7d565b500490565b60008219821115615bd057615bd0615b93565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c8557600080fd5b8151610e90816159ec565b600181811c90821680615ca457607f821691505b60208210811415615cc557634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ce557615ce5615b93565b500290565b600060208284031215615cfc57600080fd5b5051919050565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d5457615d54615b93565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600082821015615d9757615d97615b93565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dc157615dc1615b7d565b500690565b60008251615dd881846020870161571a565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220dd27ead8c9c3c0bb206313d54c68f9281b11dfee1171b5653a1419897a2c772764736f6c634300080a0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104335760003560e01c806380ca730811610236578063bf7db2361161013b578063cd2ed8fb116100c3578063ec09302111610087578063ec093021146108c7578063f1b8a9b7146108cf578063f8b2cb4f146108e2578063fde924f7146108f5578063ff9b18501461090757600080fd5b8063cd2ed8fb1461086b578063d4cadf6814610873578063d73dd6231461087b578063dd62ed3e1461088e578063e4a28a52146104a957600080fd5b8063c44a42831161010a578063c44a42831461082d578063c6580d1214610835578063c98a59cf1461083d578063caa0114814610850578063cc77828d1461086357600080fd5b8063bf7db236146107dc578063c070a6d8146107f2578063c36596a6146104d6578063c421a3fc1461080557600080fd5b8063a9059cbb116101be578063b7b800a41161018d578063b7b800a4146107a7578063ba019dab146107af578063bc063e1a146107b7578063bc694ea2146107bf578063be3bbd2e146107c757600080fd5b8063a9059cbb14610779578063ab77a2de1461078c578063b02f0b7314610794578063b0e0d136146107a757600080fd5b80639381cd2b116102055780639381cd2b1461073b578063948d8ce61461074357806395d89b4114610756578063992e2a921461075e578063a3b3a16d1461076657600080fd5b806380ca730814610711578063867378c5146107195780638d4e408314610721578063936c34771461073357600080fd5b80633950b3fd1161033c5780635e123add116102c4578063703305181161029357806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637a284be4146106e85780637c5918b3146106f157600080fd5b80635e123add14610663578063638c9e951461066b578063661884631461067e5780636d06dfa01461069157600080fd5b80634df947d01161030b5780634df947d0146106125780634f69c0d4146106235780635c3f1532146106365780635d1ca631146106495780635db342771461065057600080fd5b80633950b3fd146105c8578063430ed5d0146105db578063458c3fb5146105ee57806346ab38f1146105ff57600080fd5b806323b872dd116103bf578063300621921161038e578063300621921461053f5780633018205f1461055f578063313ce5671461058a57806334e19907146105a3578063392e53cd146105b657600080fd5b806323b872dd146104e557806329b88a6a146104f85780632eebd6ae146105005780632f37b6241461051357600080fd5b806309a3bbe41161040657806309a3bbe4146104a957806309ef3f5b146104b157806318160ddd146104c6578063189d00ca146104ce578063218b5382146104d657600080fd5b806302c967481461043857806306fdde031461045e578063079492d414610473578063095ea7b314610486575b600080fd5b61044b6104463660046156e7565b61091a565b6040519081526020015b60405180910390f35b610466610d7b565b6040516104559190615746565b61044b610481366004615779565b610e0d565b6104996104943660046157b5565b610e97565b6040519015158152602001610455565b61044b610ef2565b6104c46104bf3660046157df565b610f08565b005b60095461044b565b61044b611144565b61044b670de0b6b3a764000081565b6104996104f3366004615779565b61115b565b61044b6112af565b61044b61050e366004615837565b611329565b610499610521366004615879565b6001600160a01b031660009081526010602052604090205460ff1690565b61044b61054d366004615879565b60056020526000908152604090205481565b600c546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610455565b600c5460ff165b60405160ff9091168152602001610455565b6104c46105b1366004615894565b61138a565b601254600160a01b900460ff16610499565b61044b6105d63660046157b5565b6114c3565b61044b6105e93660046157b5565b61152b565b6003546001600160a01b0316610572565b61044b61060d3660046156e7565b61158b565b6004546001600160a01b0316610572565b6104c46106313660046158f2565b611991565b600e54610572906001600160a01b031681565b6001610591565b61044b61065e3660046156e7565b611bb8565b60005461044b565b600d54610572906001600160a01b031681565b61049961068c3660046157b5565b611f79565b61044b61069f3660046156e7565b61204f565b6104c46106b2366004615879565b61242b565b61044b6106c5366004615879565b6001600160a01b031660009081526007602052604090205490565b61044b612528565b61044b60005481565b61044b6106ff366004615879565b60066020526000908152604090205481565b6104c461253d565b61044b6126cf565b600e54600160a01b900460ff16610499565b61044b6126e6565b61044b612718565b61044b610751366004615879565b61272b565b610466612782565b61044b612791565b61044b6107743660046157b5565b6127af565b6104996107873660046157b5565b61280f565b6104c4612825565b6104c46107a23660046158f2565b612993565b61044b600281565b61044b600181565b61044b612bef565b61044b612c02565b6107cf612c21565b6040516104559190615982565b6107e4612cd4565b604051610455929190615995565b610499610800366004615a0b565b612e44565b610818610813366004615ab8565b6130b4565b60408051928352602083019190915201610455565b6107e461355b565b61044b600081565b61081861084b366004615ab8565b6136c0565b61044b61085e366004615837565b613b04565b6107cf613b5a565b600f5461044b565b60015461044b565b6104996108893660046157b5565b613b85565b61044b61089c366004615afa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61044b613bf8565b61044b6108dd366004615879565b613c0b565b61044b6108f0366004615879565b613c69565b600c54600160b01b900460ff16610499565b61044b6109153660046157b5565b613cbc565b600c54600090610100900460ff161561094e5760405162461bcd60e51b815260040161094590615b2d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109865760405162461bcd60e51b815260040161094590615b52565b61098f84613d1c565b6001600160a01b03841660009081526010602052604090206003908101546109d3916109c390670de0b6b3a7640000615ba9565b6109ce906001615bbd565b613d77565b8311156109f25760405162461bcd60e51b815260040161094590615bd5565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a279392919088613e5c565b915081610a465760405162461bcd60e51b815260040161094590615c00565b82821115610a665760405162461bcd60e51b815260040161094590615c29565b610a74816003015485613f20565b60038201556000610a858382613d77565b604080518781524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051838152600080516020615e238339815191529060200160405180910390a1610ae63384613f7d565b610af8610af38483613f20565b613f87565b600254610b0e906001600160a01b031682613f90565b610b19863387613f9a565b6003546000906001600160a01b0388811691161415610b4457506004546001600160a01b0316610b52565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b8a9291169085908990600401615c4f565b602060405180830381865afa158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb9190615c73565b15610d6657600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c07939291908a613fb3565b9050610c17826003015482613f20565b6003830155610c27866000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c54610c84906201000090046001600160a01b031687613f7d565b610c91610af38786613f20565b600254610ca7906001600160a01b031685613f90565b600c54610cc59084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b50505050600080516020615e0383398151915286604051610d5b91815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d8a90615c90565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690615c90565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e385760405162461bcd60e51b815260040161094590615b2d565b610e4184613d1c565b610e4a83613d1c565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e8b9391908861407d565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e6383398151915290610ee09086815260200190565b60405180910390a35060015b92915050565b610f05670de0b6b3a76400006032615ccb565b81565b600c54610100900460ff1615610f305760405162461bcd60e51b815260040161094590615b2d565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f995760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b6044820152606401610945565b6003546001600160a01b03878116911614610ff65760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f414444524553530000006044820152606401610945565b6004546001600160a01b038481169116146110535760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f62617365546f6b656e5f414444524553530000006044820152606401610945565b61105e868686614109565b604080518681524260208201526001600160a01b038816913391600080516020615e43833981519152910160405180910390a361109c838383614109565b604080518381524260208201526001600160a01b038516913391600080516020615e43833981519152910160405180910390a36110d76142f3565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610f056402540be400670de0b6b3a7640000615ba9565b6000336001600160a01b038516148061119757506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111db5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b6044820152606401610945565b6111e6848484614352565b336001600160a01b0385161480159061122457506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112a5576001600160a01b03841660009081526008602090815260408083203384529091529020546112579083613f20565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e63833981519152910160405180910390a35b5060019392505050565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190615cea565b905090565b600061133485613d1c565b61133d84613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614464565b979650505050505050565b600c546201000090046001600160a01b031633146113df5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6113f4620f4240670de0b6b3a7640000615ba9565b8110156114315760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b611444600a670de0b6b3a7640000615ba9565b8111156114815760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614516565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613fb3565b600c54600090610100900460ff16156115b65760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166115ee5760405162461bcd60e51b815260040161094590615b52565b6115f784613d1c565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461162c9392919088613fb3565b91508282101561164e5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b0385166000908152601060205260409020600390810154611682916109c390670de0b6b3a7640000615ba9565b8211156116a15760405162461bcd60e51b815260040161094590615bd5565b6116af816003015483613f20565b600382015560006116c08582613d77565b604080518581524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051858152600080516020615e238339815191529060200160405180910390a16117213386613f7d565b61172e610af38683613f20565b600254611744906001600160a01b031682613f90565b61174f863385613f9a565b6003546000906001600160a01b038881169116141561177a57506004546001600160a01b0316611788565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117c09291169085908b90600401615c4f565b602060405180830381865afa1580156117dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118019190615c73565b15610d6657600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461183d939291908c613fb3565b905061184d826003015482613f20565b600383015561185d886000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c546118ba906201000090046001600160a01b031689613f7d565b6118c7610af38986613f20565b6002546118dd906001600160a01b031685613f90565b600c546118fb9084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b50505050600080516020615e0383398151915288604051610d5b91815260200190565b600c54610100900460ff16156119b95760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166119f15760405162461bcd60e51b815260040161094590615b52565b60006119fc60095490565b90506000611a0a858361459a565b905080611a295760405162461bcd60e51b815260040161094590615c00565b60005b600f54811015611b71576000600f8281548110611a4b57611a4b615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611a808583613d77565b905080611a9f5760405162461bcd60e51b815260040161094590615c00565b878785818110611ab157611ab1615d2a565b90506020020135811115611ad75760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038316600090815260106020526040902060030154611afd90826146b2565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e4383398151915290611b489085904290918252602082015260400190565b60405180910390a3611b5b833383614704565b5050508080611b6990615d40565b915050611a2c565b50611b7b85614719565b611b853386613f90565b604051858152600080516020615e238339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611be35760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff16611c1b5760405162461bcd60e51b815260040161094590615b52565b611c2484613d1c565b6001600160a01b038416600090815260106020526040902060030154611c57906109ce6002670de0b6b3a7640000615ba9565b831115611c765760405162461bcd60e51b815260040161094590615d5b565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611cab9392919088614516565b915082821015611ccd5760405162461bcd60e51b815260040161094590615d03565b611cdb8160030154856146b2565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051828152600080516020615e238339815191529060200160405180910390a1611d3d82614719565b611d473383613f90565b611d52853386614704565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611d8c939092909189614722565b6003549091506001600160a01b0389811691161415611db8576004546001600160a01b03169150611dc7565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611dff9291169086908690600401615c4f565b602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611e7d9291169086908690600401615c4f565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b50505050611ebd8360030154826146b2565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e43833981519152910160405180910390a3604051858152600080516020615e038339815191529060200160405180910390a1611f2985614719565b600c54611f45906201000090046001600160a01b031686613f90565b600c54611f639083906201000090046001600160a01b031683614704565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611fce573360009081526008602090815260408083206001600160a01b0388168452909152812055611ffd565b611fd88184613f20565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e63833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff161561207a5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166120b25760405162461bcd60e51b815260040161094590615b52565b6120bb84613d1c565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546120f09392919088614722565b91508161210f5760405162461bcd60e51b815260040161094590615c00565b8282111561212f5760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038516600090815260106020526040902060030154612162906109ce6002670de0b6b3a7640000615ba9565b8211156121815760405162461bcd60e51b815260040161094590615d5b565b61218f8160030154836146b2565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051848152600080516020615e238339815191529060200160405180910390a16121f184614719565b6121fb3385613f90565b612206853384614704565b600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461223d939291908a614722565b6003549091506000906001600160a01b038981169116141561226b57506004546001600160a01b0316612279565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122b19291169085908790600401615c4f565b602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f29190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261232f9291169085908790600401615c4f565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b5050505061236f8360030154836146b2565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e43833981519152910160405180910390a36123ba87614719565b600c546123d6906201000090046001600160a01b031688613f90565b600c546123f49082906201000090046001600160a01b031684614704565b604051878152600080516020615e038339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b600d546001600160a01b0316331461247d5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b6044820152606401610945565b6001600160a01b0381166124d35760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f7220616464726573730000006044820152606401610945565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b891016114b8565b610f05620f4240670de0b6b3a7640000615ba9565b6000612547612c21565b905060005b81518110156126cb5760006006600084848151811061256d5761256d615d2a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490506000600660008585815181106125b0576125b0615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612628600d60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b60200260200101516001600160a01b03166147bc9092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061267257612672615d2a565b6020026020010151846040516126b094939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126c381615d40565b91505061254c565b5050565b610f0564e8d4a51000670de0b6b3a7640000615ba9565b600c54600090610100900460ff16156127115760405162461bcd60e51b815260040161094590615b2d565b5060115490565b610f05670de0b6b3a76400006064615ccb565b600c54600090610100900460ff16156127565760405162461bcd60e51b815260040161094590615b2d565b61275f82613d1c565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d8a90615c90565b6127a46003670de0b6b3a7640000615ba9565b610f05906001615bbd565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613e5c565b600061281c338484614352565b50600192915050565b600061282f612c21565b905060005b81518110156126cb5760006005600084848151811061285557612855615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006005600085858151811061289857612898615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055506128f0600e60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b7fed2b0288692cfc6d01c94a67a53721792f59c3d1388221f8aa4f66c8d2808dde33600e60009054906101000a90046001600160a01b031685858151811061293a5761293a615d2a565b60200260200101518460405161297894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a1508061298b81615d40565b915050612834565b600c54610100900460ff16156129bb5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166129f35760405162461bcd60e51b815260040161094590615b52565b60006129fe60095490565b90506000612a0d856000613d77565b90506000612a1b8683613f20565b90506000612a29828561459a565b905080612a485760405162461bcd60e51b815260040161094590615c00565b612a523388613f7d565b600254612a68906001600160a01b031684613f90565b612a7182613f87565b60005b600f54811015612bb9576000600f8281548110612a9357612a93615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612ac88583613d77565b905080612ae75760405162461bcd60e51b815260040161094590615c00565b898985818110612af957612af9615d2a565b90506020020135811015612b1f5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b038316600090815260106020526040902060030154612b459082613f20565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615de383398151915290612b909085904290918252602082015260400190565b60405180910390a3612ba3833383613f9a565b5050508080612bb190615d40565b915050612a74565b50604051878152600080516020615e238339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610f05600a670de0b6b3a7640000615ba9565b6001612c17670de0b6b3a76400006002615ccb565b610f059190615d85565b600c54606090610100900460ff1615612c4c5760405162461bcd60e51b815260040161094590615b2d565b600e54600160a01b900460ff16612c755760405162461bcd60e51b815260040161094590615b52565b600f805480602002602001604051908101604052809291908181526020018280548015610e0357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cad575050505050905090565b6060806000612ce1612c21565b90506000815167ffffffffffffffff811115612cff57612cff615d9c565b604051908082528060200260200182016040528015612d28578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612d4757612d47615d9c565b604051908082528060200260200182016040528015612d70578160200160208202803683370190505b50905060005b8351811015612e3957838181518110612d9157612d91615d2a565b6020026020010151838281518110612dab57612dab615d2a565b60200260200101906001600160a01b031690816001600160a01b03168152505060056000858381518110612de157612de1615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110612e1c57612e1c615d2a565b602090810291909101015280612e3181615d40565b915050612d76565b509094909350915050565b601254600090600160a01b900460ff1615612ea15760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a45440000000000000000006044820152606401610945565b6001600160a01b038916612ef75760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f4144445245535300006044820152606401610945565b6001600160a01b038816612f4d5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f4144445245535300000000006044820152606401610945565b612f62620f4240670de0b6b3a7640000615ba9565b87876000818110612f7557612f75615d2a565b905060200201351015612fb85760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b612fcb600a670de0b6b3a7640000615ba9565b87876000818110612fde57612fde615d2a565b9050602002013511156130215760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b6130a78989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061481f915050565b9998505050505050505050565b600c546000908190610100900460ff16156130e15760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166131195760405162461bcd60e51b815260040161094590615b52565b6131388460005b6020020160208101906131339190615879565b613d1c565b613143846001613120565b60006010816131556020880188615879565b6001600160a01b0316815260208101919091526040016000908120915060108187600160200201602081019061318b9190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506131ca82600301546002670de0b6b3a76400006109ce9190615ba9565b853511156131ea5760405162461bcd60e51b815260040161094590615d5b565b600061322083600301548460020154846003015485600201548a60036004811061321657613216615d2a565b602002013561407d565b9050604086013581111561326c5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916132c39082908a35906132b9908d018d615879565b60608c013561495d565b909750915060208801358710156132ec5760405162461bcd60e51b815260040161094590615d03565b6132fa8560030154836146b2565b8560030181905550613310846003015488613f20565b846003018190555061334285600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156133645760405162461bcd60e51b815260040161094590615c00565b60408801358611156133aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6133b588358861459a565b8311156133d45760405162461bcd60e51b815260040161094590615c00565b6133e460408a0160208b01615879565b6001600160a01b03166133fa60208b018b615879565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461346261345a60208b018b615879565b338a35614704565b600061348c8935613487816109ce670de0b6b3a76400008e60035b6020020135613f20565b613f20565b9050606089013515613527576134d08a60025b6020020160208101906134b29190615879565b826134c060208e018e615879565b6001600160a01b031691906147bc565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61350160608c0160408d01615879565b61350e60208d018d615879565b8360405161351e93929190615c4f565b60405180910390a15b61354161353a60408c0160208d01615879565b338a613f9a565b505050505050600c805461ff001916905590939092509050565b6060806000613568612c21565b90506000815167ffffffffffffffff81111561358657613586615d9c565b6040519080825280602002602001820160405280156135af578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156135ce576135ce615d9c565b6040519080825280602002602001820160405280156135f7578160200160208202803683370190505b50905060005b8351811015612e395783818151811061361857613618615d2a565b602002602001015183828151811061363257613632615d2a565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061366857613668615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106136a3576136a3615d2a565b6020908102919091010152806136b881615d40565b9150506135fd565b600c546000908190610100900460ff16156136ed5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166137255760405162461bcd60e51b815260040161094590615b52565b613730846000613120565b61373b846001613120565b600060108161374d6020880188615879565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906137839190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506137c281600301546003670de0b6b3a76400006109c39190615ba9565b602086013511156137e55760405162461bcd60e51b815260040161094590615bd5565b600061381183600301548460020154846003015485600201548a60036004811061321657613216615d2a565b9050604086013581111561385d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916138b69082908a810135906138ac908d018d615879565b60608c0135614b75565b909750915087358711156138dc5760405162461bcd60e51b815260040161094590615c29565b6138ea8560030154836146b2565b6003808701919091558401546139029089600161347d565b846003018190555061393485600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156139565760405162461bcd60e51b815260040161094590615c00565b604088013586111561399c5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6139aa8760208a013561459a565b8311156139c95760405162461bcd60e51b815260040161094590615c00565b6139d960408a0160208b01615879565b6001600160a01b03166139ef60208b018b615879565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a4613a5a613a5360208b018b615879565b3389614704565b6000613a7888613487816109ce670de0b6b3a76400008e600361347d565b9050606089013515613ae657613a8f8a600261349f565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae613ac060608c0160408d01615879565b613acd60208d018d615879565b83604051613add93929190615c4f565b60405180910390a15b613541613af960408c0160208d01615879565b3360208c0135613f9a565b6000613b0f85613d1c565b613b1884613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614d99565b600c54606090610100900460ff1615612c755760405162461bcd60e51b815260040161094590615b2d565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613bb390836146b2565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e638339815191529101610ee0565b610f056002670de0b6b3a7640000615ba9565b600c54600090610100900460ff1615613c365760405162461bcd60e51b815260040161094590615b2d565b613c3f82613d1c565b6001600160a01b038216600090815260106020526040902060020154601154610e9090829061459a565b600c54600090610100900460ff1615613c945760405162461bcd60e51b815260040161094590615b2d565b613c9d82613d1c565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614722565b6001600160a01b03811660009081526010602052604090205460ff16613d745760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b6044820152606401610945565b50565b600080613d848385615ccb565b9050831580613d9b575082613d998583615ba9565b145b613dda5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613def6002670de0b6b3a7640000615ba9565b613df99083615bbd565b905081811015613e3e5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613e52670de0b6b3a764000083615ba9565b9695505050505050565b600080613e69868561459a565b90506000613e7f670de0b6b3a764000083613f20565b90506000613e8f82600154613d77565b90506000613eae86613ea9670de0b6b3a764000085613f20565b61459a565b90506000613ebc8b83613f20565b90506000613eca828d61459a565b90506000613ed88288614e4d565b90506000613ee6828d613d77565b90506000613ef48d83613f20565b9050613f0d81613ea9670de0b6b3a76400006000613f20565b9f9e505050505050505050505050505050565b6000806000613f2f8585614f6e565b915091508015613f755760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b6044820152606401610945565b509392505050565b6126cb8282614fa5565b613d7481614fb0565b6126cb828261507c565b613fae6001600160a01b03841683836147bc565b505050565b600080613fc0868561459a565b90506000613fdb846109ce670de0b6b3a76400006000613f20565b90506000613fe98783613f20565b90506000613ff7828961459a565b9050600061401682614011670de0b6b3a76400008861459a565b614e4d565b90506000614024828d613d77565b905060006140328d83613f20565b9050600061405361404b670de0b6b3a76400008a613f20565b600154613d77565b905061406b826109ce670de0b6b3a764000084613f20565b9e9d5050505050505050505050505050565b60008061408a878761459a565b90506000614098868661459a565b905060006140a6838361459a565b905060006140ef670de0b6b3a7640000613ea9670de0b6b3a7640000896000546140ce6112af565b6001546140db9190615bbd565b6140e59190615bbd565b6134879190615bbd565b90506140fb8282613d77565b9a9950505050505050505050565b600c546201000090046001600160a01b0316331461415e5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6001600160a01b03831660009081526010602052604090205460ff16156141b65760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b6044820152606401610945565b600e54600160a01b900460ff16156142035760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b6044820152606401610945565b600f546002116142465760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b6044820152606401610945565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613fae838383615087565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561433461432f670de0b6b3a76400006064615ccb565b614719565b6143503361434b670de0b6b3a76400006064615ccb565b613f90565b565b6001600160a01b0383166000908152600760205260409020548111156143b15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b6001600160a01b0383166000908152600760205260409020546143d49082613f20565b6001600160a01b03808516600090815260076020526040808220939093559084168152205461440390826146b2565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144579085815260200190565b60405180910390a3505050565b600080614471878661459a565b905060008054846144806112af565b60015461448d9190615bbd565b6144979190615bbd565b6144a19190615bbd565b905060006144b7670de0b6b3a764000083613f20565b90506144c38682613d77565b905060006144d58b613ea98d856146b2565b905060006144e38286614e4d565b905060006144f9670de0b6b3a764000083613f20565b90506145058b82613d77565b9d9c50505050505050505050505050565b600080614523868561459a565b9050600061453c61404b670de0b6b3a764000084613f20565b90506000614556856109ce670de0b6b3a764000085613f20565b905060006145648a836146b2565b90506000614572828c61459a565b905060006145808287614e4d565b9050600061458e828c613d77565b9050614505818c613f20565b6000816145d85760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b6044820152606401610945565b60006145ec670de0b6b3a764000085615ccb565b905083158061460b5750670de0b6b3a76400006146098583615ba9565b145b61464a5760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000614657600285615ba9565b6146619083615bbd565b9050818110156146a65760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000613e528583615ba9565b6000806146bf8385615bbd565b905083811015610e905760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b6044820152606401610945565b613fae6001600160a01b0384168330846152d7565b613d74816152fe565b60008061472f868561459a565b9050600061473d86856146b2565b9050600061474b828861459a565b90506000614761670de0b6b3a76400008561459a565b9050600061476f8383614e4d565b9050600061477d828d613d77565b9050600061478b828e613f20565b905060006147a461404b670de0b6b3a76400008a613f20565b905061406b82613ea9670de0b6b3a764000084613f20565b6040516001600160a01b038316602482015260448101829052613fae90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261536d565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061487557614875615d2a565b60200260200101516001819055508560018151811061489657614896615d2a565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061497a87600160200201518860035b602002015161459a565b9050600061499a87613487896109ce670de0b6b3a76400006134876112af565b6001600160a01b0387166000908152600560205260409020549091506149c090826146b2565b60056000886001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a07886134878a6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038816600090815260066020526040902054909150614a2d90826146b2565b6001600160a01b03881660009081526006602052604081209190915580548790614a556112af565b600154614a629190615bbd565b614a6c9190615bbd565b614a769190615bbd565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614ab58a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614af6670de0b6b3a764000083613f20565b9050614b028a82613d77565b8b51909150600090614b1890613ea981856146b2565b90506000614b268288614e4d565b90506000614b3c670de0b6b3a764000083613f20565b9050614b4f8e6002602002015182613d77565b995089614b608e613487898b615bbd565b99509950505050505050505094509492505050565b60008080614b8c8760036020020151886001614970565b90506000614ba1886002602002015188613f20565b90506000614bb689600260200201518361459a565b90506000614bc48285614e4d565b9050614bd881670de0b6b3a7640000613f20565b90506000805488614be76112af565b600154614bf49190615bbd565b614bfe9190615bbd565b614c089190615bbd565b8b51909150614c2d90614c1b9084613d77565b613ea9670de0b6b3a764000084613f20565b96506000614c4d886134878a6109ce670de0b6b3a76400006134876112af565b6001600160a01b038b16600090815260056020526040902054909150614c7390826146b2565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614cba896134878b6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038c16600090815260066020526040902054909150614ce090826146b2565b6001600160a01b038c166000908152600660205260409020558c51614d1d90614d099086613d77565b613ea9670de0b6b3a7640000600154613f20565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d5c8a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614da6858861459a565b90506000614db48786613f20565b90506000614dc2888361459a565b90506000614dd08285614e4d565b9050614de481670de0b6b3a7640000613f20565b90506000805487614df36112af565b600154614e009190615bbd565b614e0a9190615bbd565b614e149190615bbd565b9050614e28670de0b6b3a764000082613f20565b9550614e3d614e378d84613d77565b8761459a565b9c9b505050505050505050505050565b60006001831015614e985760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b6044820152606401610945565b6001614ead670de0b6b3a76400006002615ccb565b614eb79190615d85565b831115614eff5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b6044820152606401610945565b6000614f0a8361543f565b90506000614f188483613f20565b90506000614f2e86614f298561545d565b615471565b905081614f3f579250610eec915050565b6000614f628784614f5d6402540be400670de0b6b3a7640000615ba9565b6154e5565b905061137f8282613d77565b600080828410614f8d57614f828385615d85565b600091509150614f9e565b614f978484615d85565b6001915091505b9250929050565b6126cb823083614352565b306000908152600760205260409020548111156150065760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b306000908152600760205260409020546150209082613f20565b3060009081526007602052604090205560095461503d9082613f20565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126cb308383614352565b670de0b6b3a76400008110156150d05760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b6044820152606401610945565b6150e3670de0b6b3a76400006032615ccb565b8111156151235760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b6044820152606401610945565b61513a64e8d4a51000670de0b6b3a7640000615ba9565b82101561517b5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b6044820152606401610945565b6001600160a01b03831660009081526010602052604090206002015480821115615217576151b46011546151af8484613f20565b6146b2565b6011556151ca670de0b6b3a76400006032615ccb565b60115411156152125760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b6044820152606401610945565b615233565b808210156152335761522f6011546134878385613f20565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561527c5761527785336152728785613f20565b614704565b6152d0565b808410156152d05760006152908286613f20565b9050600061529f826000613d77565b90506152b587336152b08585613f20565b613f9a565b6002546152cd9088906001600160a01b031683613f9a565b50505b5050505050565b6152f8846323b872dd60e01b8585856040516024016147e893929190615c4f565b50505050565b3060009081526007602052604090205461531890826146b2565b3060009081526007602052604090205560095461533590826146b2565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001615071565b60006153c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155d59092919063ffffffff16565b805190915015613fae57808060200190518101906153e09190615c73565b613fae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610945565b6000670de0b6b3a76400006154538361545d565b610eec9190615ccb565b6000610eec670de0b6b3a764000083615ba9565b60008281615480600285615db2565b61549257670de0b6b3a7640000615494565b815b90506154a1600285615ba9565b93505b8315611523576154b48283613d77565b91506154c1600285615db2565b156154d3576154d08183613d77565b90505b6154de600285615ba9565b93506154a4565b60008281806154fc87670de0b6b3a7640000614f6e565b9092509050670de0b6b3a764000080600060015b8884106155c657600061552b670de0b6b3a764000083615ccb565b905060008061554b8a61554685670de0b6b3a7640000613f20565b614f6e565b9150915061555d876109ce848c613d77565b9650615569878461459a565b965086615578575050506155c6565b8715615582579315935b801561558c579315935b84156155a35761559c8688613f20565b95506155b0565b6155ad86886146b2565b95505b50505080806155be90615d40565b915050615510565b50909998505050505050505050565b6060611523848460008585843b61562e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610945565b600080866001600160a01b0316858760405161564a9190615dc6565b60006040518083038185875af1925050503d8060008114615687576040519150601f19603f3d011682016040523d82523d6000602084013e61568c565b606091505b509150915061137f828286606083156156a6575081610e90565b8251156156b65782518084602001fd5b8160405162461bcd60e51b81526004016109459190615746565b80356001600160a01b038116811461277d57600080fd5b6000806000606084860312156156fc57600080fd5b615705846156d0565b95602085013595506040909401359392505050565b60005b8381101561573557818101518382015260200161571d565b838111156152f85750506000910152565b602081526000825180602084015261576581604085016020870161571a565b601f01601f19169190910160400192915050565b60008060006060848603121561578e57600080fd5b615797846156d0565b92506157a5602085016156d0565b9150604084013590509250925092565b600080604083850312156157c857600080fd5b6157d1836156d0565b946020939093013593505050565b60008060008060008060c087890312156157f857600080fd5b615801876156d0565b9550602087013594506040870135935061581d606088016156d0565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561584d57600080fd5b615856856156d0565b9350615864602086016156d0565b93969395505050506040820135916060013590565b60006020828403121561588b57600080fd5b610e90826156d0565b6000602082840312156158a657600080fd5b5035919050565b60008083601f8401126158bf57600080fd5b50813567ffffffffffffffff8111156158d757600080fd5b6020830191508360208260051b8501011115614f9e57600080fd5b60008060006040848603121561590757600080fd5b83359250602084013567ffffffffffffffff81111561592557600080fd5b615931868287016158ad565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159775781516001600160a01b031687529582019590820190600101615952565b509495945050505050565b602081526000610e90602083018461593e565b6040815260006159a8604083018561593e565b82810360208481019190915284518083528582019282019060005b818110156159df578451835293830193918301916001016159c3565b5090979650505050505050565b8015158114613d7457600080fd5b8060408101831015610eec57600080fd5b600080600080600080600080610120898b031215615a2857600080fd5b615a31896156d0565b9750615a3f60208a016156d0565b9650604089013567ffffffffffffffff811115615a5b57600080fd5b615a678b828c016158ad565b9097509550506060890135615a7b816159ec565b93506080890135615a8b816159ec565b9250615a9a8a60a08b016159fa565b9150615aa98a60e08b016159fa565b90509295985092959890939650565b60008060e08385031215615acb57600080fd5b6060830184811115615adc57600080fd5b8392508460e085011115615aef57600080fd5b809150509250929050565b60008060408385031215615b0d57600080fd5b615b16836156d0565b9150615b24602084016156d0565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615bb857615bb8615b7d565b500490565b60008219821115615bd057615bd0615b93565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c8557600080fd5b8151610e90816159ec565b600181811c90821680615ca457607f821691505b60208210811415615cc557634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ce557615ce5615b93565b500290565b600060208284031215615cfc57600080fd5b5051919050565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d5457615d54615b93565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600082821015615d9757615d97615b93565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dc157615dc1615b7d565b500690565b60008251615dd881846020870161571a565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220dd27ead8c9c3c0bb206313d54c68f9281b11dfee1171b5653a1419897a2c772764736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}