[ { "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": [ { "indexed": false, "internalType": "address", "name": "holder", "type": "address" }, { "indexed": false, "internalType": "string", "name": "actionType", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethBalance", "type": "uint256" } ], "name": "HolderBuySell", "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": [ { "indexed": false, "internalType": "uint256", "name": "iterations", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "claims", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lastProcessedIndex", "type": "uint256" }, { "indexed": true, "internalType": "bool", "name": "automatic", "type": "bool" }, { "indexed": true, "internalType": "address", "name": "processor", "type": "address" } ], "name": "ProcessedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "EthAmount", "type": "uint256" } ], "name": "SendRewards", "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": "tokensIntoLiqudity", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "SwapAndLiquifyEnabledUpdated", "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" }, { "inputs": [], "name": "_maxWalletAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "holders", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "ethSaleValues", "type": "uint256[]" } ], "name": "airDrops", "outputs": [], "stateMutability": "nonpayable", "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": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deadWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "distribution", "outputs": [ { "internalType": "uint256", "name": "development", "type": "uint256" }, { "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "ethHolderBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ethPriceToSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "bool", "name": "isExcludeFromFee", "type": "bool" } ], "name": "excludeIncludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "excludeIncludeFromRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getBuySellHistory", "outputs": [ { "components": [ { "internalType": "string", "name": "actionType", "type": "string" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct NECTRai.BuySellHistory[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "getEthValueFromTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenAmountByEthPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "isExcludedFromRewards", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manualSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeEthFromContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardsTracker", "outputs": [ { "internalType": "contract RewardsTracker", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "development", "type": "uint256" }, { "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "name": "setDistribution", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethPriceToSwap_", "type": "uint256" } ], "name": "setEthPriceToSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxWalletAmount", "type": "uint256" } ], "name": "setMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardsContractAddress", "type": "address" } ], "name": "setRewardsTracker", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "sellFee", "type": "uint256" } ], "name": "setTaxFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapAndLiquifyEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxFees", "outputs": [ { "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "sellFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "updateHolderBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "updateHolderBalances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f4e45435452616900000000000000000000000000000000000000000000000000815250600890816200011d919062000a11565b506040518060400160405280600581526020017f4e454354520000000000000000000000000000000000000000000000000000008152506009908162000164919062000a11565b506009600a5f6101000a81548160ff021916908360ff160217905550600a5f9054906101000a900460ff16600a6200019d919062000c7e565b6305f5e100620001ae919062000cce565b600b556001600c60016101000a81548160ff021916908315150217905550670429d069189e0000600d55600a5f9054906101000a900460ff16600a620001f5919062000c7e565b621e848062000205919062000cce565b600e5573b3c23622d29ff68b6a7fdce2253f1e22cc54ee07600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620002ac906200079f565b604051809103905ff080158015620002c6573d5f803e3d5ffd5b5060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280606481526020015f81525060155f820151815f01556020820151816001015550503480156200033e575f80fd5b50600b5460035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620003986200077860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73c61ec46c142dd8b64063a09a217172eaebe7384773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f739c0d07510936c426d81d3d5549ad66cd3257eb5973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73320ad2d83fab9a8242706a56350b7835561b8a8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f737969de392ce5bfc347c8a35170956d34a6ffda2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f620005a06200077860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550604051806040016040528060508152602001606281525060125f820151815f0155602082015181600101559050503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200076a919062000d29565b60405180910390a362000d44565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a968062006ae083390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200082957607f821691505b6020821081036200083f576200083e620007e4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000866565b620008af868362000866565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008f9620008f3620008ed84620008c7565b620008d0565b620008c7565b9050919050565b5f819050919050565b6200091483620008d9565b6200092c620009238262000900565b84845462000872565b825550505050565b5f90565b6200094262000934565b6200094f81848462000909565b505050565b5b8181101562000976576200096a5f8262000938565b60018101905062000955565b5050565b601f821115620009c5576200098f8162000845565b6200099a8462000857565b81016020851015620009aa578190505b620009c2620009b98562000857565b83018262000954565b50505b505050565b5f82821c905092915050565b5f620009e75f1984600802620009ca565b1980831691505092915050565b5f62000a018383620009d6565b9150826002028217905092915050565b62000a1c82620007ad565b67ffffffffffffffff81111562000a385762000a37620007b7565b5b62000a44825462000811565b62000a518282856200097a565b5f60209050601f83116001811462000a87575f841562000a72578287015190505b62000a7e8582620009f4565b86555062000aed565b601f19841662000a978662000845565b5f5b8281101562000ac05784890151825560018201915060208501945060208101905062000a99565b8683101562000ae0578489015162000adc601f891682620009d6565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000b7f5780860481111562000b575762000b5662000af5565b5b600185161562000b675780820291505b808102905062000b778562000b22565b945062000b37565b94509492505050565b5f8262000b99576001905062000c6b565b8162000ba8575f905062000c6b565b816001811462000bc1576002811462000bcc5762000c02565b600191505062000c6b565b60ff84111562000be15762000be062000af5565b5b8360020a91508482111562000bfb5762000bfa62000af5565b5b5062000c6b565b5060208310610133831016604e8410600b841016171562000c3c5782820a90508381111562000c365762000c3562000af5565b5b62000c6b565b62000c4b848484600162000b2e565b9250905081840481111562000c655762000c6462000af5565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c8a82620008c7565b915062000c978362000c72565b925062000cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b88565b905092915050565b5f62000cda82620008c7565b915062000ce783620008c7565b925082820262000cf781620008c7565b9150828204841483151762000d115762000d1062000af5565b5b5092915050565b62000d2381620008c7565b82525050565b5f60208201905062000d3e5f83018462000d18565b92915050565b615d8e8062000d525f395ff3fe608060405260043610610254575f3560e01c806359a05f89116101385780638da5cb5b116100b5578063b2abbbc411610079578063b2abbbc4146108c5578063ba385abb146108ed578063c9567bf914610915578063dd62ed3e1461092b578063f18dba2614610967578063f2fde38b1461098f5761025b565b80638da5cb5b146107cf57806395d89b41146107f95780639799570614610823578063a457c2d71461084d578063a9059cbb146108895761025b565b806371cd56af116100fc57806371cd56af1461070557806376f7b5bc1461072d57806379c2e2001461075557806381230a831461077d57806385141a77146107a55761025b565b806359a05f89146106345780635ee58efc1461065e5780636c0a24eb1461068957806370a08231146106b3578063715018a6146106ef5761025b565b8063280d3821116101d157806349bd5a5e1161019557806349bd5a5e146105285780634a74bb02146105525780634fda2e121461057c57806351bc3c85146105b85780635342acb4146105ce57806354a5df1f1461060a5761025b565b8063280d382114610448578063313ce5671461045e578063345487d01461048857806339509351146104c4578063441d801f146105005761025b565b806314f944bd1161021857806314f944bd146103545780631694505e1461039057806318160ddd146103ba57806323b872dd146103e457806327a14fc2146104205761025b565b806306fdde031461025f578063095ea7b3146102895780630ddc0976146102c55780630e832273146102f057806311f0b5161461032c5761025b565b3661025b57005b5f80fd5b34801561026a575f80fd5b506102736109b7565b604051610280919061445b565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190614519565b610a47565b6040516102bc9190614571565b60405180910390f35b3480156102d0575f80fd5b506102d9610a5d565b6040516102e7929190614599565b60405180910390f35b3480156102fb575f80fd5b50610316600480360381019061031191906145c0565b610a6e565b6040516103239190614571565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d91906146a1565b610ac0565b005b34801561035f575f80fd5b5061037a60048036038101906103759190614751565b610ee0565b604051610387919061477c565b60405180910390f35b34801561039b575f80fd5b506103a4611118565b6040516103b191906147f0565b60405180910390f35b3480156103c5575f80fd5b506103ce61113d565b6040516103db919061477c565b60405180910390f35b3480156103ef575f80fd5b5061040a60048036038101906104059190614809565b611146565b6040516104179190614571565b60405180910390f35b34801561042b575f80fd5b5061044660048036038101906104419190614751565b611229565b005b348015610453575f80fd5b5061045c6112cf565b005b348015610469575f80fd5b506104726113ae565b60405161047f9190614874565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906145c0565b6113c3565b6040516104bb919061477c565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190614519565b611464565b6040516104f79190614571565b60405180910390f35b34801561050b575f80fd5b50610526600480360381019061052191906148b7565b611504565b005b348015610533575f80fd5b5061053c6115a1565b6040516105499190614923565b60405180910390f35b34801561055d575f80fd5b506105666115c6565b6040516105739190614571565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d91906145c0565b6115d9565b6040516105af9190614a88565b60405180910390f35b3480156105c3575f80fd5b506105cc61170b565b005b3480156105d9575f80fd5b506105f460048036038101906105ef91906145c0565b611748565b6040516106019190614571565b60405180910390f35b348015610615575f80fd5b5061061e61179a565b60405161062b919061477c565b60405180910390f35b34801561063f575f80fd5b506106486117a0565b6040516106559190614ad9565b60405180910390f35b348015610669575f80fd5b506106726117c5565b604051610680929190614599565b60405180910390f35b348015610694575f80fd5b5061069d6117d6565b6040516106aa919061477c565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d491906145c0565b6117dc565b6040516106e6919061477c565b60405180910390f35b3480156106fa575f80fd5b50610703611822565b005b348015610710575f80fd5b5061072b600480360381019061072691906148b7565b611969565b005b348015610738575f80fd5b50610753600480360381019061074e9190614519565b611a06565b005b348015610760575f80fd5b5061077b60048036038101906107769190614519565b611b20565b005b348015610788575f80fd5b506107a3600480360381019061079e9190614af2565b611c3a565b005b3480156107b0575f80fd5b506107b9611d66565b6040516107c69190614923565b60405180910390f35b3480156107da575f80fd5b506107e3611d8b565b6040516107f09190614923565b60405180910390f35b348015610804575f80fd5b5061080d611db2565b60405161081a919061445b565b60405180910390f35b34801561082e575f80fd5b50610837611e42565b604051610844919061477c565b60405180910390f35b348015610858575f80fd5b50610873600480360381019061086e9190614519565b61207b565b6040516108809190614571565b60405180910390f35b348015610894575f80fd5b506108af60048036038101906108aa9190614519565b612152565b6040516108bc9190614571565b60405180910390f35b3480156108d0575f80fd5b506108eb60048036038101906108e69190614751565b612168565b005b3480156108f8575f80fd5b50610913600480360381019061090e91906145c0565b6121ff565b005b348015610920575f80fd5b506109296122cf565b005b348015610936575f80fd5b50610951600480360381019061094c9190614b30565b612785565b60405161095e919061477c565b60405180910390f35b348015610972575f80fd5b5061098d60048036038101906109889190614af2565b612807565b005b34801561099a575f80fd5b506109b560048036038101906109b091906145c0565b6128ab565b005b6060600880546109c690614b9b565b80601f01602080910402602001604051908101604052809291908181526020018280546109f290614b9b565b8015610a3d5780601f10610a1457610100808354040283529160200191610a3d565b820191905f5260205f20905b815481529060010190602001808311610a2057829003601f168201915b5050505050905090565b5f610a53338484612a61565b6001905092915050565b6012805f0154908060010154905082565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490614c15565b60405180910390fd5b8383905086869050148015610b6757508181905086869050145b610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d90614c7d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c90614ce5565b60405180910390fd5b5f3090505f5b87879050811015610ed6575f888883818110610c5a57610c59614d03565b5b9050602002016020810190610c6f91906145c0565b90505f878784818110610c8557610c84614d03565b5b905060200201359050610cde8160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c2490919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610d6f8160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6d90919063ffffffff16565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883888887818110610e0157610e00614d03565b5b905060200201356040518363ffffffff1660e01b8152600401610e25929190614d30565b5f604051808303815f87803b158015610e3c575f80fd5b505af1158015610e4e573d5f803e3d5ffd5b50505050610e5c8483612cca565b8173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eb9919061477c565b60405180910390a350508080610ece90614d84565b915050610c3b565b5050505050505050565b5f80600267ffffffffffffffff811115610efd57610efc614dcb565b5b604051908082528060200260200182016040528015610f2b5781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190614e0c565b815f81518110610fcf57610fce614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061101e5761101d614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484836040518363ffffffff1660e01b81526004016110b4929190614eee565b5f60405180830381865afa1580156110ce573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110f6919061503b565b5f8151811061110857611107614d03565b5b6020026020010151915050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600b54905090565b5f611152848484612ebd565b61121e8433611219856040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525060045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c8d9092919063ffffffff16565b612a61565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90614c15565b60405180910390fd5b633b9aca00816112c69190615082565b600e8190555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390614c15565b60405180910390fd5b5f479050611368611d8b565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156113aa573d5f803e3d5ffd5b5050565b5f600a5f9054906101000a900460ff16905090565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b815260040161141e9190614923565b602060405180830381865afa158015611439573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145d91906150c3565b9050919050565b5f6114fa33846114f58560045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6d90919063ffffffff16565b612a61565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614c15565b60405180910390fd5b61159c838383613cef565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b606060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611700578382905f5260205f2090600202016040518060400160405290815f8201805461166790614b9b565b80601f016020809104026020016040519081016040528092919081815260200182805461169390614b9b565b80156116de5780601f106116b5576101008083540402835291602001916116de565b820191905f5260205f20905b8154815290600101906020018083116116c157829003601f168201915b5050505050815260200160018201548152505081526020019060010190611637565b505050509050919050565b5f611715306117dc565b90505f81111561174557600c5f9054906101000a900460ff166117445761173b81613d95565b611743613fcb565b5b5b50565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6015805f0154908060010154905082565b600e5481565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614c15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90614c15565b60405180910390fd5b611a018383836140d0565b505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614c15565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883836040518363ffffffff1660e01b8152600401611aef929190614d30565b5f604051808303815f87803b158015611b06575f80fd5b505af1158015611b18573d5f803e3d5ffd5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490614c15565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883836040518363ffffffff1660e01b8152600401611c09929190614d30565b5f604051808303815f87803b158015611c20575f80fd5b505af1158015611c32573d5f803e3d5ffd5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90614c15565b60405180910390fd5b6014821115611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290615138565b60405180910390fd5b6014811115611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d46906151a0565b60405180910390fd5b8160125f0181905550806012600101819055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611dc190614b9b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ded90614b9b565b8015611e385780601f10611e0f57610100808354040283529160200191611e38565b820191905f5260205f20905b815481529060010190602001808311611e1b57829003601f168201915b5050505050905090565b5f80600267ffffffffffffffff811115611e5f57611e5e614dcb565b5b604051908082528060200260200182016040528015611e8d5781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611efa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1e9190614e0c565b815f81518110611f3157611f30614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611f8057611f7f614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401612018929190614eee565b5f60405180830381865afa158015612032573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061205a919061503b565b60018151811061206d5761206c614d03565b5b602002602001015191505090565b5f6121483384612143856040518060400160405280600181526020017f320000000000000000000000000000000000000000000000000000000000000081525060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c8d9092919063ffffffff16565b612a61565b6001905092915050565b5f61215e338484612ebd565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90614c15565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614c15565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235390614c15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290615208565b60405180910390fd5b6124193060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612a61565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612483573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124a79190614e0c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561252d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125519190614e0c565b6040518363ffffffff1660e01b815260040161256e929190615226565b6020604051808303815f875af115801561258a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ae9190614e0c565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730612635306117dc565b5f8061263f611d8b565b426040518863ffffffff1660e01b815260040161266196959493929190615286565b60606040518083038185885af115801561267d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126a291906152e5565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612742929190614d30565b6020604051808303815f875af115801561275e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127829190615349565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b90614c15565b60405180910390fd5b8160155f0181905550806015600101819055505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292f90614c15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d906153e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac69061544c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b34906154b4565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c17919061477c565b60405180910390a3505050565b5f612c6583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c8d565b905092915050565b5f808284612c7b91906154d2565b905083811015612cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb79061554f565b60405180910390fd5b8091505092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633974d3b1836040518263ffffffff1660e01b8152600401612d249190614923565b5f604051808303815f87803b158015612d3b575f80fd5b505af1925050508015612d4c575060015b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633974d3b1826040518263ffffffff1660e01b8152600401612da79190614923565b5f604051808303815f87803b158015612dbe575f80fd5b505af1925050508015612dcf575060015b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c33fb8776040518163ffffffff1660e01b81526004016060604051808303815f875af1925050508015612e5a57506040513d601f19601f82011682018060405250810190612e5791906152e5565b60015b15612eb9573273ffffffffffffffffffffffffffffffffffffffff16600115157fd401621dbefa4e4b58dfded2f6ce557f2bf581dde5dca5670c9993d2fb1bee0d858585604051612ead9392919061556d565b60405180910390a35050505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f22906155ec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090615654565b60405180910390fd5b5f8111612fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd2906156bc565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561307a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130b95750613089611d8b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130f857506130c8611d8b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90505f61311683613108866117dc565b612c6d90919063ffffffff16565b90505f613121611d8b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561318f575061315f611d8b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156131e8575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561322057503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561325857503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613a565760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036135835782156132fd57600e548211156132fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f390615724565b60405180910390fd5b5b82613308575f613333565b613332606461332460125f01548761417690919063ffffffff16565b6141ed90919063ffffffff16565b5b90505f61333f85610ee0565b90505f6133ed8260115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc8a6040518263ffffffff1660e01b81526004016133a09190614923565b602060405180830381865afa1580156133bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133df91906150c3565b612c6d90919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82888836040518363ffffffff1660e01b815260040161344b929190614d30565b5f604051808303815f87803b158015613462575f80fd5b505af1158015613474573d5f803e3d5ffd5b5050505060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180604001604052806040518060400160405280600381526020017f4255590000000000000000000000000000000000000000000000000000000000815250815260200184815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161353891906158d6565b506020820151816001015550507f47744cc547f0cc32a68348ccb6e26f815f647757d949205cd3da16ed48446c03878383604051613578939291906159ef565b60405180910390a150505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561362c575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156138cd578261363c575f613668565b61366760646136596012600101548761417690919063ffffffff16565b6141ed90919063ffffffff16565b5b90505f61367485610ee0565b90505f8160115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc8a6040518263ffffffff1660e01b81526004016136d29190614923565b602060405180830381865afa1580156136ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061371191906150c3565b61371b9190615a40565b90505f8082131561372c578161372e565b5f5b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d8288a836040518363ffffffff1660e01b815260040161378c929190614d30565b5f604051808303815f87803b1580156137a3575f80fd5b505af11580156137b5573d5f803e3d5ffd5b5050505060075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180604001604052806040518060400160405280600481526020017f53454c4c00000000000000000000000000000000000000000000000000000000815250815260200185815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161387991906158d6565b506020820151816001015550507f47744cc547f0cc32a68348ccb6e26f815f647757d949205cd3da16ed48446c038984836040516138b993929190615aca565b60405180910390a16138c9614236565b5050505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015613977575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613a4b57600e548211156139c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b890615b5c565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d828875f6040518363ffffffff1660e01b8152600401613a1d929190615b7a565b5f604051808303815f87803b158015613a34575f80fd5b505af1158015613a46573d5f803e3d5ffd5b505050505b613a558686612cca565b5b5f613a6a8286612c2490919063ffffffff16565b9050613abc8560035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c2490919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b4d8160035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6d90919063ffffffff16565b60035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613bde8260035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6d90919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613c7c919061477c565b60405180910390a350505050505050565b5f838311158290613cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccb919061445b565b60405180910390fd5b505f8385613ce29190615ba1565b9050809150509392505050565b5f5b83839050811015613d8f575f848483818110613d1057613d0f614d03565b5b9050602002016020810190613d2591906145c0565b90508260055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508080613d8790614d84565b915050613cf1565b50505050565b5f600267ffffffffffffffff811115613db157613db0614dcb565b5b604051908082528060200260200182016040528015613ddf5781602001602082028036833780820191505090505b50905030815f81518110613df657613df5614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ebe9190614e0c565b81600181518110613ed257613ed1614d03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f383060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a61565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613f9a959493929190615bd4565b5f604051808303815f87803b158015613fb1575f80fd5b505af1158015613fc3573d5f803e3d5ffd5b505050505050565b6001600c5f6101000a81548160ff0219169083151502179055505f4790505f614014606461400660155f01548561417690919063ffffffff16565b6141ed90919063ffffffff16565b90505f61404260646140346015600101548661417690919063ffffffff16565b6141ed90919063ffffffff16565b9050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156140a8573d5f803e3d5ffd5b506140b2816142a5565b5050505f600c5f6101000a81548160ff021916908315150217905550565b5f5b83839050811015614170575f8484838181106140f1576140f0614d03565b5b905060200201602081019061410691906145c0565b90508260065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050808061416890614d84565b9150506140d2565b50505050565b5f808303614186575f90506141e7565b5f82846141939190615082565b90508284826141a29190615c59565b146141e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141d990615cf9565b60405180910390fd5b809150505b92915050565b5f61422e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614370565b905092915050565b5f614240306117dc565b90505f8111156142a2575f614253611e42565b90508082101580156142715750600c5f9054906101000a900460ff16155b80156142895750600c60019054906101000a900460ff165b156142a05761429781613d95565b61429f613fcb565b5b505b50565b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516142eb90615d44565b5f6040518083038185875af1925050503d805f8114614325576040519150601f19603f3d011682016040523d82523d5f602084013e61432a565b606091505b50509050801561436c577f8d506e73abc3fae6fd0fd6faac7b7ff03e47622fa1e4fa03fc1e8f9801769afa82604051614363919061477c565b60405180910390a15b5050565b5f80831182906143b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143ad919061445b565b60405180910390fd5b505f83856143c49190615c59565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156144085780820151818401526020810190506143ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61442d826143d1565b61443781856143db565b93506144478185602086016143eb565b61445081614413565b840191505092915050565b5f6020820190508181035f8301526144738184614423565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6144b58261448c565b9050919050565b6144c5816144ab565b81146144cf575f80fd5b50565b5f813590506144e0816144bc565b92915050565b5f819050919050565b6144f8816144e6565b8114614502575f80fd5b50565b5f81359050614513816144ef565b92915050565b5f806040838503121561452f5761452e614484565b5b5f61453c858286016144d2565b925050602061454d85828601614505565b9150509250929050565b5f8115159050919050565b61456b81614557565b82525050565b5f6020820190506145845f830184614562565b92915050565b614593816144e6565b82525050565b5f6040820190506145ac5f83018561458a565b6145b9602083018461458a565b9392505050565b5f602082840312156145d5576145d4614484565b5b5f6145e2848285016144d2565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261460c5761460b6145eb565b5b8235905067ffffffffffffffff811115614629576146286145ef565b5b602083019150836020820283011115614645576146446145f3565b5b9250929050565b5f8083601f840112614661576146606145eb565b5b8235905067ffffffffffffffff81111561467e5761467d6145ef565b5b60208301915083602082028301111561469a576146996145f3565b5b9250929050565b5f805f805f80606087890312156146bb576146ba614484565b5b5f87013567ffffffffffffffff8111156146d8576146d7614488565b5b6146e489828a016145f7565b9650965050602087013567ffffffffffffffff81111561470757614706614488565b5b61471389828a0161464c565b9450945050604087013567ffffffffffffffff81111561473657614735614488565b5b61474289828a0161464c565b92509250509295509295509295565b5f6020828403121561476657614765614484565b5b5f61477384828501614505565b91505092915050565b5f60208201905061478f5f83018461458a565b92915050565b5f819050919050565b5f6147b86147b36147ae8461448c565b614795565b61448c565b9050919050565b5f6147c98261479e565b9050919050565b5f6147da826147bf565b9050919050565b6147ea816147d0565b82525050565b5f6020820190506148035f8301846147e1565b92915050565b5f805f606084860312156148205761481f614484565b5b5f61482d868287016144d2565b935050602061483e868287016144d2565b925050604061484f86828701614505565b9150509250925092565b5f60ff82169050919050565b61486e81614859565b82525050565b5f6020820190506148875f830184614865565b92915050565b61489681614557565b81146148a0575f80fd5b50565b5f813590506148b18161488d565b92915050565b5f805f604084860312156148ce576148cd614484565b5b5f84013567ffffffffffffffff8111156148eb576148ea614488565b5b6148f7868287016145f7565b9350935050602061490a868287016148a3565b9150509250925092565b61491d816144ab565b82525050565b5f6020820190506149365f830184614914565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61497f826143d1565b6149898185614965565b93506149998185602086016143eb565b6149a281614413565b840191505092915050565b6149b6816144e6565b82525050565b5f604083015f8301518482035f8601526149d68282614975565b91505060208301516149eb60208601826149ad565b508091505092915050565b5f614a0183836149bc565b905092915050565b5f602082019050919050565b5f614a1f8261493c565b614a298185614946565b935083602082028501614a3b85614956565b805f5b85811015614a765784840389528151614a5785826149f6565b9450614a6283614a09565b925060208a01995050600181019050614a3e565b50829750879550505050505092915050565b5f6020820190508181035f830152614aa08184614a15565b905092915050565b5f614ab28261479e565b9050919050565b5f614ac382614aa8565b9050919050565b614ad381614ab9565b82525050565b5f602082019050614aec5f830184614aca565b92915050565b5f8060408385031215614b0857614b07614484565b5b5f614b1585828601614505565b9250506020614b2685828601614505565b9150509250929050565b5f8060408385031215614b4657614b45614484565b5b5f614b53858286016144d2565b9250506020614b64858286016144d2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614bb257607f821691505b602082108103614bc557614bc4614b6e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614bff6020836143db565b9150614c0a82614bcb565b602082019050919050565b5f6020820190508181035f830152614c2c81614bf3565b9050919050565b7f31320000000000000000000000000000000000000000000000000000000000005f82015250565b5f614c676002836143db565b9150614c7282614c33565b602082019050919050565b5f6020820190508181035f830152614c9481614c5b565b9050919050565b7f31330000000000000000000000000000000000000000000000000000000000005f82015250565b5f614ccf6002836143db565b9150614cda82614c9b565b602082019050919050565b5f6020820190508181035f830152614cfc81614cc3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050614d435f830185614914565b614d50602083018461458a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614d8e826144e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614dc057614dbf614d57565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614e06816144bc565b92915050565b5f60208284031215614e2157614e20614484565b5b5f614e2e84828501614df8565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e69816144ab565b82525050565b5f614e7a8383614e60565b60208301905092915050565b5f602082019050919050565b5f614e9c82614e37565b614ea68185614e41565b9350614eb183614e51565b805f5b83811015614ee1578151614ec88882614e6f565b9750614ed383614e86565b925050600181019050614eb4565b5085935050505092915050565b5f604082019050614f015f83018561458a565b8181036020830152614f138184614e92565b90509392505050565b614f2582614413565b810181811067ffffffffffffffff82111715614f4457614f43614dcb565b5b80604052505050565b5f614f5661447b565b9050614f628282614f1c565b919050565b5f67ffffffffffffffff821115614f8157614f80614dcb565b5b602082029050602081019050919050565b5f81519050614fa0816144ef565b92915050565b5f614fb8614fb384614f67565b614f4d565b90508083825260208201905060208402830185811115614fdb57614fda6145f3565b5b835b818110156150045780614ff08882614f92565b845260208401935050602081019050614fdd565b5050509392505050565b5f82601f830112615022576150216145eb565b5b8151615032848260208601614fa6565b91505092915050565b5f602082840312156150505761504f614484565b5b5f82015167ffffffffffffffff81111561506d5761506c614488565b5b6150798482850161500e565b91505092915050565b5f61508c826144e6565b9150615097836144e6565b92508282026150a5816144e6565b915082820484148315176150bc576150bb614d57565b5b5092915050565b5f602082840312156150d8576150d7614484565b5b5f6150e584828501614f92565b91505092915050565b7f33000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6151226001836143db565b915061512d826150ee565b602082019050919050565b5f6020820190508181035f83015261514f81615116565b9050919050565b7f34000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61518a6001836143db565b915061519582615156565b602082019050919050565b5f6020820190508181035f8301526151b78161517e565b9050919050565b7f31340000000000000000000000000000000000000000000000000000000000005f82015250565b5f6151f26002836143db565b91506151fd826151be565b602082019050919050565b5f6020820190508181035f83015261521f816151e6565b9050919050565b5f6040820190506152395f830185614914565b6152466020830184614914565b9392505050565b5f819050919050565b5f61527061526b6152668461524d565b614795565b6144e6565b9050919050565b61528081615256565b82525050565b5f60c0820190506152995f830189614914565b6152a6602083018861458a565b6152b36040830187615277565b6152c06060830186615277565b6152cd6080830185614914565b6152da60a083018461458a565b979650505050505050565b5f805f606084860312156152fc576152fb614484565b5b5f61530986828701614f92565b935050602061531a86828701614f92565b925050604061532b86828701614f92565b9150509250925092565b5f815190506153438161488d565b92915050565b5f6020828403121561535e5761535d614484565b5b5f61536b84828501615335565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6153ce6026836143db565b91506153d982615374565b604082019050919050565b5f6020820190508181035f8301526153fb816153c2565b9050919050565b7f35000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6154366001836143db565b915061544182615402565b602082019050919050565b5f6020820190508181035f8301526154638161542a565b9050919050565b7f36000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61549e6001836143db565b91506154a98261546a565b602082019050919050565b5f6020820190508181035f8301526154cb81615492565b9050919050565b5f6154dc826144e6565b91506154e7836144e6565b92508282019050808211156154ff576154fe614d57565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615539601b836143db565b915061554482615505565b602082019050919050565b5f6020820190508181035f8301526155668161552d565b9050919050565b5f6060820190506155805f83018661458a565b61558d602083018561458a565b61559a604083018461458a565b949350505050565b7f37000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6155d66001836143db565b91506155e1826155a2565b602082019050919050565b5f6020820190508181035f830152615603816155ca565b9050919050565b7f38000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61563e6001836143db565b91506156498261560a565b602082019050919050565b5f6020820190508181035f83015261566b81615632565b9050919050565b7f39000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6156a66001836143db565b91506156b182615672565b602082019050919050565b5f6020820190508181035f8301526156d38161569a565b9050919050565b7f31300000000000000000000000000000000000000000000000000000000000005f82015250565b5f61570e6002836143db565b9150615719826156da565b602082019050919050565b5f6020820190508181035f83015261573b81615702565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261579e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615763565b6157a88683615763565b95508019841693508086168417925050509392505050565b5f6157da6157d56157d0846144e6565b614795565b6144e6565b9050919050565b5f819050919050565b6157f3836157c0565b6158076157ff826157e1565b84845461576f565b825550505050565b5f90565b61581b61580f565b6158268184846157ea565b505050565b5b818110156158495761583e5f82615813565b60018101905061582c565b5050565b601f82111561588e5761585f81615742565b61586884615754565b81016020851015615877578190505b61588b61588385615754565b83018261582b565b50505b505050565b5f82821c905092915050565b5f6158ae5f1984600802615893565b1980831691505092915050565b5f6158c6838361589f565b9150826002028217905092915050565b6158df826143d1565b67ffffffffffffffff8111156158f8576158f7614dcb565b5b6159028254614b9b565b61590d82828561584d565b5f60209050601f83116001811461593e575f841561592c578287015190505b61593685826158bb565b86555061599d565b601f19841661594c86615742565b5f5b828110156159735784890151825560018201915060208501945060208101905061594e565b86831015615990578489015161598c601f89168261589f565b8355505b6001600288020188555050505b505050505050565b7f42555900000000000000000000000000000000000000000000000000000000005f82015250565b5f6159d96003836143db565b91506159e4826159a5565b602082019050919050565b5f608082019050615a025f830186614914565b8181036020830152615a13816159cd565b9050615a22604083018561458a565b615a2f606083018461458a565b949350505050565b5f819050919050565b5f615a4a82615a37565b9150615a5583615a37565b925082820390508181125f8412168282135f851215161715615a7a57615a79614d57565b5b92915050565b7f53454c4c000000000000000000000000000000000000000000000000000000005f82015250565b5f615ab46004836143db565b9150615abf82615a80565b602082019050919050565b5f608082019050615add5f830186614914565b8181036020830152615aee81615aa8565b9050615afd604083018561458a565b615b0a606083018461458a565b949350505050565b7f31310000000000000000000000000000000000000000000000000000000000005f82015250565b5f615b466002836143db565b9150615b5182615b12565b602082019050919050565b5f6020820190508181035f830152615b7381615b3a565b9050919050565b5f604082019050615b8d5f830185614914565b615b9a6020830184615277565b9392505050565b5f615bab826144e6565b9150615bb6836144e6565b9250828203905081811115615bce57615bcd614d57565b5b92915050565b5f60a082019050615be75f83018861458a565b615bf46020830187615277565b8181036040830152615c068186614e92565b9050615c156060830185614914565b615c22608083018461458a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615c63826144e6565b9150615c6e836144e6565b925082615c7e57615c7d615c2c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615ce36021836143db565b9150615cee82615c89565b604082019050919050565b5f6020820190508181035f830152615d1081615cd7565b9050919050565b5f81905092915050565b50565b5f615d2f5f83615d17565b9150615d3a82615d21565b5f82019050919050565b5f615d4e82615d24565b915081905091905056fea2646970667358221220337add910fd1e1fc4fa83e07cbc4837ae4daece219aa3075365536cde2f54c4f64736f6c63430008140033608060405234801561000f575f80fd5b50610a798061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063663037ac11610059578063663037ac146100e7578063949d225d14610117578063c2bc2efc14610135578063cd413329146101655761007b565b806329092d0e1461007f5780633825d8281461009b578063564c8d11146100b7575b5f80fd5b6100996004803603810190610094919061080e565b610195565b005b6100b560048036038101906100b0919061086c565b61043c565b005b6100d160048036038101906100cc919061080e565b610621565b6040516100de91906108c2565b60405180910390f35b61010160048036038101906100fc91906108db565b6106e2565b60405161010e9190610915565b60405180910390f35b61011f610727565b60405161012c919061093d565b60405180910390f35b61014f600480360381019061014a919061080e565b610734565b60405161015c919061093d565b60405180910390f35b61017f600480360381019061017a919061080e565b61077c565b60405161018c9190610970565b60405180910390f35b5f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610439575f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690555f6001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f806002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f8001805490506102cd91906109b6565b90505f805f0182815481106102e5576102e46109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050825f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055805f800184815481106103ab576103aa6109e9565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f800180548061040357610402610a16565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b5f6003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156104d657805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d565b60015f6003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8001805490505f6002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f800182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b5f806003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661069a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506106dd565b5f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b5f805f0182815481106106f8576106f76109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f805f0180549050905090565b5f806001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107a783610621565b14159050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107dd826107b4565b9050919050565b6107ed816107d3565b81146107f7575f80fd5b50565b5f81359050610808816107e4565b92915050565b5f60208284031215610823576108226107b0565b5b5f610830848285016107fa565b91505092915050565b5f819050919050565b61084b81610839565b8114610855575f80fd5b50565b5f8135905061086681610842565b92915050565b5f8060408385031215610882576108816107b0565b5b5f61088f858286016107fa565b92505060206108a085828601610858565b9150509250929050565b5f819050919050565b6108bc816108aa565b82525050565b5f6020820190506108d55f8301846108b3565b92915050565b5f602082840312156108f0576108ef6107b0565b5b5f6108fd84828501610858565b91505092915050565b61090f816107d3565b82525050565b5f6020820190506109285f830184610906565b92915050565b61093781610839565b82525050565b5f6020820190506109505f83018461092e565b92915050565b5f8115159050919050565b61096a81610956565b82525050565b5f6020820190506109835f830184610961565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109c082610839565b91506109cb83610839565b92508282039050818111156109e3576109e2610989565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220aa85df7a8f302e2a7157302f9e68614ed5699b4b68e98570f75e8b03f7c7f72464736f6c63430008140033