[ { "inputs": [ { "internalType": "address", "name": "_treasure", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_operationsWalletAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CallFailed", "type": "error" }, { "inputs": [], "name": "CannotSetMaxTxAmountToLessThanHalfPercent", "type": "error" }, { "inputs": [], "name": "CannotSetMaxTxAmountToMoreThan10Percent", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "ERC20BlacklistedAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "maxTxAmount", "type": "uint256" } ], "name": "ERC20ExceedsMaxTxAmount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "maxTxAmount", "type": "uint256" } ], "name": "ERC20TransferExceedsMaxTx", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "maxWalletAmount", "type": "uint256" } ], "name": "ERC20TransferExceedsMaxWallet", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "InvalidAddress", "type": "error" }, { "inputs": [], "name": "LiquidityIsStillLocked", "type": "error" }, { "inputs": [], "name": "NotOwnerOrOperations", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "TaxExceeds10Percent", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addy", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "changer", "type": "bool" } ], "name": "BlacklistAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "LiquidityAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LiquidityRecovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "from", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "to", "type": "uint256" } ], "name": "MaxTxAmountChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "from", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "to", "type": "uint256" } ], "name": "MaxWalletChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int8", "name": "t", "type": "int8" }, { "indexed": false, "internalType": "uint256", "name": "from", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "to", "type": "uint256" } ], "name": "OperationsTaxChange", "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "PoolChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_newWallet", "type": "address" } ], "name": "SetOperationsWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountAfterTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "taxRate", "type": "uint256" } ], "name": "TaxedTransfer", "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": "addy", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "changer", "type": "bool" } ], "name": "WhitelistAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawETH", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawTokens", "type": "event" }, { "inputs": [], "name": "_progressSwap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "addLiquidity", "outputs": [], "stateMutability": "payable", "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": "value", "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": [ { "internalType": "address", "name": "addy", "type": "address" }, { "internalType": "bool", "name": "changer", "type": "bool" } ], "name": "blacklistAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blacklistedAddresses", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addy", "type": "address" }, { "internalType": "bool", "name": "changer", "type": "bool" } ], "name": "emergencyTaxRemoval", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getLowerTxValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUpperTxValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTxAmount", "type": "uint256" } ], "name": "maxTxAmountChange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxWalletAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWalletAmount", "type": "uint256" } ], "name": "maxWalletChange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operationsTaxBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operationsTaxSell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operationsWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tax", "type": "uint256" } ], "name": "setOperationsTaxBuy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tax", "type": "uint256" } ], "name": "setOperationsTaxSell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newWallet", "type": "address" } ], "name": "setOperationsWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistedAddresses", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526a01a784379d99db420000006006556a084595161401484a0000006007556005600c556005600d556000600f60146101000a81548160ff0219169083151502179055503480156200005457600080fd5b5060405162005d1838038062005d1883398181016040528101906200007a919062001a84565b83838383826040518060400160405280600481526020017f74657374000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f74657374000000000000000000000000000000000000000000000000000000008152508160039081620000fc919062001d70565b5080600490816200010e919062001d70565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001865760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200017d919062001e68565b60405180910390fd5b6200019781620008e660201b60201c565b5081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000620002e0620009ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006eb919062001e85565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079b919062001e85565b6040518363ffffffff1660e01b8152600401620007ba92919062001eb7565b6020604051808303816000875af1158015620007da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000800919062001e85565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050620008dc846b033b2e3c9fd0803ce8000000620009d660201b60201c565b505050506200231d565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a4b5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000a42919062001e68565b60405180910390fd5b62000a5f6000838362000a6360201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ad85760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000acf919062001e68565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168062000b7a5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1562000bc15782826040517fd6fdca5700000000000000000000000000000000000000000000000000000000815260040162000bb892919062001eb7565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801562000c665750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000d8557600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000d8457600060065490508082111562000d135781816040517f1026baf800000000000000000000000000000000000000000000000000000000815260040162000d0a92919062001ef5565b60405180910390fd5b600060075490508062000d2c856200130560201b60201c565b8462000d39919062001f51565b111562000d815782816040517ff4f86d2d00000000000000000000000000000000000000000000000000000000815260040162000d7892919062001ef5565b60405180910390fd5b50505b5b6000819050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801562000e2f5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15620012ec57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148062000edf5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620012eb5760065482111562000f3357816006546040517fac5219fa00000000000000000000000000000000000000000000000000000000815260040162000f2a92919062001ef5565b60405180910390fd5b6000600c5411801562000f9357508373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801562000fea5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156200102357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15620010e8576000600c54905060006064828562001042919062001f8c565b6200104e919062002006565b9050620010638630836200134d60201b60201c565b80846200107191906200203e565b92508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f950bf68fecec7b605a7ba01ed8c599a388694fd2f5b588a71f54ccd1c01ca16b86868587604051620010d8949392919062002079565b60405180910390a35050620012ea565b8273ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015620011905750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015620011c957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620011e35750600f60149054906101000a900460ff16155b15620012e9576000600d5490506001600f60146101000a81548160ff0219169083151502179055506200121b6200144f60201b60201c565b6000600f60146101000a81548160ff02191690831515021790555060006064828562001248919062001f8c565b62001254919062002006565b9050620012698630836200134d60201b60201c565b80846200127791906200203e565b92508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f950bf68fecec7b605a7ba01ed8c599a388694fd2f5b588a71f54ccd1c01ca16b86868587604051620012de949392919062002079565b60405180910390a350505b5b5b5b620012ff848483620014a060201b60201c565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620013c25760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401620013b9919062001e68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620014375760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200142e919062001e68565b60405180910390fd5b6200144a83838362000a6360201b60201c565b505050565b600062001462306200130560201b60201c565b03156200149e5760006200147c306200130560201b60201c565b905060008111156200149c576200149b816000620016d060201b60201c565b5b505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620014f6578060026000828254620014e9919062001f51565b92505081905550620015cc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562001585578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200157c93929190620020c6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001617578060026000828254039250508190555062001664565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620016c3919062002103565b60405180910390a3505050565b6000600267ffffffffffffffff811115620016f057620016ef62001b01565b5b6040519080825280602002602001820160405280156200171f5781602001602082028036833780820191505090505b50905030816000815181106200173a576200173962002120565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001808919062001e85565b816001815181106200181f576200181e62002120565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620018d89291906200214f565b6020604051808303816000875af1158015620018f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200191e9190620021b9565b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947848484600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401620019a6959493929190620022b9565b600060405180830381600087803b158015620019c157600080fd5b505af1158015620019d6573d6000803e3d6000fd5b505050507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486834760405162001a0d92919062001ef5565b60405180910390a1505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001a4c8262001a1f565b9050919050565b62001a5e8162001a3f565b811462001a6a57600080fd5b50565b60008151905062001a7e8162001a53565b92915050565b6000806000806080858703121562001aa15762001aa062001a1a565b5b600062001ab18782880162001a6d565b945050602062001ac48782880162001a6d565b935050604062001ad78782880162001a6d565b925050606062001aea8782880162001a6d565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062001b7857607f821691505b60208210810362001b8e5762001b8d62001b30565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262001bf87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001bb9565b62001c04868362001bb9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001c5162001c4b62001c458462001c1c565b62001c26565b62001c1c565b9050919050565b6000819050919050565b62001c6d8362001c30565b62001c8562001c7c8262001c58565b84845462001bc6565b825550505050565b600090565b62001c9c62001c8d565b62001ca981848462001c62565b505050565b5b8181101562001cd15762001cc560008262001c92565b60018101905062001caf565b5050565b601f82111562001d205762001cea8162001b94565b62001cf58462001ba9565b8101602085101562001d05578190505b62001d1d62001d148562001ba9565b83018262001cae565b50505b505050565b600082821c905092915050565b600062001d456000198460080262001d25565b1980831691505092915050565b600062001d60838362001d32565b9150826002028217905092915050565b62001d7b8262001af6565b67ffffffffffffffff81111562001d975762001d9662001b01565b5b62001da3825462001b5f565b62001db082828562001cd5565b600060209050601f83116001811462001de8576000841562001dd3578287015190505b62001ddf858262001d52565b86555062001e4f565b601f19841662001df88662001b94565b60005b8281101562001e225784890151825560018201915060208501945060208101905062001dfb565b8683101562001e42578489015162001e3e601f89168262001d32565b8355505b6001600288020188555050505b505050505050565b62001e628162001a3f565b82525050565b600060208201905062001e7f600083018462001e57565b92915050565b60006020828403121562001e9e5762001e9d62001a1a565b5b600062001eae8482850162001a6d565b91505092915050565b600060408201905062001ece600083018562001e57565b62001edd602083018462001e57565b9392505050565b62001eef8162001c1c565b82525050565b600060408201905062001f0c600083018562001ee4565b62001f1b602083018462001ee4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001f5e8262001c1c565b915062001f6b8362001c1c565b925082820190508082111562001f865762001f8562001f22565b5b92915050565b600062001f998262001c1c565b915062001fa68362001c1c565b925082820262001fb68162001c1c565b9150828204841483151762001fd05762001fcf62001f22565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620020138262001c1c565b9150620020208362001c1c565b92508262002033576200203262001fd7565b5b828204905092915050565b60006200204b8262001c1c565b9150620020588362001c1c565b925082820390508181111562002073576200207262001f22565b5b92915050565b600060808201905062002090600083018762001ee4565b6200209f602083018662001ee4565b620020ae604083018562001ee4565b620020bd606083018462001ee4565b95945050505050565b6000606082019050620020dd600083018662001e57565b620020ec602083018562001ee4565b620020fb604083018462001ee4565b949350505050565b60006020820190506200211a600083018462001ee4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905062002166600083018562001e57565b62002175602083018462001ee4565b9392505050565b60008115159050919050565b62002193816200217c565b81146200219f57600080fd5b50565b600081519050620021b38162002188565b92915050565b600060208284031215620021d257620021d162001a1a565b5b6000620021e284828501620021a2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620022228162001a3f565b82525050565b600062002236838362002217565b60208301905092915050565b6000602082019050919050565b60006200225c82620021eb565b620022688185620021f6565b9350620022758362002207565b8060005b83811015620022ac57815162002290888262002228565b97506200229d8362002242565b92505060018101905062002279565b5085935050505092915050565b600060a082019050620022d0600083018862001ee4565b620022df602083018762001ee4565b8181036040830152620022f381866200224f565b905062002304606083018562001e57565b62002313608083018462001ee4565b9695505050505050565b6139eb806200232d6000396000f3fe6080604052600436106102085760003560e01c8063740f820a11610118578063dd62ed3e116100a0578063ef437ff51161006f578063ef437ff514610757578063ef46d6b014610780578063f2fde38b146107ab578063f887ea40146107d4578063fd72e22a146107ff5761020f565b8063dd62ed3e146106d0578063e086e5ec1461070d578063e8078d9414610724578063ee5ecc891461072e5761020f565b80638da5cb5b116100e75780638da5cb5b146105d557806395d89b4114610600578063a9059cbb1461062b578063aa4bde2814610668578063d5749d42146106935761020f565b8063740f820a146105195780637497e2961461054257806375ca0b461461057f5780638c0b5e22146105aa5761020f565b806337df2de21161019b57806349df728c1161016a57806349df728c146104485780635e27922e14610471578063614eca141461049c57806370a08231146104c5578063715018a6146105025761020f565b806337df2de21461039e578063432c771a146103c9578063455a4396146103f457806349bd5a5e1461041d5761020f565b806318160ddd116101d757806318160ddd146102e25780631f6dcb0b1461030d57806323b872dd14610336578063313ce567146103735761020f565b806306c933d81461021457806306fdde0314610251578063095ea7b31461027c5780630ab68e47146102b95761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612f07565b61082a565b6040516102489190612f4f565b60405180910390f35b34801561025d57600080fd5b5061026661084a565b6040516102739190612ffa565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613052565b6108dc565b6040516102b09190612f4f565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190613092565b6108ff565b005b3480156102ee57600080fd5b506102f76109ce565b60405161030491906130ce565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190613092565b6109d8565b005b34801561034257600080fd5b5061035d600480360381019061035891906130e9565b610aa7565b60405161036a9190612f4f565b60405180910390f35b34801561037f57600080fd5b50610388610ad6565b6040516103959190613158565b60405180910390f35b3480156103aa57600080fd5b506103b3610adf565b6040516103c091906130ce565b60405180910390f35b3480156103d557600080fd5b506103de610b06565b6040516103eb9190612f4f565b60405180910390f35b34801561040057600080fd5b5061041b6004803603810190610416919061319f565b610b19565b005b34801561042957600080fd5b50610432610bca565b60405161043f91906131ee565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a9190612f07565b610bf0565b005b34801561047d57600080fd5b50610486610e22565b60405161049391906130ce565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190613092565b610e28565b005b3480156104d157600080fd5b506104ec60048036038101906104e79190612f07565b610f81565b6040516104f991906130ce565b60405180910390f35b34801561050e57600080fd5b50610517610fc9565b005b34801561052557600080fd5b50610540600480360381019061053b9190613092565b610fdd565b005b34801561054e57600080fd5b5061056960048036038101906105649190612f07565b611136565b6040516105769190612f4f565b60405180910390f35b34801561058b57600080fd5b50610594611156565b6040516105a191906130ce565b60405180910390f35b3480156105b657600080fd5b506105bf61115c565b6040516105cc91906130ce565b60405180910390f35b3480156105e157600080fd5b506105ea611162565b6040516105f791906131ee565b60405180910390f35b34801561060c57600080fd5b5061061561118c565b6040516106229190612ffa565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613052565b61121e565b60405161065f9190612f4f565b60405180910390f35b34801561067457600080fd5b5061067d611241565b60405161068a91906130ce565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190612f07565b611247565b6040516106c79190612f4f565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613209565b611267565b60405161070491906130ce565b60405180910390f35b34801561071957600080fd5b506107226112ee565b005b61072c6114c9565b005b34801561073a57600080fd5b5061075560048036038101906107509190612f07565b6116da565b005b34801561076357600080fd5b5061077e6004803603810190610779919061319f565b611990565b005b34801561078c57600080fd5b50610795611b0f565b6040516107a291906130ce565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd9190612f07565b611b36565b005b3480156107e057600080fd5b506107e9611bbc565b6040516107f691906132a8565b60405180910390f35b34801561080b57600080fd5b50610814611be2565b60405161082191906131ee565b60405180910390f35b600b6020528060005260406000206000915054906101000a900460ff1681565b606060038054610859906132f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610885906132f2565b80156108d25780601f106108a7576101008083540402835291602001916108d2565b820191906000526020600020905b8154815290600101906020018083116108b557829003601f168201915b5050505050905090565b6000806108e7611c08565b90506108f4818585611c10565b600191505092915050565b610907611c22565b61090f610adf565b811115610948576040517fd0f20bfd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610950611b0f565b811015610989576040517f373afe5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fe3052f2f134f247948088ca6829f4168989b7313f1b54de88cc18178a249de4b600654826040516109bc929190613323565b60405180910390a18060068190555050565b6000600254905090565b6109e0611c22565b6109e8610adf565b811115610a21576040517fd0f20bfd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a29611b0f565b811015610a62576040517f373afe5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1b970b75ef934269cd0be4373c907bd8a8527f3413dc1ae746eebf30d2aee1cb60075482604051610a95929190613323565b60405180910390a18060078190555050565b600080610ab2611c08565b9050610abf858285611ca9565b610aca858585611d3d565b60019150509392505050565b60006012905090565b60006064600a610aed6109ce565b610af7919061337b565b610b0191906133ec565b905090565b600f60149054906101000a900460ff1681565b610b21611c22565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f09fb98d4f02479ce251faed0f992a3c326d006e19ffa4f7269239763a644f72582604051610bbe9190612f4f565b60405180910390a25050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf8611c08565b73ffffffffffffffffffffffffffffffffffffffff16610c16611162565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c8f5750610c3d611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610cc6576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d0191906131ee565b602060405180830381865afa158015610d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d429190613432565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610da192919061345f565b6020604051808303816000875af1158015610dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de4919061349d565b507f680f2e4f4032ebf1774e8cdbaddcb1b617a5a606411c8ca96257ada338d3833c8282604051610e1692919061345f565b60405180910390a15050565b600c5481565b610e30611c08565b73ffffffffffffffffffffffffffffffffffffffff16610e4e611162565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ec75750610e75611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610efe576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005811115610f39576040517f562a566500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c819055507f8e6ab5a3ef7850e3581114828d52b8029bd1a04919b33b282f75213bb8481dd46001600c5483604051610f7693929190613512565b60405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fd1611c22565b610fdb6000611e31565b565b610fe5611c08565b73ffffffffffffffffffffffffffffffffffffffff16611003611162565b73ffffffffffffffffffffffffffffffffffffffff161415801561107c575061102a611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156110b3576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058111156110ee576040517f562a566500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d819055507f8e6ab5a3ef7850e3581114828d52b8029bd1a04919b33b282f75213bb8481dd46002600d548360405161112b93929190613584565b60405180910390a150565b60096020528060005260406000206000915054906101000a900460ff1681565b600d5481565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461119b906132f2565b80601f01602080910402602001604051908101604052809291908181526020018280546111c7906132f2565b80156112145780601f106111e957610100808354040283529160200191611214565b820191906000526020600020905b8154815290600101906020018083116111f757829003601f168201915b5050505050905090565b600080611229611c08565b9050611236818585611d3d565b600191505092915050565b60075481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112f6611c08565b73ffffffffffffffffffffffffffffffffffffffff16611314611162565b73ffffffffffffffffffffffffffffffffffffffff161415801561138d575061133b611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156113c4576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60004790506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611411906135ec565b60006040518083038185875af1925050503d806000811461144e576040519150601f19603f3d011682016040523d82523d6000602084013e611453565b606091505b505090508061148e576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f94effa14ea3a1ef396fa2fd829336d1597f1d76b548c26bfa2332869706638af826040516114bd91906130ce565b60405180910390a15050565b6114d1611c08565b73ffffffffffffffffffffffffffffffffffffffff166114ef611162565b73ffffffffffffffffffffffffffffffffffffffff16141580156115685750611516611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561159f576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115aa33610f81565b90506115b7333083611d3d565b6115e430600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611c10565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033610384426116379190613601565b6040518863ffffffff1660e01b815260040161165896959493929190613670565b60606040518083038185885af1158015611676573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061169b91906136d1565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b34826040516116cf929190613323565b60405180910390a150565b6116e2611c08565b73ffffffffffffffffffffffffffffffffffffffff16611700611162565b73ffffffffffffffffffffffffffffffffffffffff16141580156117795750611727611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156117b0576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361182157806040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260040161181891906131ee565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f56a15c3c0ab49fe2049a0c64f269486c32caf6fa97679f011f7c9c3c82e526ca8160405161198591906131ee565b60405180910390a150565b611998611c08565b73ffffffffffffffffffffffffffffffffffffffff166119b6611162565b73ffffffffffffffffffffffffffffffffffffffff1614158015611a2f57506119dd611c08565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a66576040517f1045f14200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e0bf3ce98fac4118d5a0a8fe49e83b6acdfdef32871c9eca20e1528d7701ba82604051611b039190612f4f565b60405180910390a25050565b600060c86001611b1d6109ce565b611b27919061337b565b611b3191906133ec565b905090565b611b3e611c22565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bb05760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611ba791906131ee565b60405180910390fd5b611bb981611e31565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b611c1d8383836001611ef7565b505050565b611c2a611c08565b73ffffffffffffffffffffffffffffffffffffffff16611c48611162565b73ffffffffffffffffffffffffffffffffffffffff1614611ca757611c6b611c08565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611c9e91906131ee565b60405180910390fd5b565b6000611cb58484611267565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d375781811015611d27578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611d1e93929190613724565b60405180910390fd5b611d3684848484036000611ef7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611daf5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611da691906131ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e215760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611e1891906131ee565b60405180910390fd5b611e2c8383836120ce565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f695760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611f6091906131ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fdb5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611fd291906131ee565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156120c8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516120bf91906130ce565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121405760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161213791906131ee565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121e15750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122255782826040517fd6fdca5700000000000000000000000000000000000000000000000000000000815260040161221c92919061375b565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c95750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123d657600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123d55760006006549050808211156123715781816040517f1026baf8000000000000000000000000000000000000000000000000000000008152600401612368929190613323565b60405180910390fd5b600060075490508061238285610f81565b8461238d9190613601565b11156123d25782816040517ff4f86d2d0000000000000000000000000000000000000000000000000000000081526004016123c9929190613323565b60405180910390fd5b50505b5b6000819050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247f5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290557600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061252d5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156129045760065482111561257d57816006546040517fac5219fa000000000000000000000000000000000000000000000000000000008152600401612574929190613323565b60405180910390fd5b6000600c541180156125dc57508373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156126325750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561266a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561271d576000600c549050600060648285612686919061337b565b61269091906133ec565b905061269d863083611d3d565b80846126a99190613784565b92508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f950bf68fecec7b605a7ba01ed8c599a388694fd2f5b588a71f54ccd1c01ca16b8686858760405161270e94939291906137b8565b60405180910390a35050612903565b8273ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156127c45750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127fc57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128155750600f60149054906101000a900460ff16155b15612902576000600d5490506001600f60146101000a81548160ff021916908315150217905550612844612916565b6000600f60146101000a81548160ff02191690831515021790555060006064828561286f919061337b565b61287991906133ec565b9050612886863083611d3d565b80846128929190613784565b92508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f950bf68fecec7b605a7ba01ed8c599a388694fd2f5b588a71f54ccd1c01ca16b868685876040516128f794939291906137b8565b60405180910390a350505b5b5b5b61291084848361294d565b50505050565b600061292130610f81565b031561294b57600061293230610f81565b9050600081111561294957612948816000612b72565b5b505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361299f5780600260008282546129939190613601565b92505081905550612a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a2b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612a2293929190613724565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abb5780600260008282540392505081905550612b08565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b6591906130ce565b60405180910390a3505050565b6000600267ffffffffffffffff811115612b8f57612b8e6137fd565b5b604051908082528060200260200182016040528015612bbd5781602001602082028036833780820191505090505b5090503081600081518110612bd557612bd461382c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca09190613870565b81600181518110612cb457612cb361382c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612d6b92919061345f565b6020604051808303816000875af1158015612d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dae919061349d565b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947848484600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e3495949392919061395b565b600060405180830381600087803b158015612e4e57600080fd5b505af1158015612e62573d6000803e3d6000fd5b505050507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868347604051612e97929190613323565b60405180910390a1505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed482612ea9565b9050919050565b612ee481612ec9565b8114612eef57600080fd5b50565b600081359050612f0181612edb565b92915050565b600060208284031215612f1d57612f1c612ea4565b5b6000612f2b84828501612ef2565b91505092915050565b60008115159050919050565b612f4981612f34565b82525050565b6000602082019050612f646000830184612f40565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa4578082015181840152602081019050612f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fcc82612f6a565b612fd68185612f75565b9350612fe6818560208601612f86565b612fef81612fb0565b840191505092915050565b600060208201905081810360008301526130148184612fc1565b905092915050565b6000819050919050565b61302f8161301c565b811461303a57600080fd5b50565b60008135905061304c81613026565b92915050565b6000806040838503121561306957613068612ea4565b5b600061307785828601612ef2565b92505060206130888582860161303d565b9150509250929050565b6000602082840312156130a8576130a7612ea4565b5b60006130b68482850161303d565b91505092915050565b6130c88161301c565b82525050565b60006020820190506130e360008301846130bf565b92915050565b60008060006060848603121561310257613101612ea4565b5b600061311086828701612ef2565b935050602061312186828701612ef2565b92505060406131328682870161303d565b9150509250925092565b600060ff82169050919050565b6131528161313c565b82525050565b600060208201905061316d6000830184613149565b92915050565b61317c81612f34565b811461318757600080fd5b50565b60008135905061319981613173565b92915050565b600080604083850312156131b6576131b5612ea4565b5b60006131c485828601612ef2565b92505060206131d58582860161318a565b9150509250929050565b6131e881612ec9565b82525050565b600060208201905061320360008301846131df565b92915050565b600080604083850312156132205761321f612ea4565b5b600061322e85828601612ef2565b925050602061323f85828601612ef2565b9150509250929050565b6000819050919050565b600061326e61326961326484612ea9565b613249565b612ea9565b9050919050565b600061328082613253565b9050919050565b600061329282613275565b9050919050565b6132a281613287565b82525050565b60006020820190506132bd6000830184613299565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061330a57607f821691505b60208210810361331d5761331c6132c3565b5b50919050565b600060408201905061333860008301856130bf565b61334560208301846130bf565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133868261301c565b91506133918361301c565b925082820261339f8161301c565b915082820484148315176133b6576133b561334c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133f78261301c565b91506134028361301c565b925082613412576134116133bd565b5b828204905092915050565b60008151905061342c81613026565b92915050565b60006020828403121561344857613447612ea4565b5b60006134568482850161341d565b91505092915050565b600060408201905061347460008301856131df565b61348160208301846130bf565b9392505050565b60008151905061349781613173565b92915050565b6000602082840312156134b3576134b2612ea4565b5b60006134c184828501613488565b91505092915050565b6000819050919050565b60008160000b9050919050565b60006134fc6134f76134f2846134ca565b613249565b6134d4565b9050919050565b61350c816134e1565b82525050565b60006060820190506135276000830186613503565b61353460208301856130bf565b61354160408301846130bf565b949350505050565b6000819050919050565b600061356e61356961356484613549565b613249565b6134d4565b9050919050565b61357e81613553565b82525050565b60006060820190506135996000830186613575565b6135a660208301856130bf565b6135b360408301846130bf565b949350505050565b600081905092915050565b50565b60006135d66000836135bb565b91506135e1826135c6565b600082019050919050565b60006135f7826135c9565b9150819050919050565b600061360c8261301c565b91506136178361301c565b925082820190508082111561362f5761362e61334c565b5b92915050565b6000819050919050565b600061365a61365561365084613635565b613249565b61301c565b9050919050565b61366a8161363f565b82525050565b600060c08201905061368560008301896131df565b61369260208301886130bf565b61369f6040830187613661565b6136ac6060830186613661565b6136b960808301856131df565b6136c660a08301846130bf565b979650505050505050565b6000806000606084860312156136ea576136e9612ea4565b5b60006136f88682870161341d565b93505060206137098682870161341d565b925050604061371a8682870161341d565b9150509250925092565b600060608201905061373960008301866131df565b61374660208301856130bf565b61375360408301846130bf565b949350505050565b600060408201905061377060008301856131df565b61377d60208301846131df565b9392505050565b600061378f8261301c565b915061379a8361301c565b92508282039050818111156137b2576137b161334c565b5b92915050565b60006080820190506137cd60008301876130bf565b6137da60208301866130bf565b6137e760408301856130bf565b6137f460608301846130bf565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061386a81612edb565b92915050565b60006020828403121561388657613885612ea4565b5b60006138948482850161385b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138d281612ec9565b82525050565b60006138e483836138c9565b60208301905092915050565b6000602082019050919050565b60006139088261389d565b61391281856138a8565b935061391d836138b9565b8060005b8381101561394e57815161393588826138d8565b9750613940836138f0565b925050600181019050613921565b5085935050505092915050565b600060a08201905061397060008301886130bf565b61397d60208301876130bf565b818103604083015261398f81866138fd565b905061399e60608301856131df565b6139ab60808301846130bf565b969550505050505056fea2646970667358221220cdd040378a45ffa9d72db8d13180aefeea5a2ce6956054682e0a9dc699bb5dda64736f6c63430008140033000000000000000000000000d91c838e728619d66e619265a102489381f98dff000000000000000000000000d91c838e728619d66e619265a102489381f98dff000000000000000000000000ee567fe1712faf6149d80da1e6934e354124cfe3000000000000000000000000d91c838e728619d66e619265a102489381f98dff