[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "AutoNukeLP", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sniper", "type": "address" } ], "name": "BoughtEarly", "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": [], "name": "ManualNukeLP", "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": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "devWalletUpdated", "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" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkSellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkTime", "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableTransferDelay", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "earlySellLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "earlySellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableEarlySellTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransaction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBlockTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBuyLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCheckTime", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDevSellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getIsLiquidity", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOsCycles", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSellEarlyMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLiquidity", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "osCycleLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "osCycles", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setCheckTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "onoff", "type": "bool" } ], "name": "setEarlySellTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_osCycles", "type": "uint256" } ], "name": "setOsCycles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForDev", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForMarketing", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferDelayEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "updateBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "updateDevWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMarketingWallet", "type": "address" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxTxnAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" }, { "internalType": "uint256", "name": "_earlySellLiquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_earlySellMarketingFee", "type": "uint256" } ], "name": "updateSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "updateSwapEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c0604052600b805465ffffffffffff191665010001000001179055600e805460ff1916600117905534801562000034575f80fd5b506040518060400160405280600681526020016543686163686160d01b8152506040518060400160405280600681526020016543484143484160d01b8152508160039081620000849190620007b2565b506004620000938282620007b2565b5050505f620000a76200044b60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d620001168160016200044f565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200015f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018591906200087a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f791906200087a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000242573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026891906200087a565b6001600160a01b031660a0819052620002839060016200044f565b60a05162000293906001620004c6565b600b805460ff60201b1916640100000000179055601e5f8082818080806b033b2e3c9fd0803ce80000006103e8620002cd82600f620008b6565b620002d99190620008d0565b6008556103e8620002ec82600f620008b6565b620002f89190620008d0565b600a556127106200030b826005620008b6565b620003179190620008d0565b6009556010899055601188905560128790558662000336898b620008f0565b620003429190620008f0565b600f5560148690556015859055601684905583620003618688620008f0565b6200036d9190620008f0565b601355601783905560188290555f601d556064601e556006805473fa7c80517bd17aba4d8d70299935d7652a1dd62f6001600160a01b03199182168117909255600780549091169091179055620003d8620003d06005546001600160a01b031690565b600162000519565b620003e530600162000519565b620003f461dead600162000519565b620004136200040b6005546001600160a01b031690565b60016200044f565b620004203060016200044f565b6200042f61dead60016200044f565b6200043b3382620005c1565b5050505050505050505062000906565b3390565b6005546001600160a01b031633146200049d5760405162461bcd60e51b815260206004820181905260248201525f80516020620035dd83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f9081526020805260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005635760405162461bcd60e51b815260206004820181905260248201525f80516020620035dd833981519152604482015260640162000494565b6001600160a01b0382165f818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006195760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000494565b600254620006289082620006a8565b6002556001600160a01b0382165f908152602081905260409020546200064f9082620006a8565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f80620006b68385620008f0565b9050838110156200070a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000494565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200073c57607f821691505b6020821081036200075b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620006a3575f81815260208120601f850160051c81016020861015620007895750805b601f850160051c820191505b81811015620007aa5782815560010162000795565b505050505050565b81516001600160401b03811115620007ce57620007ce62000713565b620007e681620007df845462000727565b8462000761565b602080601f8311600181146200081c575f8415620008045750858301515b5f19600386901b1c1916600185901b178555620007aa565b5f85815260208120601f198616915b828110156200084c578886015182559484019460019091019084016200082b565b50858210156200086a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200088b575f80fd5b81516001600160a01b03811681146200070a575f80fd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200070d576200070d620008a2565b5f82620008eb57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200070d576200070d620008a2565b60805160a051612c8b620009525f395f8181610644015281816111a20152611b2801525f81816104a501528181611aea015281816126640152818161271b01526127570152612c8b5ff3fe608060405260043610610403575f3560e01c80638da5cb5b11610215578063c02466681161011e578063e2f45605116100a8578063f2fde38b11610078578063f2fde38b14610b9c578063f63696bd14610bbb578063f637434214610bcf578063f8b45b0514610be4578063ff935af614610bf9575f80fd5b8063e2f4560514610b4a578063e884f26014610b5f578063e9d13ee314610b73578063f11a24d314610b87575f80fd5b8063d257b34f116100ee578063d257b34f14610a91578063d3e0d8d614610ab0578063d85ba06314610acf578063dd62ed3e14610ae4578063e0c6190d14610b28575f80fd5b8063c024666814610a25578063c18bc19514610a44578063c876d0b914610a63578063c8c8ebe414610a7c575f80fd5b8063a0d82dc51161019f578063a9059cbb1161016f578063a9059cbb1461097c578063aacebbe31461099b578063b583c317146109ba578063b62496f5146109d9578063bbc0c74214610a07575f80fd5b8063a0d82dc514610909578063a26577781461091e578063a457c2d71461093d578063a4d15b641461095c575f80fd5b806395d89b41116101e557806395d89b41146108975780639a7a23d6146108ab5780639aedd894146108ca5780639c3b4fdc146108df5780639fccce32146108f4575f80fd5b80638da5cb5b146108275780638ea5220f146108445780639213691314610863578063924de9b714610878575f80fd5b806349bd5a5e11610317578063751039fc116102a15780637bce5a04116102715780637bce5a04146107bf5780637d78ba1f1461067f5780638095d564146107d457806389cf5877146107f35780638a8c523c14610813575f80fd5b8063751039fc1461075b5780637571336a1461076f57806375f0a8741461078e578063796b89b9146107ad575f80fd5b8063541a43cf116102e7578063541a43cf146106ca5780636a486a8e146106df5780636ddd1713146106f457806370a0823114610713578063715018a614610747575f80fd5b806349bd5a5e146106335780634a62bb65146106665780634e4e5afd1461067f5780634fbee19314610693575f80fd5b80631e787db611610398578063251208931161036857806325120893146105bb5780632bf3d42d146105d0578063313ce567146105e557806336d49bd8146106005780633950935114610614575f80fd5b80631e787db6146105545780631f3fed8f14610568578063203e727e1461057d57806323b872dd1461059c575f80fd5b806318160ddd116103d357806318160ddd146104df5780631816467f146104fd57806319f886e41461051e5780631a8145bb1461053f575f80fd5b806306fdde031461040e578063095ea7b31461043857806310d5de53146104675780631694505e14610494575f80fd5b3661040a57005b5f80fd5b348015610419575f80fd5b50610422610c18565b60405161042f91906127f1565b60405180910390f35b348015610443575f80fd5b50610457610452366004612853565b610ca8565b604051901515815260200161042f565b348015610472575f80fd5b5061045761048136600461287d565b602080525f908152604090205460ff1681565b34801561049f575f80fd5b506104c77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161042f565b3480156104ea575f80fd5b506002545b60405190815260200161042f565b348015610508575f80fd5b5061051c61051736600461287d565b610cbe565b005b348015610529575f80fd5b50600b5461045790640100000000900460ff1681565b34801561054a575f80fd5b506104ef601a5481565b34801561055f575f80fd5b5061051c610d4d565b348015610573575f80fd5b506104ef60195481565b348015610588575f80fd5b5061051c610597366004612898565b610d9c565b3480156105a7575f80fd5b506104576105b63660046128af565b610e79565b3480156105c6575f80fd5b506104ef601d5481565b3480156105db575f80fd5b506104ef60185481565b3480156105f0575f80fd5b506040516012815260200161042f565b34801561060b575f80fd5b50601d546104ef565b34801561061f575f80fd5b5061045761062e366004612853565b610ee0565b34801561063e575f80fd5b506104c77f000000000000000000000000000000000000000000000000000000000000000081565b348015610671575f80fd5b50600b546104579060ff1681565b34801561068a575f80fd5b506104ef610f15565b34801561069e575f80fd5b506104576106ad36600461287d565b6001600160a01b03165f908152601f602052604090205460ff1690565b3480156106d5575f80fd5b506104ef60175481565b3480156106ea575f80fd5b506104ef60135481565b3480156106ff575f80fd5b50600b546104579062010000900460ff1681565b34801561071e575f80fd5b506104ef61072d36600461287d565b6001600160a01b03165f9081526020819052604090205490565b348015610752575f80fd5b5061051c610f36565b348015610766575f80fd5b50610457610fa9565b34801561077a575f80fd5b5061051c6107893660046128fc565b610fe5565b348015610799575f80fd5b506006546104c7906001600160a01b031681565b3480156107b8575f80fd5b50426104ef565b3480156107ca575f80fd5b506104ef60105481565b3480156107df575f80fd5b5061051c6107ee36600461292f565b611038565b3480156107fe575f80fd5b50600b5465010000000000900460ff16610457565b34801561081e575f80fd5b5061051c6110e0565b348015610832575f80fd5b506005546001600160a01b03166104c7565b34801561084f575f80fd5b506007546104c7906001600160a01b031681565b34801561086e575f80fd5b506104ef60145481565b348015610883575f80fd5b5061051c610892366004612958565b611121565b3480156108a2575f80fd5b50610422611167565b3480156108b6575f80fd5b5061051c6108c53660046128fc565b611176565b3480156108d5575f80fd5b506104ef601e5481565b3480156108ea575f80fd5b506104ef60125481565b3480156108ff575f80fd5b506104ef601b5481565b348015610914575f80fd5b506104ef60165481565b348015610929575f80fd5b5061051c610938366004612958565b611255565b348015610948575f80fd5b50610457610957366004612853565b61129d565b348015610967575f80fd5b50600b54610457906301000000900460ff1681565b348015610987575f80fd5b50610457610996366004612853565b6112ea565b3480156109a6575f80fd5b5061051c6109b536600461287d565b6112f6565b3480156109c5575f80fd5b5061051c6109d4366004612898565b61137c565b3480156109e4575f80fd5b506104576109f336600461287d565b60216020525f908152604090205460ff1681565b348015610a12575f80fd5b50600b5461045790610100900460ff1681565b348015610a30575f80fd5b5061051c610a3f3660046128fc565b6113ab565b348015610a4f575f80fd5b5061051c610a5e366004612898565b611433565b348015610a6e575f80fd5b50600e546104579060ff1681565b348015610a87575f80fd5b506104ef60085481565b348015610a9c575f80fd5b50610457610aab366004612898565b611504565b348015610abb575f80fd5b50600b54640100000000900460ff16610457565b348015610ada575f80fd5b506104ef600f5481565b348015610aef575f80fd5b506104ef610afe366004612971565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610b33575f80fd5b50600b546104579065010000000000900460ff1681565b348015610b55575f80fd5b506104ef60095481565b348015610b6a575f80fd5b5061045761165a565b348015610b7e575f80fd5b506016546104ef565b348015610b92575f80fd5b506104ef60115481565b348015610ba7575f80fd5b5061051c610bb636600461287d565b611696565b348015610bc6575f80fd5b506011546104ef565b348015610bda575f80fd5b506104ef60155481565b348015610bef575f80fd5b506104ef600a5481565b348015610c04575f80fd5b5061051c610c133660046129a8565b611780565b606060038054610c27906129df565b80601f0160208091040260200160405190810160405280929190818152602001828054610c53906129df565b8015610c9e5780601f10610c7557610100808354040283529160200191610c9e565b820191905f5260205f20905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b5f610cb4338484611834565b5060015b92915050565b6005546001600160a01b03163314610cf15760405162461bcd60e51b8152600401610ce890612a17565b60405180910390fd5b6007546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d775760405162461bcd60e51b8152600401610ce890612a17565b600b805465ff0000000000198116650100000000009182900460ff1615909102179055565b6005546001600160a01b03163314610dc65760405162461bcd60e51b8152600401610ce890612a17565b670de0b6b3a76400006103e8610ddb60025490565b610de6906005612a60565b610df09190612a77565b610dfa9190612a77565b811015610e615760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610ce8565b610e7381670de0b6b3a7640000612a60565b60085550565b5f610e85848484611958565b610ed68433610ed185604051806060016040528060288152602001612c09602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190612188565b611834565b5060019392505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610cb4918590610ed190866121c0565b600b545f906301000000900460ff16610f2f575060145490565b5060185490565b6005546001600160a01b03163314610f605760405162461bcd60e51b8152600401610ce890612a17565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b03163314610fd55760405162461bcd60e51b8152600401610ce890612a17565b50600b805460ff19169055600190565b6005546001600160a01b0316331461100f5760405162461bcd60e51b8152600401610ce890612a17565b6001600160a01b03919091165f9081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110625760405162461bcd60e51b8152600401610ce890612a17565b6010839055601182905560128190558061107c8385612a96565b6110869190612a96565b600f819055603210156110db5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c6573730000006044820152606401610ce8565b505050565b6005546001600160a01b0316331461110a5760405162461bcd60e51b8152600401610ce890612a17565b600b805462ffff0019166201010017905543601c55565b6005546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610ce890612a17565b600b8054911515620100000262ff000019909216919091179055565b606060048054610c27906129df565b6005546001600160a01b031633146111a05760405162461bcd60e51b8152600401610ce890612a17565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036112475760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ce8565b6112518282612225565b5050565b6005546001600160a01b0316331461127f5760405162461bcd60e51b8152600401610ce890612a17565b600b805491151563010000000263ff00000019909216919091179055565b5f610cb43384610ed185604051806060016040528060258152602001612c3160259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190612188565b5f610cb4338484611958565b6005546001600160a01b031633146113205760405162461bcd60e51b8152600401610ce890612a17565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113a65760405162461bcd60e51b8152600401610ce890612a17565b601d55565b6005546001600160a01b031633146113d55760405162461bcd60e51b8152600401610ce890612a17565b6001600160a01b0382165f818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610ce890612a17565b670de0b6b3a76400006103e861147260025490565b61147d90600f612a60565b6114879190612a77565b6114919190612a77565b8110156114ec5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e352560e01b6064820152608401610ce8565b6114fe81670de0b6b3a7640000612a60565b600a5550565b6005545f906001600160a01b031633146115305760405162461bcd60e51b8152600401610ce890612a17565b620186a061153d60025490565b611548906001612a60565b6115529190612a77565b8210156115bf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ce8565b6103e86115cb60025490565b6115d6906005612a60565b6115e09190612a77565b82111561164c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ce8565b50600981905560015b919050565b6005545f906001600160a01b031633146116865760405162461bcd60e51b8152600401610ce890612a17565b50600e805460ff19169055600190565b6005546001600160a01b031633146116c05760405162461bcd60e51b8152600401610ce890612a17565b6001600160a01b0381166117255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117aa5760405162461bcd60e51b8152600401610ce890612a17565b60148590556015849055601683905560178290556018819055826117ce8587612a96565b6117d89190612a96565b60138190556063101561182d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c6573730000006044820152606401610ce8565b5050505050565b6001600160a01b0383166118965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce8565b6001600160a01b0382166118f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661197e5760405162461bcd60e51b8152600401610ce890612aa9565b6001600160a01b0382166119a45760405162461bcd60e51b8152600401610ce890612aee565b805f036119b6576110db83835f612278565b600b5460ff1615611e65576005546001600160a01b038481169116148015906119ed57506005546001600160a01b03838116911614155b8015611a0157506001600160a01b03821615155b8015611a1857506001600160a01b03821661dead14155b8015611a2e5750600554600160a01b900460ff16155b15611e6557600b54610100900460ff16611ac4576001600160a01b0383165f908152601f602052604090205460ff1680611a7f57506001600160a01b0382165f908152601f602052604090205460ff165b611ac45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ce8565b600e5460ff1615611c09576005546001600160a01b03838116911614801590611b1f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611b5d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611c0957325f908152600c60205260409020544311611bf75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610ce8565b325f908152600c602052604090204390555b6001600160a01b0383165f9081526021602052604090205460ff168015611c4757506001600160a01b0382165f90815260208052604090205460ff16155b15611d2a57600854811115611cbc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ce8565b600a546001600160a01b0383165f90815260208190526040902054611ce19083612a96565b1115611d255760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ce8565b611e65565b6001600160a01b0382165f9081526021602052604090205460ff168015611d6857506001600160a01b0383165f90815260208052604090205460ff16155b15611dde57600854811115611d255760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ce8565b6001600160a01b0382165f90815260208052604090205460ff16611e6557600a546001600160a01b0383165f90815260208190526040902054611e219083612a96565b1115611e655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ce8565b305f9081526020819052604090205460095481108015908190611e905750600b5462010000900460ff165b8015611ea65750600554600160a01b900460ff16155b8015611eca57506001600160a01b0385165f9081526021602052604090205460ff16155b8015611eee57506001600160a01b0385165f908152601f602052604090205460ff16155b8015611f1257506001600160a01b0384165f908152601f602052604090205460ff16155b15611f40576005805460ff60a01b1916600160a01b179055611f3261237e565b6005805460ff60a01b191690555b6005546001600160a01b0386165f908152601f602052604090205460ff600160a01b909204821615911680611f8c57506001600160a01b0385165f908152601f602052604090205460ff165b15611f9457505f5b5f8115612174576001600160a01b0386165f9081526021602052604090205460ff168015611fc357505f601354115b1561207e57611fe86064611fe26013548861250f90919063ffffffff16565b9061258d565b905060135460155482611ffb9190612a60565b6120059190612a77565b601a5f8282546120159190612a96565b909155505060135460165461202a9083612a60565b6120349190612a77565b601b5f8282546120449190612a96565b90915550506013546014546120599083612a60565b6120639190612a77565b60195f8282546120739190612a96565b909155506121569050565b6001600160a01b0387165f9081526021602052604090205460ff1680156120a657505f600f54115b15612156576120c56064611fe2600f548861250f90919063ffffffff16565b9050600f54601154826120d89190612a60565b6120e29190612a77565b601a5f8282546120f29190612a96565b9091555050600f546012546121079083612a60565b6121119190612a77565b601b5f8282546121219190612a96565b9091555050600f546010546121369083612a60565b6121409190612a77565b60195f8282546121509190612a96565b90915550505b801561216757612167873083612278565b6121718186612b31565b94505b61217f878787612278565b50505050505050565b5f81848411156121ab5760405162461bcd60e51b8152600401610ce891906127f1565b505f6121b78486612b31565b95945050505050565b5f806121cc8385612a96565b90508381101561221e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce8565b9392505050565b6001600160a01b0382165f81815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661229e5760405162461bcd60e51b8152600401610ce890612aa9565b6001600160a01b0382166122c45760405162461bcd60e51b8152600401610ce890612aee565b61230081604051806060016040528060268152602001612be3602691396001600160a01b0386165f908152602081905260409020549190612188565b6001600160a01b038085165f90815260208190526040808220939093559084168152205461232e90826121c0565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161194b565b305f9081526020819052604081205490505f601b54601954601a546123a39190612a96565b6123ad9190612a96565b90505f8215806123bb575081155b156123c557505050565b6009546123d3906014612a60565b8311156123eb576009546123e8906014612a60565b92505b5f600283601a54866123fd9190612a60565b6124079190612a77565b6124119190612a77565b90505f61241e85836125ce565b90504761242a8261260f565b5f61243547836125ce565b90505f61245187611fe2601b548561250f90919063ffffffff16565b5f601a8190556019819055601b8190556007546040519293506001600160a01b031691839181818185875af1925050503d805f81146124ab576040519150601f19603f3d011682016040523d82523d5f602084013e6124b0565b606091505b50506006546040519197506001600160a01b03169047905f81818185875af1925050503d805f81146124fd576040519150601f19603f3d011682016040523d82523d5f602084013e612502565b606091505b5050505050505050505050565b5f825f0361251e57505f610cb8565b5f6125298385612a60565b9050826125368583612a77565b1461221e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce8565b5f61221e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127c5565b5f61221e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612188565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061264257612642612b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e29190612b58565b816001815181106126f5576126f5612b44565b60200260200101906001600160a01b031690816001600160a01b031681525050612740307f000000000000000000000000000000000000000000000000000000000000000084611834565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906127949085905f90869030904290600401612b73565b5f604051808303815f87803b1580156127ab575f80fd5b505af11580156127bd573d5f803e3d5ffd5b505050505050565b5f81836127e55760405162461bcd60e51b8152600401610ce891906127f1565b505f6121b78486612a77565b5f6020808352835180828501525f5b8181101561281c57858101830151858201604001528201612800565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612850575f80fd5b50565b5f8060408385031215612864575f80fd5b823561286f8161283c565b946020939093013593505050565b5f6020828403121561288d575f80fd5b813561221e8161283c565b5f602082840312156128a8575f80fd5b5035919050565b5f805f606084860312156128c1575f80fd5b83356128cc8161283c565b925060208401356128dc8161283c565b929592945050506040919091013590565b80358015158114611655575f80fd5b5f806040838503121561290d575f80fd5b82356129188161283c565b9150612926602084016128ed565b90509250929050565b5f805f60608486031215612941575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612968575f80fd5b61221e826128ed565b5f8060408385031215612982575f80fd5b823561298d8161283c565b9150602083013561299d8161283c565b809150509250929050565b5f805f805f60a086880312156129bc575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b600181811c908216806129f357607f821691505b602082108103612a1157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610cb857610cb8612a4c565b5f82612a9157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610cb857610cb8612a4c565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610cb857610cb8612a4c565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612b68575f80fd5b815161221e8161283c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612bc15784516001600160a01b031683529383019391830191600101612b9c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122048461d42450fa93db7b965d189647d9014c3eba6b75038bf1c46ed0dd35ea5fe64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572