[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Fees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount0Out", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1Out", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reserve0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "reserve1", "type": "uint256" } ], "name": "Sync", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "blockTimestampLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimable0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimable1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "current", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentCumulativePrices", "outputs": [ { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "blockTimestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "address", "name": "tokenIn", "type": "address" } ], "name": "getAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getFees", "outputs": [ { "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint256", "name": "_reserve0", "type": "uint256" }, { "internalType": "uint256", "name": "_reserve1", "type": "uint256" }, { "internalType": "uint256", "name": "_blockTimestampLast", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "index0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "index1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastObservation", "outputs": [ { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" } ], "internalType": "struct BaseV1Pair.Observation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadata", "outputs": [ { "internalType": "uint256", "name": "dec0", "type": "uint256" }, { "internalType": "uint256", "name": "dec1", "type": "uint256" }, { "internalType": "uint256", "name": "r0", "type": "uint256" }, { "internalType": "uint256", "name": "r1", "type": "uint256" }, { "internalType": "bool", "name": "st", "type": "bool" }, { "internalType": "address", "name": "t0", "type": "address" }, { "internalType": "address", "name": "t1", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "liquidity", "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": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "observationLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "observations", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "points", "type": "uint256" } ], "name": "prices", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "granularity", "type": "uint256" } ], "name": "quote", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve0CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve1CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "points", "type": "uint256" }, { "internalType": "uint256", "name": "window", "type": "uint256" } ], "name": "sample", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "skim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "supplyIndex0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "supplyIndex1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0Out", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Out", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sync", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
61016060405260006002556000600d556000600e5560016013553480156200002657600080fd5b50336001600160a01b0316610100816001600160a01b0316815250506000806000336001600160a01b031663eb13c4cf6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac9190620007c8565b8015156080526001600160a01b0380831660c052831660a052604051929550909350915083908390620000df90620006f7565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000113573d6000803e3d6000fd5b506001600160a01b031660e05280156200034557826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000166573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000190919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001f9919081019062000863565b6040516020016200020c9291906200091b565b604051602081830303815290604052600090805190602001906200023292919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200029c919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000305919081019062000863565b6040516020016200031892919062000976565b604051602081830303815290604052600190805190602001906200033e92919062000705565b506200055e565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000384573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ae919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000417919081019062000863565b6040516020016200042a929190620009c7565b604051602081830303815290604052600090805190602001906200045092919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000490573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ba919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620004f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000523919081019062000863565b6040516020016200053692919062000a24565b604051602081830303815290604052600190805190602001906200055c92919062000705565b505b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c3919062000a46565b620005d090600a62000b87565b6101208181525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000617573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063d919062000a46565b6200064a90600a62000b87565b6101405250506040805160608101825242815260006020820181815292820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68860039092029182015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555062000bd5565b610412806200440c83390190565b828054620007139062000b98565b90600052602060002090601f01602090048101928262000737576000855562000782565b82601f106200075257805160ff191683800117855562000782565b8280016001018555821562000782579182015b828111156200078257825182559160200191906001019062000765565b506200079092915062000794565b5090565b5b8082111562000790576000815560010162000795565b80516001600160a01b0381168114620007c357600080fd5b919050565b600080600060608486031215620007de57600080fd5b620007e984620007ab565b9250620007f960208501620007ab565b9150604084015180151581146200080f57600080fd5b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200084d57818101518382015260200162000833565b838111156200085d576000848401525b50505050565b6000602082840312156200087657600080fd5b81516001600160401b03808211156200088e57600080fd5b818401915084601f830112620008a357600080fd5b815181811115620008b857620008b86200081a565b604051601f8201601f19908116603f01168101908382118183101715620008e357620008e36200081a565b81604052828152876020848701011115620008fd57600080fd5b6200091083602083016020880162000830565b979650505050505050565b6e029ba30b13632ab189020a6a690169608d1b8152600083516200094781600f85016020880162000830565b602f60f81b600f9184019182015283516200096a81601084016020880162000830565b01601001949350505050565b6473414d4d2d60d81b8152600083516200099881600585016020880162000830565b602f60f81b6005918401918201528351620009bb81600684016020880162000830565b01600601949350505050565b7002b37b630ba34b632ab189020a6a690169607d1b815260008351620009f581601185016020880162000830565b602f60f81b601191840191820152835162000a1881601284016020880162000830565b01601201949350505050565b6476414d4d2d60d81b8152600083516200099881600585016020880162000830565b60006020828403121562000a5957600080fd5b815160ff8116811462000a6b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000ac957816000190482111562000aad5762000aad62000a72565b8085161562000abb57918102915b93841c939080029062000a8d565b509250929050565b60008262000ae25750600162000b81565b8162000af15750600062000b81565b816001811462000b0a576002811462000b155762000b35565b600191505062000b81565b60ff84111562000b295762000b2962000a72565b50506001821b62000b81565b5060208310610133831016604e8410600b841016171562000b5a575081810a62000b81565b62000b66838362000a88565b806000190482111562000b7d5762000b7d62000a72565b0290505b92915050565b600062000a6b60ff84168362000ad1565b600181811c9082168062000bad57607f821691505b6020821081141562000bcf57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051610140516136d262000d3a6000396000818161043c015281816125dc015281816128c6015281816129880152612a930152600081816104190152818161259b01528181612887015281816129ca0152612a6d015260006107f20152600081816105fd01528181611d140152818161240201526124cf0152600081816104c601528181610665015281816107320152818161095401528181610bfc0152818161148f0152818161168901528181611bbb015281816121f601526124ae0152600081816103040152818161049e015281816106400152818161093301528181610bdb015281816113f90152818161166701528181611b990152818161216e015281816123e1015281816129080152818161294f01528181612a340152612ad70152600081816103a20152818161046e01528181610c1d015281816120b301528181612573015261285301526136d26000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80637ecebe001161015c578063bc25cf77116100ce578063d294f09311610087578063d294f09314610754578063d505accf1461075c578063dd62ed3e1461076f578063ebeb31db1461079a578063f140a35a146107a2578063fff6cae9146107b557600080fd5b8063bc25cf77146106f6578063bda39cad14610709578063bf944dbc14610712578063c245febc1461071b578063c5700a0214610724578063d21220a71461072d57600080fd5b80639af608c9116101205780639af608c91461061f5780639d63848a146106325780639e8cc04b146106905780639f767c88146106a3578063a1ac4d13146106c3578063a9059cbb146106e357600080fd5b80637ecebe001461057e57806389afcb441461059e5780638a7b8cf2146105c657806395d89b41146105f05780639af1d35a146105f857600080fd5b8063252c09d7116101f55780634d5a9f8a116101b95780634d5a9f8a146104fc578063517b3f821461051c5780635881c4751461052f5780635a76f25e146105425780636a6278421461054b57806370a082311461055e57600080fd5b8063252c09d7146103d7578063313ce567146103ea57806332c0defd14610404578063392f37e91461040d578063443cb4bc146104f357600080fd5b806313345fe11161024757806313345fe11461033e57806318160ddd1461035e5780631df8c71714610375578063205aabf11461037d57806322be3de11461039d57806323b872dd146103c457600080fd5b8063022c0d9f1461028457806306fdde03146102995780630902f1ac146102b7578063095ea7b3146102dc5780630dfe1681146102ff575b600080fd5b610297610292366004613133565b6107bd565b005b6102a1610e4c565b6040516102ae91906131f7565b60405180910390f35b600854600954600a545b604080519384526020840192909252908201526060016102ae565b6102ef6102ea36600461322a565b610eda565b60405190151581526020016102ae565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102ae565b61035161034c366004613254565b610f47565b6040516102ae919061328d565b61036760025481565b6040519081526020016102ae565b6102c161114f565b61036761038b3660046132d1565b60106020526000908152604090205481565b6102ef7f000000000000000000000000000000000000000000000000000000000000000081565b6102ef6103d23660046132ec565b6111be565b6102c16103e5366004613328565b611287565b6103f2601281565b60405160ff90911681526020016102ae565b610367600d5481565b600854600954604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201529081019290925260608201527f0000000000000000000000000000000000000000000000000000000000000000151560808201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f00000000000000000000000000000000000000000000000000000000000000001660c082015260e0016102ae565b61036760085481565b61036761050a3660046132d1565b60116020526000908152604090205481565b61036761052a36600461322a565b6112ba565b61035161053d366004613341565b6113a3565b61036760095481565b6103676105593660046132d1565b6113b2565b61036761056c3660046132d1565b60046020526000908152604090205481565b61036761058c3660046132d1565b60066020526000908152604090205481565b6105b16105ac3660046132d1565b611622565b604080519283526020830191909152016102ae565b6105ce611952565b60408051825181526020808401519082015291810151908201526060016102ae565b6102a16119d2565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6105b161062d3660046132d1565b6119df565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000166020820152016102ae565b61036761069e366004613341565b611ad7565b6103676106b13660046132d1565b600f6020526000908152604090205481565b6103676106d13660046132d1565b60126020526000908152604090205481565b6102ef6106f136600461322a565b611b44565b6102976107043660046132d1565b611b5a565b610367600e5481565b610367600b5481565b610367600c5481565b610367600a5481565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6105b1611c8b565b61029761076a366004613374565b611db2565b61036761077d3660046133e7565b600360209081526000928352604080842090915290825290205481565b600754610367565b6103676107b036600461341a565b6120a7565b61029761212e565b6013546001146107e85760405162461bcd60e51b81526004016107df9061343d565b60405180910390fd5b60026013819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b187bd266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610872919061345b565b156108a85760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b60448201526064016107df565b60008511806108b75750600084115b6108e95760405162461bcd60e51b8152602060048201526003602482015262494f4160e81b60448201526064016107df565b60085460095481871080156108fd57508086105b61092e5760405162461bcd60e51b8152602060048201526002602482015261125360f21b60448201526064016107df565b6000807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03898116908316148015906109a15750806001600160a01b0316896001600160a01b031614155b6109d25760405162461bcd60e51b8152602060048201526002602482015261125560f21b60448201526064016107df565b8a156109e3576109e3828a8d61227b565b89156109f4576109f4818a8c61227b565b8615610a6157604051639a7bff7960e01b81526001600160a01b038a1690639a7bff7990610a2e9033908f908f908e908e9060040161347d565b600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac991906134c9565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3491906134c9565b9250505060008985610b4691906134f8565b8311610b53576000610b67565b610b5d8a866134f8565b610b6790846134f8565b90506000610b758a866134f8565b8311610b82576000610b96565b610b8c8a866134f8565b610b9690846134f8565b90506000821180610ba75750600081115b610bd95760405162461bcd60e51b815260206004820152600360248201526249494160e81b60448201526064016107df565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000015610c7a578315610c5b57610c5b610c566127108661350f565b6123dc565b8215610c7557610c75610c706127108561350f565b6124a9565b610cbc565b8315610c9b57610c9b612710610c91866019613531565b610c56919061350f565b8215610cbc57610cbc612710610cb2856019613531565b610c70919061350f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2491906134c9565b6040516370a0823160e01b81523060048201529096506001600160a01b038216906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f91906134c9565b9450610d9b888861256f565b610da5878761256f565b1015610dd75760405162461bcd60e51b81526020600482015260016024820152604b60f81b60448201526064016107df565b5050610de5848488886126bb565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601355505050505050505050565b60008054610e5990613550565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8590613550565b8015610ed25780601f10610ea757610100808354040283529160200191610ed2565b820191906000526020600020905b815481529060010190602001808311610eb557829003601f168201915b505050505081565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f359086815260200190565b60405180910390a35060015b92915050565b606060008367ffffffffffffffff811115610f6457610f64613585565b604051908082528060200260200182016040528015610f8d578160200160208202803683370190505b50600754909150600090610fa3906001906134f8565b90506000610fb18587613531565b610fbb90836134f8565b90506000805b8383101561113f57610fd3878461359b565b9150600060078481548110610fea57610fea6135b3565b9060005260206000209060030201600001546007848154811061100f5761100f6135b3565b90600052602060002090600302016000015461102b91906134f8565b905060008160078681548110611043576110436135b3565b90600052602060002090600302016001015460078681548110611068576110686135b3565b90600052602060002090600302016001015461108491906134f8565b61108e919061350f565b9050600082600787815481106110a6576110a66135b3565b906000526020600020906003020160020154600787815481106110cb576110cb6135b3565b9060005260206000209060030201600201546110e791906134f8565b6110f1919061350f565b90506110ff8c8e848461284f565b888581518110611111576111116135b3565b602090810291909101015261112784600161359b565b93505050508683611138919061359b565b9250610fc1565b509293505050505b949350505050565b600b54600c54426000808061116d600854600954600a549192909190565b9250925092508381146111b657600061118682866134f8565b90506111928185613531565b61119c908861359b565b96506111a88184613531565b6111b2908761359b565b9550505b505050909192565b6001600160a01b0383166000818152600360209081526040808320338085529252822054919290919082148015906111f857506000198114155b1561126e57600061120985836134f8565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b611279868686612b44565b6001925050505b9392505050565b6007818154811061129757600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b6000806112c5611952565b90506000806112d261114f565b508451919350915042141561133b57600780546112f1906002906134f8565b81548110611301576113016135b3565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505b825160009061134a90426134f8565b905060008185602001518561135f91906134f8565b611369919061350f565b905060008286604001518561137e91906134f8565b611388919061350f565b9050611396888a848461284f565b9998505050505050505050565b60606111478484846001610f47565b60006013546001146113d65760405162461bcd60e51b81526004016107df9061343d565b60026013556008546009546040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c91906134c9565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906134c9565b9050600061150885846134f8565b9050600061151685846134f8565b60025490915080611554576103e86115366115318486613531565b612c04565b61154091906134f8565b975061154f60006103e8612c74565b611589565b611586876115628386613531565b61156c919061350f565b876115778486613531565b611581919061350f565b612d07565b97505b600088116115bf5760405162461bcd60e51b8152602060048201526003602482015262494c4d60e81b60448201526064016107df565b6115c98989612c74565b6115d5858589896126bb565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001601355509395945050505050565b6000806013546001146116475760405162461bcd60e51b81526004016107df9061343d565b60026013556008546009546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170191906134c9565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f91906134c9565b3060009081526004602052604090205460025491925090806117918584613531565b61179b919061350f565b9950806117a88484613531565b6117b2919061350f565b985060008a1180156117c45750600089115b6117f65760405162461bcd60e51b815260206004820152600360248201526224a62160e91b60448201526064016107df565b6118003083612d1d565b61180b868c8c61227b565b611816858c8b61227b565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e91906134c9565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e991906134c9565b92506118f784848a8a6126bb565b604080518b8152602081018b90526001600160a01b038d169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050506001601381905550915091565b61197660405180606001604052806000815260200160008152602001600081525090565b60078054611986906001906134f8565b81548110611996576119966135b3565b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905090565b60018054610e5990613550565b6001600160a01b038116600090815260116020908152604080832054601283528184205460049093529220548015611ad1576001600160a01b0384166000908152600f6020526040812054600d54611a3791906134f8565b6001600160a01b038616600090815260106020526040812054600e549293509091611a6291906134f8565b90508115611a99576000670de0b6b3a7640000611a7f8486613531565b611a89919061350f565b9050611a95818761359b565b9550505b8015611ace576000670de0b6b3a7640000611ab48386613531565b611abe919061350f565b9050611aca818661359b565b9450505b50505b50915091565b600080611ae78585856001610f47565b90506000805b8251811015611b2f57828181518110611b0857611b086135b3565b602002602001015182611b1b919061359b565b915080611b27816135c9565b915050611aed565b50611b3a848261350f565b9695505050505050565b6000611b51338484612b44565b50600192915050565b601354600114611b7c5760405162461bcd60e51b81526004016107df9061343d565b60026013556008546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091611c499184918691906001600160a01b038416906370a08231906024015b602060405180830381865afa158015611c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3a91906134c9565b611c4491906134f8565b61227b565b6009546040516370a0823160e01b8152306004820152611c819183918691906001600160a01b038416906370a0823190602401611bf9565b5050600160135550565b600080611c9733612da8565b50503360009081526011602090815260408083205460129092529091205481151580611cc35750600081115b15611dae573360008181526011602090815260408083208390556012909152808220919091555163299e7ae760e11b8152600481019190915260248101839052604481018290526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063533cf5ce90606401600060405180830381600087803b158015611d5857600080fd5b505af1158015611d6c573d6000803e3d6000fd5b505060408051858152602081018590523393508392507f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e94645910160405180910390a35b9091565b42841015611df45760405162461bcd60e51b815260206004820152600f60248201526e10985cd9558c4e8811561412549151608a1b60448201526064016107df565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051611e2491906135e4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152918152815160209283012060058190556001600160a01b038a166000908152600690935290822080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611eda836135c9565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611f5392919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611fbe573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611ff45750886001600160a01b0316816001600160a01b0316145b6120405760405162461bcd60e51b815260206004820152601960248201527f4261736556313a20494e56414c49445f5349474e41545552450000000000000060448201526064016107df565b6001600160a01b038981166000818152600360209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600854600954600091907f0000000000000000000000000000000000000000000000000000000000000000156120f4576120e36127108661350f565b6120ed90866134f8565b9450612119565b612710612102866019613531565b61210c919061350f565b61211690866134f8565b94505b6121258585848461284f565b95945050505050565b6013546001146121505760405162461bcd60e51b81526004016107df9061343d565b60026013556040516370a0823160e01b8152306004820152612274907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156121bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e191906134c9565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226991906134c9565b6008546009546126bb565b6001601355565b6000836001600160a01b03163b116122c15760405162461bcd60e51b81526020600482015260096024820152683a37b5b2b71032b93960b91b60448201526064016107df565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161231d9190613680565b6000604051808303816000865af19150503d806000811461235a576040519150601f19603f3d011682016040523d82523d6000602084013e61235f565b606091505b5091509150818015612389575080511580612389575080806020019051810190612389919061345b565b6123d55760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107df565b5050505050565b6124277f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361227b565b60025460009061243f83670de0b6b3a7640000613531565b612449919061350f565b905080156124695780600d6000828254612463919061359b565b90915550505b604080518381526000602082015233917f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a860291015b60405180910390a25050565b6124f47f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361227b565b60025460009061250c83670de0b6b3a7640000613531565b612516919061350f565b905080156125365780600e6000828254612530919061359b565b90915550505b60408051600081526020810184905233917f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a8602910161249d565b60007f0000000000000000000000000000000000000000000000000000000000000000156126aa5760007f00000000000000000000000000000000000000000000000000000000000000006125cc85670de0b6b3a7640000613531565b6125d6919061350f565b905060007f000000000000000000000000000000000000000000000000000000000000000061260d85670de0b6b3a7640000613531565b612617919061350f565b90506000670de0b6b3a764000061262e8385613531565b612638919061350f565b90506000670de0b6b3a764000061264f8480613531565b612659919061350f565b670de0b6b3a764000061266c8680613531565b612676919061350f565b612680919061359b565b9050670de0b6b3a76400006126958284613531565b61269f919061350f565b945050505050610f41565b6126b48284613531565b9050610f41565b600a5442906000906126cd90836134f8565b90506000811180156126de57508315155b80156126e957508215155b15612730576126f88185613531565b600b6000828254612709919061359b565b9091555061271990508184613531565b600c600082825461272a919061359b565b90915550505b600061273a611952565b805190915061274990846134f8565b91506107088211156127fe5760408051606081018252848152600b5460208201908152600c549282019283526007805460018101825560009190915291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390930292830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555b60088790556009869055600a83905560408051888152602081018890527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a150505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000015612ad2576000612883848461256f565b90507f00000000000000000000000000000000000000000000000000000000000000006128b885670de0b6b3a7640000613531565b6128c2919061350f565b93507f00000000000000000000000000000000000000000000000000000000000000006128f784670de0b6b3a7640000613531565b612901919061350f565b92506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614612946578486612949565b85855b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316146129c8577f00000000000000000000000000000000000000000000000000000000000000006129b989670de0b6b3a7640000613531565b6129c3919061350f565b612a05565b7f00000000000000000000000000000000000000000000000000000000000000006129fb89670de0b6b3a7640000613531565b612a05919061350f565b97506000612a1d612a16848b61359b565b8584612f08565b612a2790836134f8565b9050670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614612a91577f0000000000000000000000000000000000000000000000000000000000000000612ab3565b7f00000000000000000000000000000000000000000000000000000000000000005b612abd9083613531565b612ac7919061350f565b945050505050611147565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614612b15578385612b18565b84845b9092509050612b27878361359b565b612b318289613531565b612b3b919061350f565b92505050611147565b612b4d83612da8565b612b5682612da8565b6001600160a01b03831660009081526004602052604081208054839290612b7e9084906134f8565b90915550506001600160a01b03821660009081526004602052604081208054839290612bab90849061359b565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bf791815260200190565b60405180910390a3505050565b60006003821115612c655750806000612c1e60028361350f565b612c2990600161359b565b90505b81811015612c5f57905080600281612c44818661350f565b612c4e919061359b565b612c58919061350f565b9050612c2c565b50919050565b8115612c6f575060015b919050565b612c7d82612da8565b8060026000828254612c8f919061359b565b90915550506001600160a01b03821660009081526004602052604081208054839290612cbc90849061359b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000818310612d165781611280565b5090919050565b612d2682612da8565b8060026000828254612d3891906134f8565b90915550506001600160a01b03821660009081526004602052604081208054839290612d659084906134f8565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612cfb565b6001600160a01b0381166000908152600460205260409020548015612ed6576001600160a01b0382166000908152600f60209081526040808320805460108085529285208054600d54600e54948190559490955282905593612e0a85846134f8565b90506000612e1885846134f8565b90508115612e73576000670de0b6b3a7640000612e35848a613531565b612e3f919061350f565b6001600160a01b038a16600090815260116020526040812080549293508392909190612e6c90849061359b565b9091555050505b8015612ecc576000670de0b6b3a7640000612e8e838a613531565b612e98919061350f565b6001600160a01b038a16600090815260126020526040812080549293508392909190612ec590849061359b565b9091555050505b5050505050505050565b600d546001600160a01b0383166000908152600f6020908152604080832093909355600e546010909152919020555050565b6000805b60ff81101561300e57826000612f228783613017565b905085811015612f72576000612f3888876130b4565b612f4283896134f8565b612f5490670de0b6b3a7640000613531565b612f5e919061350f565b9050612f6a818761359b565b955050612fb4565b6000612f7e88876130b4565b612f8888846134f8565b612f9a90670de0b6b3a7640000613531565b612fa4919061350f565b9050612fb081876134f8565b9550505b81851115612fdd576001612fc883876134f8565b11612fd857849350505050611280565b612ff9565b6001612fe986846134f8565b11612ff957849350505050611280565b50508080613006906135c9565b915050612f0c565b50909392505050565b6000670de0b6b3a7640000828185816130308280613531565b61303a919061350f565b6130449190613531565b61304e919061350f565b6130589190613531565b613062919061350f565b670de0b6b3a76400008084816130788280613531565b613082919061350f565b61308c9190613531565b613096919061350f565b6130a09086613531565b6130aa919061350f565b611280919061359b565b6000670de0b6b3a764000083816130cb8280613531565b6130d5919061350f565b6130df9190613531565b6130e9919061350f565b670de0b6b3a7640000806130fd8580613531565b613107919061350f565b613112866003613531565b6130a09190613531565b80356001600160a01b0381168114612c6f57600080fd5b60008060008060006080868803121561314b57600080fd5b85359450602086013593506131626040870161311c565b9250606086013567ffffffffffffffff8082111561317f57600080fd5b818801915088601f83011261319357600080fd5b8135818111156131a257600080fd5b8960208285010111156131b457600080fd5b9699959850939650602001949392505050565b60005b838110156131e25781810151838201526020016131ca565b838111156131f1576000848401525b50505050565b60208152600082518060208401526132168160408501602087016131c7565b601f01601f19169190910160400192915050565b6000806040838503121561323d57600080fd5b6132468361311c565b946020939093013593505050565b6000806000806080858703121561326a57600080fd5b6132738561311c565b966020860135965060408601359560600135945092505050565b6020808252825182820181905260009190848201906040850190845b818110156132c5578351835292840192918401916001016132a9565b50909695505050505050565b6000602082840312156132e357600080fd5b6112808261311c565b60008060006060848603121561330157600080fd5b61330a8461311c565b92506133186020850161311c565b9150604084013590509250925092565b60006020828403121561333a57600080fd5b5035919050565b60008060006060848603121561335657600080fd5b61335f8461311c565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561338f57600080fd5b6133988861311c565b96506133a66020890161311c565b95506040880135945060608801359350608088013560ff811681146133ca57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156133fa57600080fd5b6134038361311c565b91506134116020840161311c565b90509250929050565b6000806040838503121561342d57600080fd5b823591506134116020840161311c565b6020808252600490820152636c6f636b60e01b604082015260600190565b60006020828403121561346d57600080fd5b8151801515811461128057600080fd5b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b6000602082840312156134db57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561350a5761350a6134e2565b500390565b60008261352c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561354b5761354b6134e2565b500290565b600181811c9082168061356457607f821691505b60208210811415612c5f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600082198211156135ae576135ae6134e2565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156135dd576135dd6134e2565b5060010190565b600080835481600182811c91508083168061360057607f831692505b602080841082141561362057634e487b7160e01b86526022600452602486fd5b818015613634576001811461364557613672565b60ff19861689528489019650613672565b60008a81526020902060005b8681101561366a5781548b820152908501908301613651565b505084890196505b509498975050505050505050565b600082516136928184602087016131c7565b919091019291505056fea2646970667358221220ad74f885bd89588caa819e96e3b0ddd4ed92eaed970de3a23006c5a2ce4768ce64736f6c634300080b003360e060405234801561001057600080fd5b5060405161041238038061041283398101604081905261002f91610066565b336080526001600160a01b0391821660a0521660c052610099565b80516001600160a01b038116811461006157600080fd5b919050565b6000806040838503121561007957600080fd5b6100828361004a565b91506100906020840161004a565b90509250929050565b60805160a05160c05161034d6100c5600039600060e60152600060b5015260006050015261034d6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063533cf5ce14610030575b600080fd5b61004361003e366004610272565b610045565b005b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100aa5760405162461bcd60e51b815260206004820152600560248201526410b830b4b960d91b60448201526064015b60405180910390fd5b81156100db576100db7f00000000000000000000000000000000000000000000000000000000000000008484610111565b801561010c5761010c7f00000000000000000000000000000000000000000000000000000000000000008483610111565b505050565b6000836001600160a01b03163b116101575760405162461bcd60e51b81526020600482015260096024820152683a37b5b2b71032b93960b91b60448201526064016100a1565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916101b391906102b3565b6000604051808303816000865af19150503d80600081146101f0576040519150601f19603f3d011682016040523d82523d6000602084013e6101f5565b606091505b509150915081801561021f57508051158061021f57508080602001905181019061021f91906102ee565b61026b5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016100a1565b5050505050565b60008060006060848603121561028757600080fd5b83356001600160a01b038116811461029e57600080fd5b95602085013595506040909401359392505050565b6000825160005b818110156102d457602081860181015185830152016102ba565b818111156102e3576000828501525b509190910192915050565b60006020828403121561030057600080fd5b8151801515811461031057600080fd5b939250505056fea26469706673582212201942cc8583e68081cc86175c84328632908d7d9f5860cf0e2f949e4d62c7e18464736f6c634300080b0033