[ { "inputs": [], "payable": false, "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": "value", "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": "token", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" } ], "name": "DrainWrongToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "token0FeePercent", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "token1FeePercent", "type": "uint16" } ], "name": "FeePercentUpdated", "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": [], "name": "SetPairTypeImmutable", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "prevStableSwap", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "stableSwap", "type": "bool" } ], "name": "SetStableSwap", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Skim", "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": "uint112", "name": "reserve0", "type": "uint112" }, { "indexed": false, "internalType": "uint112", "name": "reserve1", "type": "uint112" } ], "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "constant": true, "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "FEE_DENOMINATOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MAX_FEE_PERCENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MINIMUM_LIQUIDITY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "drainWrongToken", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "address", "name": "tokenIn", "type": "address" } ], "name": "getAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint112", "name": "_reserve0", "type": "uint112" }, { "internalType": "uint112", "name": "_reserve1", "type": "uint112" }, { "internalType": "uint16", "name": "_token0FeePercent", "type": "uint16" }, { "internalType": "uint16", "name": "_token1FeePercent", "type": "uint16" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_token0", "type": "address" }, { "internalType": "address", "name": "_token1", "type": "address" } ], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "kLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "liquidity", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "pairTypeImmutable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "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": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "precisionMultiplier0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "precisionMultiplier1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint16", "name": "newToken0FeePercent", "type": "uint16" }, { "internalType": "uint16", "name": "newToken1FeePercent", "type": "uint16" } ], "name": "setFeePercent", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "setPairTypeImmutable", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bool", "name": "stable", "type": "bool" }, { "internalType": "uint112", "name": "expectedReserve0", "type": "uint112" }, { "internalType": "uint112", "name": "expectedReserve1", "type": "uint112" } ], "name": "setStableSwap", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "skim", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "stableSwap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "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": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "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" }, { "internalType": "address", "name": "referrer", "type": "address" } ], "name": "swap", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "sync", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token0FeePercent", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token1FeePercent", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" } ]
60806040526008805461ffff60e01b1916604b60e21b176001600160f01b0316604b60f21b1790556001600d5534801561003857600080fd5b5060405146908060526200482d8239604080519182900360520182208282018252600a835269043616d656c6f74204c560b41b6020938401528151808301835260018152603160f81b908401528151808401919091527fd76c82bc6723d724b871e570045a7319276e62ab33aa5923ccca28a79bbf7411818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055614703806200012a6000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80636a6278421161017b578063ba9a7a56116100d8578063d73792a91161008c578063f140a35a11610071578063f140a35a146108fc578063f39ac11f14610935578063fff6cae914610970576102c8565b8063d73792a9146108b9578063dd62ed3e146108c1576102c8565b8063c45a0155116100bd578063c45a01551461084b578063d21220a714610853578063d505accf1461085b576102c8565b8063ba9a7a5614610810578063bc25cf7714610818576102c8565b806389afcb441161012f5780639e548b7f116101145780639e548b7f146107c7578063a9059cbb146107cf578063b6200b0714610808576102c8565b806389afcb441461077357806395d89b41146107bf576102c8565b806370a082311161016057806370a08231146107055780637464fc3d146107385780637ecebe0014610740576102c8565b80636a627842146106235780636e1fdd7f14610656576102c8565b80633029e5d4116102295780633ba17077116101dd57806348e5d260116101c257806348e5d260146105ea57806362ecec031461061357806367d817401461061b576102c8565b80633ba17077146105a7578063485cc955146105af576102c8565b8063313ce5671161020e578063313ce567146105795780633644e515146105975780633b9f1dc01461059f576102c8565b80633029e5d41461053457806330adf81f14610571576102c8565b8063158ef93e1161028057806323b872dd1161026557806323b872dd146104ca578063288e5d021461050d5780632fcd169214610515576102c8565b8063158ef93e146104a857806318160ddd146104b0576102c8565b80630902f1ac116102b15780630902f1ac146103e5578063095ea7b31461042a5780630dfe168114610477576102c8565b8063022c0d9f146102cd57806306fdde0314610368575b600080fd5b610366600480360360808110156102e357600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561032757600080fd5b82018360208201111561033957600080fd5b8035906020019184600183028401116401000000008311171561035b57600080fd5b509092509050610978565b005b610370610a26565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103aa578181015183820152602001610392565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed610a5f565b604080516dffffffffffffffffffffffffffff958616815293909416602084015261ffff9182168385015216606082015290519081900360800190f35b6104636004803603604081101561044057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ad8565b604080519115158252519081900360200190f35b61047f610aef565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610463610b0b565b6104b8610b2c565b60408051918252519081900360200190f35b610463600480360360608110156104e057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610b32565b6104b8610c4e565b61051d610c54565b6040805161ffff9092168252519081900360200190f35b6103666004803603606081101561054a57600080fd5b5080351515906dffffffffffffffffffffffffffff60208201358116916040013516610c80565b6104b861101c565b610581611040565b6040805160ff9092168252519081900360200190f35b6104b8611045565b6104b861104b565b610366611051565b610366600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611250565b6103666004803603604081101561060057600080fd5b5061ffff81358116916020013516611499565b61051d611768565b6104b8611792565b6104b86004803603602081101561063957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611798565b610366600480360360a081101561066c57600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff60408301351691908101906080810160608201356401000000008111156106b057600080fd5b8201836020820111156106c257600080fd5b803590602001918460018302840111640100000000831117156106e457600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16611b23565b6104b86004803603602081101561071b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611bd4565b6104b8611be6565b6104b86004803603602081101561075657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611bec565b6107a66004803603602081101561078957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611bfe565b6040805192835260208301919091528051918290030190f35b610370612060565b610463612099565b610463600480360360408110156107e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356120a2565b6104636120af565b6104b86120bd565b6103666004803603602081101561082e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166120c3565b61047f6122c8565b61047f6122e4565b610366600480360360e081101561087157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612300565b6104b8612598565b6104b8600480360360408110156108d757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661259f565b6104b86004803603604081101561091257600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166125bc565b6103666004803603604081101561094b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661267f565b610366612966565b610980614494565b50604080516101008101825260065473ffffffffffffffffffffffffffffffffffffffff9081168252600754166020808301919091528183018890526060820187905260006080830181905260a0830181905260c0830181905260e08301528251601f85018290048202810182019093528383529091610a1e9183918791879087908190840183828082843760009201829052509250612b62915050565b505050505050565b6040518060400160405280600a81526020017f43616d656c6f74204c500000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169161ffff7c010000000000000000000000000000000000000000000000000000000082048116927e010000000000000000000000000000000000000000000000000000000000009092041690565b6000610ae53384846136cd565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60075474010000000000000000000000000000000000000000900460ff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610c385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152812054610bca908463ffffffff61373c16565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260026020908152604080832033808552908352928190208590558051858152905194955091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505b610c43848484613794565b5060015b9392505050565b600a5481565b6008547e01000000000000000000000000000000000000000000000000000000000000900461ffff1681565b600d54600114610cd7576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d55600554604080517ffc39026a000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163fc39026a91600480820192602092909190829003018186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6020811015610d7157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314610dc65760405162461bcd60e51b815260040180806020018281038252602a8152602001806146a5602a913960400191505060405180910390fd5b600c54610100900460ff1615610e23576040805162461bcd60e51b815260206004820152601660248201527f43616d656c6f74506169723a20696d6d757461626c6500000000000000000000604482015290519081900360640190fd5b600c5460ff1615158315151415610e81576040805162461bcd60e51b815260206004820152601660248201527f43616d656c6f74506169723a206e6f2075706461746500000000000000000000604482015290519081900360640190fd5b6008546dffffffffffffffffffffffffffff8381169116148015610ecb57506008546dffffffffffffffffffffffffffff8281166e01000000000000000000000000000090920416145b610f1c576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a206661696c656400000000000000000000000000604482015290519081900360640190fd5b600854600090610f51906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416613875565b600c546040805160ff90921615158252861515602083015280519293507fb6a86710bde53aa7fb1b3856279e2af5b476d53e2dd0902cf17a0911b5a43a8b92918290030190a1600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685158015919091179091558490610fd15750805b610fdc57600061100e565b60085461100e906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416613a6f565b600b5550506001600d555050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60095481565b600d546001146110a8576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d55600554604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691638da5cb5b91600480820192602092909190829003018186803b15801561111857600080fd5b505afa15801561112c573d6000803e3d6000fd5b505050506040513d602081101561114257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1633146111975760405162461bcd60e51b81526004018080602001828103825260218152602001806145e66021913960400191505060405180910390fd5b600c54610100900460ff16156111f4576040805162461bcd60e51b815260206004820152601e60248201527f43616d656c6f74506169723a20616c726561647920696d6d757461626c650000604482015290519081900360640190fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556040517f09122c41ae733a4d7740324d50e35fbd6ee85be3c1312a45596d8045150ab2f290600090a16001600d55565b60055473ffffffffffffffffffffffffffffffffffffffff1633148015611292575060075474010000000000000000000000000000000000000000900460ff16155b6112e3576040805162461bcd60e51b815260206004820152601660248201527f43616d656c6f74506169723a20464f5242494444454e00000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8085167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556007805491851691909216179055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce56791600480820192602092909190829003018186803b15801561138557600080fd5b505afa158015611399573d6000803e3d6000fd5b505050506040513d60208110156113af57600080fd5b505160ff16600a0a600955604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff83169163313ce567916004808301926020929190829003018186803b15801561142057600080fd5b505afa158015611434573d6000803e3d6000fd5b505050506040513d602081101561144a57600080fd5b505160ff16600a90810a90555050600780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b600d546001146114f0576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d55600554604080517f4c217715000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634c21771591600480820192602092909190829003018186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d602081101561158a57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1633146115df5760405162461bcd60e51b815260040180806020018281038252602a815260200180614651602a913960400191505060405180910390fd5b6107d08261ffff16111580156115fb57506107d08161ffff1611155b6116365760405162461bcd60e51b815260040180806020018281038252603281526020018061455c6032913960400191505060405180910390fd5b60008261ffff1611801561164e575060008161ffff16115b6116895760405162461bcd60e51b81526004018080602001828103825260328152602001806145b46032913960400191505060405180910390fd5b600880547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff858116918202929092177dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000009285169283021790925560408051928352602083019190915280517fa4877b8ecb5a00ba277e4bceeeb187a669e7113649774dfbea05c259ce27f17b9281900390910190a150506001600d55565b6008547c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b6107d081565b6000600d546001146117f1576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d81905580611801610a5f565b5050600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b50519050600061196f836dffffffffffffffffffffffffffff871663ffffffff61373c16565b90506000611993836dffffffffffffffffffffffffffff871663ffffffff61373c16565b905060006119a18787613875565b600054909150806119ea576119d66103e86119ca6119c5878763ffffffff613b8516565b613bf1565b9063ffffffff61373c16565b98506119e560006103e8613c43565b611a47565b611a446dffffffffffffffffffffffffffff8916611a0e868463ffffffff613b8516565b81611a1557fe5b046dffffffffffffffffffffffffffff8916611a37868563ffffffff613b8516565b81611a3e57fe5b04613cf3565b98505b60008911611a865760405162461bcd60e51b815260040180806020018281038252602a815260200180614506602a913960400191505060405180910390fd5b611a908a8a613c43565b611a9a8686613d09565b8115611ad657600854611ad2906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416613a6f565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d5550949695505050505050565b611b2b614494565b50604080516101008101825260065473ffffffffffffffffffffffffffffffffffffffff9081168252600754166020808301919091528183018990526060820188905260006080830181905260a0830181905260c0830181905260e08301528251601f86018290048202810182019093528483529091611bcb91839188918890889081908401838280828437600092019190915250889250612b62915050565b50505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d54600114611c58576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d81905580611c68610a5f565b5050600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b158015611ceb57600080fd5b505afa158015611cff573d6000803e3d6000fd5b505050506040513d6020811015611d1557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b505130600090815260016020526040812054919250611dd28888613875565b60005490915080611de9848763ffffffff613b8516565b81611df057fe5b049a5080611e04848663ffffffff613b8516565b81611e0b57fe5b04995060008b118015611e1e575060008a115b611e595760405162461bcd60e51b815260040180806020018281038252602a81526020018061467b602a913960400191505060405180910390fd5b611e633084613e3d565b611e6e878d8d613f02565b611e79868d8c613f02565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b158015611ee557600080fd5b505afa158015611ef9573d6000803e3d6000fd5b505050506040513d6020811015611f0f57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b158015611f8157600080fd5b505afa158015611f95573d6000803e3d6000fd5b505050506040513d6020811015611fab57600080fd5b50519350611fb98585613d09565b8115611ff557600854611ff1906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416613a6f565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600d81905550915091565b6040518060400160405280600781526020017f434d4c542d4c500000000000000000000000000000000000000000000000000081525081565b600c5460ff1681565b6000610ae5338484613794565b600c54610100900460ff1681565b6103e881565b600d5460011461211a576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926121f692859287926121f1926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156121b957600080fd5b505afa1580156121cd573d6000803e3d6000fd5b505050506040513d60208110156121e357600080fd5b50519063ffffffff61373c16565b613f02565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161229592849287926121f1926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156121b957600080fd5b6040517f21ad22495c9c75cd1c94756f91824e779c0c8a8e168b267c790df464fe056b7990600090a150506001600d5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015612355576040805162461bcd60e51b815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156124b6573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061253157508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612582576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61258d8989896136cd565b505050505050505050565b620186a081565b600260209081526000928352604080842090915290825290205481565b600654600090819073ffffffffffffffffffffffffffffffffffffffff848116911614612611576008547e01000000000000000000000000000000000000000000000000000000000000900461ffff16612639565b6008547c0100000000000000000000000000000000000000000000000000000000900461ffff165b60085490915061267790859085906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661ffff86166140f5565b949350505050565b600d546001146126d6576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d55600554604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691638da5cb5b91600480820192602092909190829003018186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d602081101561277057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1633146127c55760405162461bcd60e51b81526004018080602001828103825260218152602001806145e66021913960400191505060405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff83811691161480159061280b575060075473ffffffffffffffffffffffffffffffffffffffff838116911614155b61285c576040805162461bcd60e51b815260206004820152601a60248201527f43616d656c6f74506169723a20696e76616c696420746f6b656e000000000000604482015290519081900360640190fd5b61290f82828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128de57600080fd5b505afa1580156128f2573d6000803e3d6000fd5b505050506040513d602081101561290857600080fd5b5051613f02565b6040805173ffffffffffffffffffffffffffffffffffffffff83811682529151918416917f368a9dc863ecb94b5ba32a682e26295b10d9c2666fad7d785ebdf262c3c524139181900360200190a250506001600d55565b600d546001146129bd576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d819055600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015612a3557600080fd5b505afa158015612a49573d6000803e3d6000fd5b505050506040513d6020811015612a5f57600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015612ad857600080fd5b505afa158015612aec573d6000803e3d6000fd5b505050506040513d6020811015612b0257600080fd5b505190508115801590612b1457508015155b612b4f5760405162461bcd60e51b815260040180806020018281038252602c815260200180614530602c913960400191505060405180910390fd5b612b598282613d09565b50506001600d55565b600d54600114612bb9576040805162461bcd60e51b815260206004820152601360248201527f43616d656c6f74506169723a204c4f434b454400000000000000000000000000604482015290519081900360640190fd5b6000600d556040840151151580612bd4575060008460600151115b612c0f5760405162461bcd60e51b815260040180806020018281038252602781526020018061462a6027913960400191505060405180910390fd5b600080600080612c1d610a5f565b9350935093509350836dffffffffffffffffffffffffffff168860400151108015612c5b5750826dffffffffffffffffffffffffffff168860600151105b612c965760405162461bcd60e51b81526004018080602001828103825260238152602001806146076023913960400191505060405180910390fd5b875173ffffffffffffffffffffffffffffffffffffffff888116911614801590612cf05750876020015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b612d41576040805162461bcd60e51b815260206004820152601760248201527f43616d656c6f74506169723a20494e56414c49445f544f000000000000000000604482015290519081900360640190fd5b604088015115612d5e57612d5e8860000151888a60400151613f02565b606088015115612d7b57612d7b8860200151888a60600151613f02565b855115612e9c578673ffffffffffffffffffffffffffffffffffffffff166310d1e85c338a604001518b606001518a6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612e34578181015183820152602001612e1c565b50505050905090810190601f168015612e615780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505050505b8751604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015612f0c57600080fd5b505afa158015612f20573d6000803e3d6000fd5b505050506040513d6020811015612f3657600080fd5b50516080890152602088810151604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216926370a0823192602480840193829003018186803b158015612fab57600080fd5b505afa158015612fbf573d6000803e3d6000fd5b505050506040513d6020811015612fd557600080fd5b505160a0890152604088015160808901516000916dffffffffffffffffffffffffffff87160310613007576000613025565b8860400151856dffffffffffffffffffffffffffff16038960800151035b905060008960600151856dffffffffffffffffffffffffffff16038a60a001511161305157600061306f565b8960600151856dffffffffffffffffffffffffffff16038a60a00151035b905060008211806130805750600081115b6130bb5760405162461bcd60e51b815260040180806020018281038252602681526020018061458e6026913960400191505060405180910390fd5b620186a06130d38361ffff871663ffffffff613b8516565b816130da57fe5b0460c08b0152620186a06130f88261ffff861663ffffffff613b8516565b816130ff57fe5b0460e08b015260008073ffffffffffffffffffffffffffffffffffffffff891661312a5760006131ca565b600554604080517f7183d47c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015291519190921691637183d47c916024808301926020929190829003018186803b15801561319d57600080fd5b505afa1580156131b1573d6000803e3d6000fd5b505050506040513d60208110156131c757600080fd5b50515b9050801561328f578315613235576402540be40061320261ffff88166131f6878563ffffffff613b8516565b9063ffffffff613b8516565b8161320957fe5b049150613223828d60c0015161373c90919063ffffffff16565b60c08d01528b51613235908a84613f02565b821561328f576402540be40061325961ffff87166131f6868563ffffffff613b8516565b8161326057fe5b04915061327a828d60e0015161373c90919063ffffffff16565b60e08d015260208c015161328f908a84613f02565b600c5460ff161561342a57600554604080517f995b5aae0000000000000000000000000000000000000000000000000000000081528151600093849373ffffffffffffffffffffffffffffffffffffffff9091169263995b5aae9260048083019392829003018186803b15801561330557600080fd5b505afa158015613319573d6000803e3d6000fd5b505050506040513d604081101561332f57600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff81161561342757613370826131f6620186a08663ffffffff61373c16565b915085156133cb5766038d7ea4c6800061339861ffff8a166131f6898663ffffffff613b8516565b8161339f57fe5b0493506133b9848f60c0015161373c90919063ffffffff16565b60c08f01528d516133cb908286613f02565b84156134275766038d7ea4c680006133f161ffff89166131f6888663ffffffff613b8516565b816133f857fe5b049350613412848f60e0015161373c90919063ffffffff16565b60e08f015260208e0151613427908286613f02565b50505b83156134d2578b51604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156134a057600080fd5b505afa1580156134b4573d6000803e3d6000fd5b505050506040513d60208110156134ca57600080fd5b505160808d01525b8215613578576020808d0151604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216926370a0823192602480840193829003018186803b15801561354657600080fd5b505afa15801561355a573d6000803e3d6000fd5b505050506040513d602081101561357057600080fd5b505160a08d01525b505060006135978b60c001518c6080015161373c90919063ffffffff16565b905060006135b68c60e001518d60a0015161373c90919063ffffffff16565b90506135e2886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16613a6f565b6135ec8383613a6f565b101561363f576040805162461bcd60e51b815260206004820152600e60248201527f43616d656c6f74506169723a204b000000000000000000000000000000000000604482015290519081900360640190fd5b50506136538a608001518b60a00151613d09565b6040808b01516060808d01518351868152602081018690528085019390935290820152905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d555050505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610ae9576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546137ca908263ffffffff61373c16565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461380c908263ffffffff6142f716565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600c5460009060ff161561388b57506000610ae9565b600554604080517f995b5aae0000000000000000000000000000000000000000000000000000000081528151600093849373ffffffffffffffffffffffffffffffffffffffff9091169263995b5aae9260048083019392829003018186803b1580156138f657600080fd5b505afa15801561390a573d6000803e3d6000fd5b505050506040513d604081101561392057600080fd5b508051602090910151600b5473ffffffffffffffffffffffffffffffffffffffff8216158015965092945090925090613a5a578015613a555760006139886119c5886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16613a6f565b9050600061399583613bf1565b905080821115613a525760006139ce6064876139ba620186a08363ffffffff613b8516565b816139c157fe5b049063ffffffff61373c16565b905060006139f960646131f66139ea878763ffffffff61373c16565b6000549063ffffffff613b8516565b90506000613a2d613a1185606463ffffffff613b8516565b613a21878663ffffffff613b8516565b9063ffffffff6142f716565b90506000818381613a3a57fe5b0490508015613a4d57613a4d8882613c43565b505050505b50505b613a66565b8015613a66576000600b555b50505092915050565b600c5460009060ff1615613b7557600954600090613a9b85670de0b6b3a764000063ffffffff613b8516565b81613aa257fe5b0490506000600a54613ac5670de0b6b3a764000086613b8590919063ffffffff16565b81613acc57fe5b0490506000670de0b6b3a7640000613aea848463ffffffff613b8516565b81613af157fe5b0490506000613b47670de0b6b3a7640000613b12858063ffffffff613b8516565b81613b1957fe5b04670de0b6b3a7640000613b33878063ffffffff613b8516565b81613b3a57fe5b049063ffffffff6142f716565b9050670de0b6b3a7640000613b62838363ffffffff613b8516565b81613b6957fe5b04945050505050610ae9565b610c47838363ffffffff613b8516565b6000811580613ba057505080820282828281613b9d57fe5b04145b610ae9576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60006003821115613c34575080600160028204015b81811015613c2e57809150600281828581613c1d57fe5b040181613c2657fe5b049050613c06565b50613c3e565b8115613c3e575060015b919050565b600054613c56908263ffffffff6142f716565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054613c8e908263ffffffff6142f716565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310613d025781610c47565b5090919050565b6dffffffffffffffffffffffffffff8211801590613d3557506dffffffffffffffffffffffffffff8111155b613d86576040805162461bcd60e51b815260206004820152601560248201527f43616d656c6f74506169723a204f564552464c4f570000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff8481169182177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000009185169182021790925560408051918252602082019290925281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a15050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054613e73908263ffffffff61373c16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554613ead908263ffffffff61373c16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061400857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613fcb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461406a576040519150601f19603f3d011682016040523d82523d6000602084013e61406f565b606091505b509150915081801561409d57508051158061409d575080806020019051602081101561409a57600080fd5b50515b6140ee576040805162461bcd60e51b815260206004820152601c60248201527f43616d656c6f74506169723a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b600c5460009060ff161561425f57614130620186a061411a888563ffffffff613b8516565b8161412157fe5b8891900463ffffffff61373c16565b9550600061413e8585613a6f565b905060095485670de0b6b3a7640000028161415557fe5b049450600a5484670de0b6b3a7640000028161416d57fe5b6006549190049450600090819073ffffffffffffffffffffffffffffffffffffffff8981169116146141a05785876141a3565b86865b600654919350915073ffffffffffffffffffffffffffffffffffffffff8981169116146141e557600a5489670de0b6b3a764000002816141df57fe5b046141fc565b60095489670de0b6b3a764000002816141fa57fe5b045b9850600061420d838b01858461434f565b6006549083039150670de0b6b3a76400009073ffffffffffffffffffffffffffffffffffffffff8b81169116146142465760095461424a565b600a545b82028161425357fe5b049450505050506142ee565b600654600090819073ffffffffffffffffffffffffffffffffffffffff88811691161461428d578486614290565b85855b90925090506142b86142ab620186a08663ffffffff61373c16565b899063ffffffff613b8516565b97506142d188613a2184620186a063ffffffff613b8516565b6142e1898363ffffffff613b8516565b816142e857fe5b04925050505b95945050505050565b80820182811015610ae9576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000805b60ff811015614407578260006143698783614410565b90508581101561439f57600061437f8887614460565b828803670de0b6b3a7640000028161439357fe5b049590950194506143c6565b60006143ab8887614460565b878303670de0b6b3a764000002816143bf57fe5b0490950394505b818511156143e8576001828603116143e357849350505050610c47565b6143fd565b6001858303116143fd57849350505050610c47565b5050600101614353565b50909392505050565b6000670de0b6b3a76400008281858181800204028161442b57fe5b04028161443457fe5b04670de0b6b3a764000080848181800204028161444d57fe5b0485028161445757fe5b04019392505050565b6000670de0b6b3a7640000838181800204028161447957fe5b04670de0b6b3a7640000808480020485600302028161445757fe5b604051806101000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe43616d656c6f74506169723a20494e53554646494349454e545f4c49515549444954595f4d494e54454443616d656c6f74506169723a206c697175696469747920726174696f206e6f7420696e697469616c697a656443616d656c6f74506169723a2066656550657263656e74206d7573746e27742065786365656420746865206d6178696d756d43616d656c6f74506169723a20494e53554646494349454e545f494e5055545f414d4f554e5443616d656c6f74506169723a2066656550657263656e74206d7573746e27742065786365656420746865206d696e696d756d43616d656c6f74506169723a206f6e6c7920666163746f72792773206f776e657243616d656c6f74506169723a20494e53554646494349454e545f4c495155494449545943616d656c6f74506169723a20494e53554646494349454e545f4f55545055545f414d4f554e5443616d656c6f74506169723a206f6e6c7920666163746f7279277320666565416d6f756e744f776e657243616d656c6f74506169723a20494e53554646494349454e545f4c49515549444954595f4255524e454443616d656c6f74506169723a206f6e6c7920666163746f7279277320736574537461626c654f776e6572a265627a7a72315820d6868f76d541cb84d0c224b1be1388c0971c18c95b39ca8a329adc990b47658364736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429