[ { "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": "uint256", "name": "buyTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyProjectTax", "type": "uint256" } ], "name": "BuyFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "DisabledTransferDelay", "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": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "LimitsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "MarketingWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTx", "type": "uint256" } ], "name": "MaxTxUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxWallet", "type": "uint256" } ], "name": "MaxWalletUpdated", "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": "sellTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellProjectTax", "type": "uint256" } ], "name": "SellFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetDexPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMin", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMax", "type": "uint256" } ], "name": "SwapbackSettingsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "TradingEnabled", "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": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "inputs": [], "name": "AWLim_checkInfo", "outputs": [ { "internalType": "bool", "name": "_limitsEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTx", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newLtTx", "type": "uint256" } ], "name": "AWLim_maxTx_Scng", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "AWLim_rmv", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newLmtWlt", "type": "uint256" } ], "name": "AWLim_walletLimit_new", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "CSB_checkInfo", "outputs": [ { "internalType": "bool", "name": "_swapbackEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_swapBackValueMin", "type": "uint256" }, { "internalType": "uint256", "name": "_swapBackValueMax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_bool", "type": "bool" }, { "internalType": "uint256", "name": "_minAmt", "type": "uint256" }, { "internalType": "uint256", "name": "_maxAmt", "type": "uint256" } ], "name": "CSB_setVals", "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": "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": "dexPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeNew", "type": "uint256" } ], "name": "feeTax_buy_set", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newTgt", "type": "address" } ], "name": "feeTax_newTgt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeNew", "type": "uint256" } ], "name": "feeTax_sell_set", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "feeTax_setExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeNew", "type": "uint256" } ], "name": "feeTax_transfer_set", "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": [ { "internalType": "uint256", "name": "percent", "type": "uint256" } ], "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": "receiver_checkInfo", "outputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_anti", "type": "bool" } ], "name": "setAnti", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setDexPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxes_checkInfo", "outputs": [ { "internalType": "uint256", "name": "_buyTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_sellTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_transferTaxTotal", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingEnabled", "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": "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": "address", "name": "_target", "type": "address" } ], "name": "view_wallet", "outputs": [ { "internalType": "bool", "name": "_transferTaxExempt", "type": "bool" }, { "internalType": "bool", "name": "_transferLimitExempt", "type": "bool" }, { "internalType": "bool", "name": "_automatedMarketMakerPairs", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "bool", "name": "_bool", "type": "bool" } ], "name": "whlLimd_setExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526000600560156101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001601460006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600581526020017f5761676d690000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5741474d490000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000eba565b5080600490816200010d919062000eba565b50505062000130620001246200059360201b60201c565b6200059b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c8160016200066160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020291906200100b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029091906200100b565b6040518363ffffffff1660e01b8152600401620002af9291906200104e565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f591906200100b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a05160016200066160201b60201c565b6200035260a05160016200079b60201b60201c565b6000620003646200083c60201b60201c565b600a6200037291906200120b565b633b9aca006200038391906200125c565b9050426008819055506103e8600a826200039e91906200125c565b620003aa9190620012d6565b600b819055506103e8600a82620003c291906200125c565b620003ce9190620012d6565b600a819055506103e8600182620003e691906200125c565b620003f29190620012d6565b60068190555060646002826200040991906200125c565b620004159190620012d6565b6007819055506014600e819055506019600f8190555060006010819055507306b923b9c10867e1ede53de8b4005b8656f1b3b2600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049b3360016200084560201b60201c565b620004ae3060016200084560201b60201c565b620004c361dead60016200084560201b60201c565b620004f8600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200084560201b60201c565b6200050b3360016200066160201b60201c565b6200051e3060016200066160201b60201c565b6200053361dead60016200066160201b60201c565b62000568600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200066160201b60201c565b62000579336200097f60201b60201c565b6200058b338262000a9460201b60201c565b50506200153e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006716200059360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200069762000c0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e7906200136f565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516200078f9190620013ae565b60405180910390a25050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b60006012905090565b620008556200059360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200087b62000c0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cb906200136f565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009739190620013ae565b60405180910390a25050565b6200098f6200059360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009b562000c0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a05906200136f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a779062001441565b60405180910390fd5b62000a91816200059b60201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afd90620014b3565b60405180910390fd5b62000b1a6000838362000c3660201b60201c565b806002600082825462000b2e9190620014d5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b859190620014d5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bec919062001521565b60405180910390a362000c086000838362000c3b60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000cc257607f821691505b60208210810362000cd85762000cd762000c7a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d03565b62000d4e868362000d03565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d9b62000d9562000d8f8462000d66565b62000d70565b62000d66565b9050919050565b6000819050919050565b62000db78362000d7a565b62000dcf62000dc68262000da2565b84845462000d10565b825550505050565b600090565b62000de662000dd7565b62000df381848462000dac565b505050565b5b8181101562000e1b5762000e0f60008262000ddc565b60018101905062000df9565b5050565b601f82111562000e6a5762000e348162000cde565b62000e3f8462000cf3565b8101602085101562000e4f578190505b62000e6762000e5e8562000cf3565b83018262000df8565b50505b505050565b600082821c905092915050565b600062000e8f6000198460080262000e6f565b1980831691505092915050565b600062000eaa838362000e7c565b9150826002028217905092915050565b62000ec58262000c40565b67ffffffffffffffff81111562000ee15762000ee062000c4b565b5b62000eed825462000ca9565b62000efa82828562000e1f565b600060209050601f83116001811462000f32576000841562000f1d578287015190505b62000f29858262000e9c565b86555062000f99565b601f19841662000f428662000cde565b60005b8281101562000f6c5784890151825560018201915060208501945060208101905062000f45565b8683101562000f8c578489015162000f88601f89168262000e7c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fd38262000fa6565b9050919050565b62000fe58162000fc6565b811462000ff157600080fd5b50565b600081519050620010058162000fda565b92915050565b60006020828403121562001024576200102362000fa1565b5b6000620010348482850162000ff4565b91505092915050565b620010488162000fc6565b82525050565b60006040820190506200106560008301856200103d565b6200107460208301846200103d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200110957808604811115620010e157620010e06200107b565b5b6001851615620010f15780820291505b80810290506200110185620010aa565b9450620010c1565b94509492505050565b600082620011245760019050620011f7565b81620011345760009050620011f7565b81600181146200114d576002811462001158576200118e565b6001915050620011f7565b60ff8411156200116d576200116c6200107b565b5b8360020a9150848211156200118757620011866200107b565b5b50620011f7565b5060208310610133831016604e8410600b8410161715620011c85782820a905083811115620011c257620011c16200107b565b5b620011f7565b620011d78484846001620010b7565b92509050818404811115620011f157620011f06200107b565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012188262000d66565b91506200122583620011fe565b9250620012547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001112565b905092915050565b6000620012698262000d66565b9150620012768362000d66565b9250828202620012868162000d66565b91508282048414831517620012a0576200129f6200107b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012e38262000d66565b9150620012f08362000d66565b925082620013035762001302620012a7565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013576020836200130e565b915062001364826200131f565b602082019050919050565b600060208201905081810360008301526200138a8162001348565b9050919050565b60008115159050919050565b620013a88162001391565b82525050565b6000602082019050620013c560008301846200139d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620014296026836200130e565b91506200143682620013cb565b604082019050919050565b600060208201905081810360008301526200145c816200141a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200149b601f836200130e565b9150620014a88262001463565b602082019050919050565b60006020820190508181036000830152620014ce816200148c565b9050919050565b6000620014e28262000d66565b9150620014ef8362000d66565b92508282019050808211156200150a57620015096200107b565b5b92915050565b6200151b8162000d66565b82525050565b600060208201905062001538600083018462001510565b92915050565b60805160a0516147b66200157960003960008181611b500152611cb8015260008181612cc001528181612da10152612dc801526147b66000f3fe6080604052600436106102085760003560e01c80638da5cb5b11610118578063dd62ed3e116100a0578063e94275861161006f578063e94275861461074e578063f242ab4114610777578063f2fde38b146107a2578063f5703332146107cb578063fb70961b146107f85761020f565b8063dd62ed3e14610696578063ddd1e9a4146106d3578063e19da7ce146106fc578063e55648f4146107255761020f565b8063a9059cbb116100e7578063a9059cbb146105c3578063b70143c914610600578063c8706a5014610629578063c9567bf914610656578063cfddbf171461066d5761020f565b80638da5cb5b1461050757806395d89b4114610532578063a0c7616b1461055d578063a457c2d7146105865761020f565b80633da6c1971161019b57806370a082311161016a57806370a0823114610448578063715018a6146104855780637ff6f7b91461049c57806385ca59b9146104c557806387f77cde146104dc5761020f565b80633da6c197146103a2578063454b7163146103cb5780634ada218b146103f457806364c13c8a1461041f5761020f565b806323b872dd116101d757806323b872dd146102d05780632e78e6241461030d578063313ce5671461033a57806339509351146103655761020f565b806306fdde0314610214578063095ea7b31461023f57806318160ddd1461027c5780631a8a4d5b146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610837565b6040516102369190613350565b60405180910390f35b34801561024b57600080fd5b506102666004803603810190610261919061340b565b6108c9565b6040516102739190613466565b60405180910390f35b34801561028857600080fd5b506102916108e7565b60405161029e9190613490565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906134ab565b6108f1565b005b3480156102dc57600080fd5b506102f760048036038101906102f291906134d8565b610a13565b6040516103049190613466565b60405180910390f35b34801561031957600080fd5b50610322610b0b565b6040516103319392919061352b565b60405180910390f35b34801561034657600080fd5b5061034f610b31565b60405161035c919061357e565b60405180910390f35b34801561037157600080fd5b5061038c6004803603810190610387919061340b565b610b3a565b6040516103999190613466565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906135c5565b610be6565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190613605565b610d0b565b005b34801561040057600080fd5b50610409610e47565b6040516104169190613466565b60405180910390f35b34801561042b57600080fd5b50610446600480360381019061044191906134ab565b610e5a565b005b34801561045457600080fd5b5061046f600480360381019061046a9190613605565b610f7c565b60405161047c9190613490565b60405180910390f35b34801561049157600080fd5b5061049a610fc4565b005b3480156104a857600080fd5b506104c360048036038101906104be9190613632565b61104c565b005b3480156104d157600080fd5b506104da6110e5565b005b3480156104e857600080fd5b506104f16111b3565b6040516104fe919061366e565b60405180910390f35b34801561051357600080fd5b5061051c6111dd565b604051610529919061366e565b60405180910390f35b34801561053e57600080fd5b50610547611207565b6040516105549190613350565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f91906134ab565b611299565b005b34801561059257600080fd5b506105ad60048036038101906105a8919061340b565b6113a6565b6040516105ba9190613466565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e5919061340b565b611491565b6040516105f79190613466565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906134ab565b6114af565b005b34801561063557600080fd5b5061063e611576565b60405161064d93929190613689565b60405180910390f35b34801561066257600080fd5b5061066b61158f565b005b34801561067957600080fd5b50610694600480360381019061068f91906134ab565b611670565b005b3480156106a257600080fd5b506106bd60048036038101906106b891906136c0565b61177d565b6040516106ca9190613490565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613700565b611804565b005b34801561070857600080fd5b50610723600480360381019061071e91906135c5565b6119ad565b005b34801561073157600080fd5b5061074c600480360381019061074791906135c5565b611ad2565b005b34801561075a57600080fd5b50610775600480360381019061077091906134ab565b611bea565b005b34801561078357600080fd5b5061078c611cb6565b604051610799919061366e565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190613605565b611cda565b005b3480156107d757600080fd5b506107e0611dd1565b6040516107ef9392919061352b565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190613605565b611df7565b60405161082e93929190613753565b60405180910390f35b606060038054610846906137b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906137b9565b80156108bf5780601f10610894576101008083540402835291602001916108bf565b820191906000526020600020905b8154815290600101906020018083116108a257829003601f168201915b5050505050905090565b60006108dd6108d6611ef0565b8484611ef8565b6001905092915050565b6000600254905090565b6108f9611ef0565b73ffffffffffffffffffffffffffffffffffffffff166109176111dd565b73ffffffffffffffffffffffffffffffffffffffff161461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096490613836565b60405180910390fd5b60058110156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906138c8565b60405180910390fd5b6103e86109bc6108e7565b826109c79190613917565b6109d19190613988565b600a819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600a54604051610a089190613490565b60405180910390a150565b6000610a208484846120c1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a6b611ef0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290613a2b565b60405180910390fd5b610aff85610af7611ef0565b858403611ef8565b60019150509392505050565b6000806000600560159054906101000a900460ff16925060065491506007549050909192565b60006012905090565b6000610bdc610b47611ef0565b848460016000610b55611ef0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd79190613a4b565b611ef8565b6001905092915050565b610bee611ef0565b73ffffffffffffffffffffffffffffffffffffffff16610c0c6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990613836565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051610cff9190613466565b60405180910390a25050565b610d13611ef0565b73ffffffffffffffffffffffffffffffffffffffff16610d316111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613836565b60405180910390fd5b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900460ff1681565b610e62611ef0565b73ffffffffffffffffffffffffffffffffffffffff16610e806111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90613836565b60405180910390fd5b6002811015610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190613acb565b60405180910390fd5b6103e8610f256108e7565b82610f309190613917565b610f3a9190613988565b600b819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600b54604051610f719190613490565b60405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fcc611ef0565b73ffffffffffffffffffffffffffffffffffffffff16610fea6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613836565b60405180910390fd5b61104a6000612b5b565b565b611054611ef0565b73ffffffffffffffffffffffffffffffffffffffff166110726111dd565b73ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf90613836565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b6110ed611ef0565b73ffffffffffffffffffffffffffffffffffffffff1661110b6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890613836565b60405180910390fd5b6000600960006101000a81548160ff0219169083151502179055506000601081905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611216906137b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611242906137b9565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b6112a1611ef0565b73ffffffffffffffffffffffffffffffffffffffff166112bf6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613836565b60405180910390fd5b80600e819055506064600e541115611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990613b5d565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600e54600e54600e5460405161139b93929190613689565b60405180910390a150565b600080600160006113b5611ef0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146990613bef565b60405180910390fd5b61148661147d611ef0565b85858403611ef8565b600191505092915050565b60006114a561149e611ef0565b84846120c1565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690613c81565b60405180910390fd5b600061154a30610f7c565b905060006064838361155c9190613917565b6115669190613988565b905061157181612c21565b505050565b6000806000600e549250600f5491506010549050909192565b611597611ef0565b73ffffffffffffffffffffffffffffffffffffffff166115b56111dd565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613836565b60405180910390fd5b6001600d60006101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b611678611ef0565b73ffffffffffffffffffffffffffffffffffffffff166116966111dd565b73ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390613836565b60405180910390fd5b80600f819055506064600f541115611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613d13565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f1600f54600f54600f5460405161177293929190613689565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61180c611ef0565b73ffffffffffffffffffffffffffffffffffffffff1661182a6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613836565b60405180910390fd5b60018210156118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613da5565b60405180910390fd5b81811015611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90613e37565b60405180910390fd5b82600560156101000a81548160ff0219169083151502179055506127108261192d6108e7565b6119379190613917565b6119419190613988565b600681905550612710816119536108e7565b61195d9190613917565b6119679190613988565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7798383836040516119a09392919061352b565b60405180910390a1505050565b6119b5611ef0565b73ffffffffffffffffffffffffffffffffffffffff166119d36111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090613836565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ac69190613466565b60405180910390a25050565b611ada611ef0565b73ffffffffffffffffffffffffffffffffffffffff16611af86111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590613836565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613ec9565b60405180910390fd5b611be68282612e5e565b5050565b611bf2611ef0565b73ffffffffffffffffffffffffffffffffffffffff16611c106111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90613836565b60405180910390fd5b8060108190555060646010541115611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613f5b565b60405180910390fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b611ce2611ef0565b73ffffffffffffffffffffffffffffffffffffffff16611d006111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90613836565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc90613fed565b60405180910390fd5b611dce81612b5b565b50565b6000806000600960009054906101000a900460ff169250600a549150600b549050909192565b6000806000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e9061407f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90614111565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120b49190613490565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612127906141a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219690614235565b60405180910390fd5b600081036121b8576121b383836000612eff565b612b56565b600960009054906101000a900460ff16156126b3576121d56111dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561224357506122136111dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561227c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122b6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122cf5750600560149054906101000a900460ff16155b156126b257600d60009054906101000a900460ff166123c957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123895750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf906142c7565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561246c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251357600b548111156124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad90614359565b60405180910390fd5b600a546124c283610f7c565b826124cd9190613a4b565b111561250e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612505906143c5565b60405180910390fd5b6126b1565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125b65750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561260557600b54811115612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614457565b60405180910390fd5b6126b0565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126af57600a5461266283610f7c565b8261266d9190613a4b565b11156126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a5906143c5565b60405180910390fd5b5b5b5b5b5b60006126be30610f7c565b9050600060065482101590508080156126e35750600560159054906101000a900460ff165b80156126fc5750600560149054906101000a900460ff16155b80156127525750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127a85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127fe5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561280c57504260085414155b15612858576001600560146101000a81548160ff0219169083151502179055506128358361317e565b426008819055506000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061290e5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561291857600090505b60008115612b4657601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561297b57506000600f54115b156129af576129a8606461299a600f548861328a90919063ffffffff16565b6132a090919063ffffffff16565b9050612b22565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0a57506000600e54115b15612a3e57612a376064612a29600e548861328a90919063ffffffff16565b6132a090919063ffffffff16565b9050612b21565b6000601054118015612a9a5750601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612af05750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2057612b1d6064612b0f6010548861328a90919063ffffffff16565b6132a090919063ffffffff16565b90505b5b5b6000811115612b3757612b36873083612eff565b5b8085612b439190614477565b94505b612b51878787612eff565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115612c3e57612c3d6144ab565b5b604051908082528060200260200182016040528015612c6c5781602001602082028036833780820191505090505b5090503081600081518110612c8457612c836144da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4d919061451e565b81600181518110612d6157612d606144da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dc6307f000000000000000000000000000000000000000000000000000000000000000084611ef8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e2895949392919061464e565b600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b505050505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f65906141a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd490614235565b60405180910390fd5b612fe88383836132b6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561306e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130659061471a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131019190613a4b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131659190613490565b60405180910390a36131788484846132bb565b50505050565b600061318930610f7c565b9050600080820361319b575050613287565b6007548211156131ab5760075491505b601460009054906101000a900460ff1680156131d25750600a836131cf9190613917565b82115b156131e757600a836131e49190613917565b91505b60008290506131f581612c21565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161323b9061476b565b60006040518083038185875af1925050503d8060008114613278576040519150601f19603f3d011682016040523d82523d6000602084013e61327d565b606091505b5050809250505050505b50565b600081836132989190613917565b905092915050565b600081836132ae9190613988565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132fa5780820151818401526020810190506132df565b60008484015250505050565b6000601f19601f8301169050919050565b6000613322826132c0565b61332c81856132cb565b935061333c8185602086016132dc565b61334581613306565b840191505092915050565b6000602082019050818103600083015261336a8184613317565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133a282613377565b9050919050565b6133b281613397565b81146133bd57600080fd5b50565b6000813590506133cf816133a9565b92915050565b6000819050919050565b6133e8816133d5565b81146133f357600080fd5b50565b600081359050613405816133df565b92915050565b6000806040838503121561342257613421613372565b5b6000613430858286016133c0565b9250506020613441858286016133f6565b9150509250929050565b60008115159050919050565b6134608161344b565b82525050565b600060208201905061347b6000830184613457565b92915050565b61348a816133d5565b82525050565b60006020820190506134a56000830184613481565b92915050565b6000602082840312156134c1576134c0613372565b5b60006134cf848285016133f6565b91505092915050565b6000806000606084860312156134f1576134f0613372565b5b60006134ff868287016133c0565b9350506020613510868287016133c0565b9250506040613521868287016133f6565b9150509250925092565b60006060820190506135406000830186613457565b61354d6020830185613481565b61355a6040830184613481565b949350505050565b600060ff82169050919050565b61357881613562565b82525050565b6000602082019050613593600083018461356f565b92915050565b6135a28161344b565b81146135ad57600080fd5b50565b6000813590506135bf81613599565b92915050565b600080604083850312156135dc576135db613372565b5b60006135ea858286016133c0565b92505060206135fb858286016135b0565b9150509250929050565b60006020828403121561361b5761361a613372565b5b6000613629848285016133c0565b91505092915050565b60006020828403121561364857613647613372565b5b6000613656848285016135b0565b91505092915050565b61366881613397565b82525050565b6000602082019050613683600083018461365f565b92915050565b600060608201905061369e6000830186613481565b6136ab6020830185613481565b6136b86040830184613481565b949350505050565b600080604083850312156136d7576136d6613372565b5b60006136e5858286016133c0565b92505060206136f6858286016133c0565b9150509250929050565b60008060006060848603121561371957613718613372565b5b6000613727868287016135b0565b9350506020613738868287016133f6565b9250506040613749868287016133f6565b9150509250925092565b60006060820190506137686000830186613457565b6137756020830185613457565b6137826040830184613457565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137d157607f821691505b6020821081036137e4576137e361378a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138206020836132cb565b915061382b826137ea565b602082019050919050565b6000602082019050818103600083015261384f81613813565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006138b26024836132cb565b91506138bd82613856565b604082019050919050565b600060208201905081810360008301526138e1816138a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613922826133d5565b915061392d836133d5565b925082820261393b816133d5565b91508282048414831517613952576139516138e8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613993826133d5565b915061399e836133d5565b9250826139ae576139ad613959565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a156028836132cb565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b6000613a56826133d5565b9150613a61836133d5565b9250828201905080821115613a7957613a786138e8565b5b92915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b6000613ab56020836132cb565b9150613ac082613a7f565b602082019050919050565b60006020820190508181036000830152613ae481613aa8565b9050919050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b6000613b476028836132cb565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bd96025836132cb565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f4f6e6c79206d61726b6574696e672077616c6c65742063616e2063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000613c6b602c836132cb565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000613cfd6029836132cb565b9150613d0882613ca1565b604082019050919050565b60006020820190508181036000830152613d2c81613cf0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613d8f6034836132cb565b9150613d9a82613d33565b604082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b6000613e21602a836132cb565b9150613e2c82613dc5565b604082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613eb36039836132cb565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f546f74616c207472616e73666572206665652063616e6e6f742062652068696760008201527f686572207468616e203130302500000000000000000000000000000000000000602082015250565b6000613f45602d836132cb565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fd76026836132cb565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140696024836132cb565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140fb6022836132cb565b91506141068261409f565b604082019050919050565b6000602082019050818103600083015261412a816140ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061418d6025836132cb565b915061419882614131565b604082019050919050565b600060208201905081810360008301526141bc81614180565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061421f6023836132cb565b915061422a826141c3565b604082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006142b16022836132cb565b91506142bc82614255565b604082019050919050565b600060208201905081810360008301526142e0816142a4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b60006143436026836132cb565b915061434e826142e7565b604082019050919050565b6000602082019050818103600083015261437281614336565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006143af6013836132cb565b91506143ba82614379565b602082019050919050565b600060208201905081810360008301526143de816143a2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b60006144416027836132cb565b915061444c826143e5565b604082019050919050565b6000602082019050818103600083015261447081614434565b9050919050565b6000614482826133d5565b915061448d836133d5565b92508282039050818111156144a5576144a46138e8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614518816133a9565b92915050565b60006020828403121561453457614533613372565b5b600061454284828501614509565b91505092915050565b6000819050919050565b6000819050919050565b600061457a6145756145708461454b565b614555565b6133d5565b9050919050565b61458a8161455f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145c581613397565b82525050565b60006145d783836145bc565b60208301905092915050565b6000602082019050919050565b60006145fb82614590565b614605818561459b565b9350614610836145ac565b8060005b8381101561464157815161462888826145cb565b9750614633836145e3565b925050600181019050614614565b5085935050505092915050565b600060a0820190506146636000830188613481565b6146706020830187614581565b818103604083015261468281866145f0565b9050614691606083018561365f565b61469e6080830184613481565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147046026836132cb565b915061470f826146a8565b604082019050919050565b60006020820190508181036000830152614733816146f7565b9050919050565b600081905092915050565b50565b600061475560008361473a565b915061476082614745565b600082019050919050565b600061477682614748565b915081905091905056fea26469706673582212203c0bd021a7bb0cd72c5312d4a9e01172343dea705056134d8d850271a749ecaa64736f6c63430008130033