[ { "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": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EnabledTrading", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_address", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "MaxTransactionExclusion", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "OwnerForcedSwapBack", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RemovedLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferForeignToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxBuyAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxSellAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxWalletAmount", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "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": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buymarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "dexRouter", "outputs": [ { "internalType": "contract IDexRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransaction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "forceSwapBack", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBuyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSellAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWalletAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellmarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensFormarketing", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "transferForeignToken", "outputs": [ { "internalType": "bool", "name": "_sent", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" } ], "name": "updateBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxBuyAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxSellAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" } ], "name": "updateSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawStuckETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526001600d60146101000a81548160ff0219169083151502179055505f600d60156101000a81548160ff0219169083151502179055505f600d60166101000a81548160ff0219169083151502179055503480156200005f575f80fd5b506040518060400160405280600381526020017f70757000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f24707570000000000000000000000000000000000000000000000000000000008152508160039081620000dd919062000e0c565b508060049081620000ef919062000e0c565b5050505f62000103620005fb60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000f55565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000f55565b6040518363ffffffff1660e01b81526004016200031792919062000f96565b6020604051808303815f875af115801562000334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035a919062000f55565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003cd600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200060260201b60201c565b62000401600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200069560201b60201c565b5f69d3c21bcecceda100000090506064816200041e91906200101b565b6006819055506064816200043391906200101b565b6007819055506064816200044891906200101b565b60088190555060c8816200045d91906200101b565b600b81905550601e600f819055505f601081905550601054600f5462000484919062001052565b600e8190555060326012819055505f601381905550601354601254620004ab919062001052565b601181905550620004c48360016200060260201b60201c565b620004d73060016200060260201b60201c565b620004ec61dead60016200060260201b60201c565b620004ff8360016200074560201b60201c565b620005123060016200074560201b60201c565b6200052761dead60016200074560201b60201c565b73be90a7451cc1dcec5471c0a439c2c1831da5d4e1600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507314cb44d3796d2caf1b0143e663c2e18da7a0d56c600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e183826200088e60201b60201c565b620005f283620009d860201b60201c565b5050506200129a565b5f33905090565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405162000689929190620010a8565b60405180910390a15050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006fb82826200060260201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000755620005fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007dd9062001131565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000882919062001151565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f690620011ba565b60405180910390fd5b8060025f82825462000912919062001052565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000966919062001052565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009cc9190620011eb565b60405180910390a35050565b620009e8620005fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a709062001131565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae1906200127a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c2457607f821691505b60208210810362000c3a5762000c3962000bdf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c61565b62000caa868362000c61565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000cf462000cee62000ce88462000cc2565b62000ccb565b62000cc2565b9050919050565b5f819050919050565b62000d0f8362000cd4565b62000d2762000d1e8262000cfb565b84845462000c6d565b825550505050565b5f90565b62000d3d62000d2f565b62000d4a81848462000d04565b505050565b5b8181101562000d715762000d655f8262000d33565b60018101905062000d50565b5050565b601f82111562000dc05762000d8a8162000c40565b62000d958462000c52565b8101602085101562000da5578190505b62000dbd62000db48562000c52565b83018262000d4f565b50505b505050565b5f82821c905092915050565b5f62000de25f198460080262000dc5565b1980831691505092915050565b5f62000dfc838362000dd1565b9150826002028217905092915050565b62000e178262000ba8565b67ffffffffffffffff81111562000e335762000e3262000bb2565b5b62000e3f825462000c0c565b62000e4c82828562000d75565b5f60209050601f83116001811462000e82575f841562000e6d578287015190505b62000e79858262000def565b86555062000ee8565b601f19841662000e928662000c40565b5f5b8281101562000ebb5784890151825560018201915060208501945060208101905062000e94565b8683101562000edb578489015162000ed7601f89168262000dd1565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f1f8262000ef4565b9050919050565b62000f318162000f13565b811462000f3c575f80fd5b50565b5f8151905062000f4f8162000f26565b92915050565b5f6020828403121562000f6d5762000f6c62000ef0565b5b5f62000f7c8482850162000f3f565b91505092915050565b62000f908162000f13565b82525050565b5f60408201905062000fab5f83018562000f85565b62000fba602083018462000f85565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010278262000cc2565b9150620010348362000cc2565b92508262001047576200104662000fc1565b5b828204905092915050565b5f6200105e8262000cc2565b91506200106b8362000cc2565b925082820190508082111562001086576200108562000fee565b5b92915050565b5f8115159050919050565b620010a2816200108c565b82525050565b5f604082019050620010bd5f83018562000f85565b620010cc602083018462001097565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001119602083620010d3565b91506200112682620010e3565b602082019050919050565b5f6020820190508181035f8301526200114a816200110b565b9050919050565b5f602082019050620011665f83018462001097565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620011a2601f83620010d3565b9150620011af826200116c565b602082019050919050565b5f6020820190508181035f830152620011d38162001194565b9050919050565b620011e58162000cc2565b82525050565b5f602082019050620012005f830184620011da565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62001262602683620010d3565b91506200126f8262001206565b604082019050919050565b5f6020820190508181035f830152620012938162001254565b9050919050565b61514c80620012a85f395ff3fe60806040526004361061028b575f3560e01c80637571336a11610159578063bbc0c742116100c0578063dd62ed3e11610079578063dd62ed3e14610990578063e2f45605146109cc578063f11a24d3146109f6578063f2fde38b14610a20578063f5648a4f14610a48578063f637434214610a5e57610292565b8063bbc0c7421461089c578063c0246668146108c6578063c18bc195146108ee578063d257b34f14610916578063d85ba0631461093e578063dc3f0d0f1461096857610292565b80639a7a23d6116101125780639a7a23d61461076c578063a184e6dc14610794578063a457c2d7146107be578063a9059cbb146107fa578063aa4bde2814610836578063b62496f51461086057610292565b80637571336a146106745780638366e79a1461069c57806388e765ff146106d85780638a8c523c146107025780638da5cb5b1461071857806395d89b411461074257610292565b8063313ce567116101fd57806366d602ae116101b657806366d602ae1461058e5780636a486a8e146105b85780636ddd1713146105e257806370a082311461060c578063715018a614610648578063751039fc1461065e57610292565b8063313ce5671461049657806339509351146104c0578063452ed4f1146104fc5780634a62bb651461052657806351f205e41461055057806366ca9b831461056657610292565b806318160ddd1161024f57806318160ddd1461038a57806318d213e2146103b457806319466ebe146103de5780631a8145bb1461040857806323b872dd146104325780632be32b611461046e57610292565b806302dbd8f81461029657806306fdde03146102be5780630758d924146102e8578063095ea7b31461031257806310d5de531461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102bc60048036038101906102b79190613b46565b610a88565b005b3480156102c9575f80fd5b506102d2610b46565b6040516102df9190613c0e565b60405180910390f35b3480156102f3575f80fd5b506102fc610bd6565b6040516103099190613ca8565b60405180910390f35b34801561031d575f80fd5b5061033860048036038101906103339190613cfc565b610bfb565b6040516103459190613d54565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190613d6d565b610c18565b6040516103819190613d54565b60405180910390f35b348015610395575f80fd5b5061039e610c35565b6040516103ab9190613da7565b60405180910390f35b3480156103bf575f80fd5b506103c8610c3e565b6040516103d59190613da7565b60405180910390f35b3480156103e9575f80fd5b506103f2610c44565b6040516103ff9190613da7565b60405180910390f35b348015610413575f80fd5b5061041c610c4a565b6040516104299190613da7565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190613dc0565b610c50565b6040516104659190613d54565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613e10565b610d42565b005b3480156104a1575f80fd5b506104aa610e97565b6040516104b79190613e56565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190613cfc565b610e9f565b6040516104f39190613d54565b60405180910390f35b348015610507575f80fd5b50610510610f46565b60405161051d9190613e7e565b60405180910390f35b348015610531575f80fd5b5061053a610f6b565b6040516105479190613d54565b60405180910390f35b34801561055b575f80fd5b50610564610f7e565b005b348015610571575f80fd5b5061058c60048036038101906105879190613b46565b611125565b005b348015610599575f80fd5b506105a26111e3565b6040516105af9190613da7565b60405180910390f35b3480156105c3575f80fd5b506105cc6111e9565b6040516105d99190613da7565b60405180910390f35b3480156105ed575f80fd5b506105f66111ef565b6040516106039190613d54565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190613d6d565b611202565b60405161063f9190613da7565b60405180910390f35b348015610653575f80fd5b5061065c611247565b005b348015610669575f80fd5b5061067261139a565b005b34801561067f575f80fd5b5061069a60048036038101906106959190613ec1565b611478565b005b3480156106a7575f80fd5b506106c260048036038101906106bd9190613eff565b6115fb565b6040516106cf9190613d54565b60405180910390f35b3480156106e3575f80fd5b506106ec611838565b6040516106f99190613da7565b60405180910390f35b34801561070d575f80fd5b5061071661183e565b005b348015610723575f80fd5b5061072c611988565b6040516107399190613e7e565b60405180910390f35b34801561074d575f80fd5b506107566119b0565b6040516107639190613c0e565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d9190613ec1565b611a40565b005b34801561079f575f80fd5b506107a8611bb9565b6040516107b59190613da7565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df9190613cfc565b611bbf565b6040516107f19190613d54565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613cfc565b611ca5565b60405161082d9190613d54565b60405180910390f35b348015610841575f80fd5b5061084a611cc2565b6040516108579190613da7565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190613d6d565b611cc8565b6040516108939190613d54565b60405180910390f35b3480156108a7575f80fd5b506108b0611ce5565b6040516108bd9190613d54565b60405180910390f35b3480156108d1575f80fd5b506108ec60048036038101906108e79190613ec1565b611cf8565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613e10565b611e34565b005b348015610921575f80fd5b5061093c60048036038101906109379190613e10565b611f89565b005b348015610949575f80fd5b506109526120d7565b60405161095f9190613da7565b60405180910390f35b348015610973575f80fd5b5061098e60048036038101906109899190613e10565b6120dd565b005b34801561099b575f80fd5b506109b660048036038101906109b19190613eff565b612232565b6040516109c39190613da7565b60405180910390f35b3480156109d7575f80fd5b506109e06122b4565b6040516109ed9190613da7565b60405180910390f35b348015610a01575f80fd5b50610a0a6122ba565b604051610a179190613da7565b60405180910390f35b348015610a2b575f80fd5b50610a466004803603810190610a419190613d6d565b6122c0565b005b348015610a53575f80fd5b50610a5c612482565b005b348015610a69575f80fd5b50610a72612585565b604051610a7f9190613da7565b60405180910390f35b610a9061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590613f87565b60405180910390fd5b8160128190555080601381905550601354601254610b3c9190613fd2565b6011819055505050565b606060038054610b5590614032565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190614032565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c0e610c0761258b565b8484612592565b6001905092915050565b6017602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b600f5481565b60145481565b60155481565b5f610c5c848484612755565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ca361258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d19906140d2565b60405180910390fd5b610d3685610d2e61258b565b858403612592565b60019150509392505050565b610d4a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90613f87565b60405180910390fd5b670de0b6b3a76400006064610deb610c35565b610df5919061411d565b610dff919061411d565b811015610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906141bd565b60405180910390fd5b670de0b6b3a764000081610e5591906141db565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610e8c9190613da7565b60405180910390a150565b5f6012905090565b5f610f3c610eab61258b565b848460015f610eb861258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f379190613fd2565b612592565b6001905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b5f610f8830611202565b1015610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090614266565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110705750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906142ce565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506110d261320e565b5f600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb324260405161111b9190613da7565b60405180910390a1565b61112d61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613f87565b60405180910390fd5b81600f8190555080601081905550601054600f546111d99190613fd2565b600e819055505050565b60075481565b60115481565b600d60169054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61124f61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113a261258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613f87565b60405180910390fd5b5f600d60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61148061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613f87565b60405180910390fd5b806115a357600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115999061435c565b60405180910390fd5b5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61160461258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f7906143c4565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161173a9190613e7e565b602060405180830381865afa158015611755573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177991906143f6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016117b6929190614421565b6020604051808303815f875af11580156117d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f6919061445c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611829929190614421565b60405180910390a15092915050565b60065481565b61184661258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613f87565b60405180910390fd5b600d60159054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b906144d1565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119bf90614032565b80601f01602080910402602001604051908101604052809291908181526020018280546119eb90614032565b8015611a365780601f10611a0d57610100808354040283529160200191611a36565b820191905f5260205f20905b815481529060010190602001808311611a1957829003601f168201915b5050505050905090565b611a4861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613f87565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061455f565b60405180910390fd5b611b6f8282613466565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60125481565b5f8060015f611bcc61258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906145ed565b60405180910390fd5b611c9a611c9161258b565b85858403612592565b600191505092915050565b5f611cb8611cb161258b565b8484612755565b6001905092915050565b60085481565b6018602052805f5260405f205f915054906101000a900460ff1681565b600d60159054906101000a900460ff1681565b611d0061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613f87565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e289190613d54565b60405180910390a25050565b611e3c61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613f87565b60405180910390fd5b670de0b6b3a76400006064611edd610c35565b611ee7919061411d565b611ef1919061411d565b811015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061467b565b60405180910390fd5b670de0b6b3a764000081611f4791906141db565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611f7e9190613da7565b60405180910390a150565b611f9161258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613f87565b60405180910390fd5b620186a061202b610c35565b612035919061411d565b811015612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90614709565b60405180910390fd5b6064612081610c35565b61208b919061411d565b8111156120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490614797565b60405180910390fd5b80600b8190555050565b600e5481565b6120e561258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613f87565b60405180910390fd5b670de0b6b3a76400006064612186610c35565b612190919061411d565b61219a919061411d565b8110156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d390614825565b60405180910390fd5b670de0b6b3a7640000816121f091906141db565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516122279190613da7565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60105481565b6122c861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb906148b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61248a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f90613f87565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161253d906148fe565b5f6040518083038185875af1925050503d805f8114612577576040519150601f19603f3d011682016040523d82523d5f602084013e61257c565b606091505b50508091505050565b60135481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614982565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266590614a10565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127489190613da7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890614b2c565b60405180910390fd5b5f8111612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a90614b94565b60405180910390fd5b600d60159054906101000a900460ff166129625760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612922575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890614bfc565b60405180910390fd5b5b600d60149054906101000a900460ff1615612de55761297f611988565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ed57506129bd611988565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a5f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab2575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b05575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612de45760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ba7575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c4e57600654811115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614c8a565b60405180910390fd5b600854612bfd83611202565b82612c089190613fd2565b1115612c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4090614cf2565b60405180910390fd5b612de3565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ceb575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d3a57600754811115612d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2c90614d80565b60405180910390fd5b612de2565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612de157600854612d9483611202565b82612d9f9190613fd2565b1115612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd790614cf2565b60405180910390fd5b5b5b5b5b5b5f612def30611202565b90505f600b548210159050808015612e135750600d60169054906101000a900460ff165b8015612e2c5750600a60149054906101000a900460ff16155b8015612e7f575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ed2575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f25575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f68576001600a60146101000a81548160ff021916908315150217905550612f4d61320e565b5f600a60146101000a81548160ff0219169083151502179055505b5f6001905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613008575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613011575f90505b5f81156131fa5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561306f57505f601154115b156130f95760646011548661308491906141db565b61308e919061411d565b9050601154601354826130a191906141db565b6130ab919061411d565b60155f8282546130bb9190613fd2565b92505081905550601154601254826130d391906141db565b6130dd919061411d565b60145f8282546130ed9190613fd2565b925050819055506131d7565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561315057505f600e54115b156131d6576064600e548661316591906141db565b61316f919061411d565b9050600e546010548261318291906141db565b61318c919061411d565b60155f82825461319c9190613fd2565b92505081905550600e54600f54826131b491906141db565b6131be919061411d565b60145f8282546131ce9190613fd2565b925050819055505b5b5f8111156131eb576131ea87308361350e565b5b80856131f79190614d9e565b94505b61320587878761350e565b50505050505050565b5f61321830611202565b90505f60145460155461322b9190613fd2565b90505f82148061323a57505f81145b15613246575050613464565b600a600b5461325591906141db565b82111561326e57600a600b5461326b91906141db565b91505b5f806002836015548661328191906141db565b61328b919061411d565b613295919061411d565b90506132ab81856132a69190614d9e565b61376d565b5f4790505f8190505f60026015546132c3919061411d565b866132ce9190614d9e565b601454846132dc91906141db565b6132e6919061411d565b905080826132f49190614d9e565b91505f6015819055505f6014819055505f8411801561331257505f82115b156133225761332184836139a3565b5b5f47111561345c575f600547600461333a91906141db565b613344919061411d565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161338b906148fe565b5f6040518083038185875af1925050503d805f81146133c5576040519150601f19603f3d011682016040523d82523d5f602084013e6133ca565b606091505b505080965050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613415906148fe565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050505b505050505050505b565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506134c48282613a7e565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361357c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357390614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e190614b2c565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561366d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366490614e41565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136fb9190613fd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161375f9190613da7565b60405180910390a350505050565b5f600267ffffffffffffffff81111561378957613788614e5f565b5b6040519080825280602002602001820160405280156137b75781602001602082028036833780820191505090505b50905030815f815181106137ce576137cd614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613872573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138969190614ecd565b816001815181106138aa576138a9614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139103060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613972959493929190614fe8565b5f604051808303815f87803b158015613989575f80fd5b505af115801561399b573d5f803e3d5ffd5b505050505050565b6139cf3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401613a3696959493929190615040565b60606040518083038185885af1158015613a52573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613a77919061509f565b5050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613b039291906150ef565b60405180910390a15050565b5f80fd5b5f819050919050565b613b2581613b13565b8114613b2f575f80fd5b50565b5f81359050613b4081613b1c565b92915050565b5f8060408385031215613b5c57613b5b613b0f565b5b5f613b6985828601613b32565b9250506020613b7a85828601613b32565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613bbb578082015181840152602081019050613ba0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613be082613b84565b613bea8185613b8e565b9350613bfa818560208601613b9e565b613c0381613bc6565b840191505092915050565b5f6020820190508181035f830152613c268184613bd6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613c70613c6b613c6684613c2e565b613c4d565b613c2e565b9050919050565b5f613c8182613c56565b9050919050565b5f613c9282613c77565b9050919050565b613ca281613c88565b82525050565b5f602082019050613cbb5f830184613c99565b92915050565b5f613ccb82613c2e565b9050919050565b613cdb81613cc1565b8114613ce5575f80fd5b50565b5f81359050613cf681613cd2565b92915050565b5f8060408385031215613d1257613d11613b0f565b5b5f613d1f85828601613ce8565b9250506020613d3085828601613b32565b9150509250929050565b5f8115159050919050565b613d4e81613d3a565b82525050565b5f602082019050613d675f830184613d45565b92915050565b5f60208284031215613d8257613d81613b0f565b5b5f613d8f84828501613ce8565b91505092915050565b613da181613b13565b82525050565b5f602082019050613dba5f830184613d98565b92915050565b5f805f60608486031215613dd757613dd6613b0f565b5b5f613de486828701613ce8565b9350506020613df586828701613ce8565b9250506040613e0686828701613b32565b9150509250925092565b5f60208284031215613e2557613e24613b0f565b5b5f613e3284828501613b32565b91505092915050565b5f60ff82169050919050565b613e5081613e3b565b82525050565b5f602082019050613e695f830184613e47565b92915050565b613e7881613cc1565b82525050565b5f602082019050613e915f830184613e6f565b92915050565b613ea081613d3a565b8114613eaa575f80fd5b50565b5f81359050613ebb81613e97565b92915050565b5f8060408385031215613ed757613ed6613b0f565b5b5f613ee485828601613ce8565b9250506020613ef585828601613ead565b9150509250929050565b5f8060408385031215613f1557613f14613b0f565b5b5f613f2285828601613ce8565b9250506020613f3385828601613ce8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f71602083613b8e565b9150613f7c82613f3d565b602082019050919050565b5f6020820190508181035f830152613f9e81613f65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fdc82613b13565b9150613fe783613b13565b9250828201905080821115613fff57613ffe613fa5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061404957607f821691505b60208210810361405c5761405b614005565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6140bc602883613b8e565b91506140c782614062565b604082019050919050565b5f6020820190508181035f8301526140e9816140b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61412782613b13565b915061413283613b13565b925082614142576141416140f0565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20312500000000000000000000000000000000000000000000000000602082015250565b5f6141a7602783613b8e565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b5f6141e582613b13565b91506141f083613b13565b92508282026141fe81613b13565b9150828204841483151761421557614214613fa5565b5b5092915050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f614250601183613b8e565b915061425b8261421c565b602082019050919050565b5f6020820190508181035f83015261427d81614244565b9050919050565b7f4e6f7420617574686f72697365640000000000000000000000000000000000005f82015250565b5f6142b8600e83613b8e565b91506142c382614284565b602082019050919050565b5f6020820190508181035f8301526142e5816142ac565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614346602783613b8e565b9150614351826142ec565b604082019050919050565b5f6020820190508181035f8301526143738161433a565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f6143ae601a83613b8e565b91506143b98261437a565b602082019050919050565b5f6020820190508181035f8301526143db816143a2565b9050919050565b5f815190506143f081613b1c565b92915050565b5f6020828403121561440b5761440a613b0f565b5b5f614418848285016143e2565b91505092915050565b5f6040820190506144345f830185613e6f565b6144416020830184613d98565b9392505050565b5f8151905061445681613e97565b92915050565b5f6020828403121561447157614470613b0f565b5b5f61447e84828501614448565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6144bb601783613b8e565b91506144c682614487565b602082019050919050565b5f6020820190508181035f8301526144e8816144af565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614549603983613b8e565b9150614554826144ef565b604082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145d7602583613b8e565b91506145e28261457d565b604082019050919050565b5f6020820190508181035f830152614604816145cb565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20312500000000000000000000000000000000000000000000602082015250565b5f614665602a83613b8e565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6146f3603583613b8e565b91506146fe82614699565b604082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f614781603283613b8e565b915061478c82614727565b604082019050919050565b5f6020820190508181035f8301526147ae81614775565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b5f61480f602883613b8e565b915061481a826147b5565b604082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61489d602683613b8e565b91506148a882614843565b604082019050919050565b5f6020820190508181035f8301526148ca81614891565b9050919050565b5f81905092915050565b50565b5f6148e95f836148d1565b91506148f4826148db565b5f82019050919050565b5f614908826148de565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61496c602483613b8e565b915061497782614912565b604082019050919050565b5f6020820190508181035f83015261499981614960565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149fa602283613b8e565b9150614a05826149a0565b604082019050919050565b5f6020820190508181035f830152614a27816149ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614a88602583613b8e565b9150614a9382614a2e565b604082019050919050565b5f6020820190508181035f830152614ab581614a7c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614b16602383613b8e565b9150614b2182614abc565b604082019050919050565b5f6020820190508181035f830152614b4381614b0a565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614b7e601d83613b8e565b9150614b8982614b4a565b602082019050919050565b5f6020820190508181035f830152614bab81614b72565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614be6601683613b8e565b9150614bf182614bb2565b602082019050919050565b5f6020820190508181035f830152614c1381614bda565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614c74602883613b8e565b9150614c7f82614c1a565b604082019050919050565b5f6020820190508181035f830152614ca181614c68565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614cdc601883613b8e565b9150614ce782614ca8565b602082019050919050565b5f6020820190508181035f830152614d0981614cd0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614d6a602a83613b8e565b9150614d7582614d10565b604082019050919050565b5f6020820190508181035f830152614d9781614d5e565b9050919050565b5f614da882613b13565b9150614db383613b13565b9250828203905081811115614dcb57614dca613fa5565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e2b602683613b8e565b9150614e3682614dd1565b604082019050919050565b5f6020820190508181035f830152614e5881614e1f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614ec781613cd2565b92915050565b5f60208284031215614ee257614ee1613b0f565b5b5f614eef84828501614eb9565b91505092915050565b5f819050919050565b5f614f1b614f16614f1184614ef8565b613c4d565b613b13565b9050919050565b614f2b81614f01565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614f6381613cc1565b82525050565b5f614f748383614f5a565b60208301905092915050565b5f602082019050919050565b5f614f9682614f31565b614fa08185614f3b565b9350614fab83614f4b565b805f5b83811015614fdb578151614fc28882614f69565b9750614fcd83614f80565b925050600181019050614fae565b5085935050505092915050565b5f60a082019050614ffb5f830188613d98565b6150086020830187614f22565b818103604083015261501a8186614f8c565b90506150296060830185613e6f565b6150366080830184613d98565b9695505050505050565b5f60c0820190506150535f830189613e6f565b6150606020830188613d98565b61506d6040830187614f22565b61507a6060830186614f22565b6150876080830185613e6f565b61509460a0830184613d98565b979650505050505050565b5f805f606084860312156150b6576150b5613b0f565b5b5f6150c3868287016143e2565b93505060206150d4868287016143e2565b92505060406150e5868287016143e2565b9150509250925092565b5f6040820190506151025f830185613e6f565b61510f6020830184613d45565b939250505056fea2646970667358221220df5a53d8fd6e29e143e597a3b986267b336ceb621b119ab2d40421f3260d820b64736f6c63430008140033