Contract Address Details

0x706167b00Af7308674509dD78f08fba94Ef274Bf

Token
KINGz2 (KZC)
Creator
0x896ff1–32488b at 0x12b132–bde91f
Balance
2.0000000000018182 SAMA
Tokens
Fetching tokens...
Transactions
5 Transactions
Transfers
6 Transfers
Gas Used
1,460,866
Last Balance Update
17037056
Contract name:
KINGz




Optimization enabled
true
Compiler version
v0.8.17+commit.8df45f5f




Optimization runs
200
EVM Version
default




Verified at
2023-04-07T00:22:47.028509Z

Contract source code

//SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() { _status = _NOT_ENTERED; }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

interface IPancakePair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0),
            "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract KINGz is IERC20, Context, Ownable, ReentrancyGuard {
    event Bought(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarBuy
    );
    event Sold(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarSell
    );
    event FeesMulChanged(uint256 newBuyMul, uint256 newSellMul);
    event StablePairChanged(address newStablePair, address newStableToken);
    event MaxBagChanged(uint256 newMaxBag);

    // token data
    string private constant _name = "KINGz2";
    string private constant _symbol = "KZC";
    uint8 private constant _decimals = 9;
    uint256 private constant _decMultiplier = 10**_decimals;

    // Total Supply
    uint256 public constant _totalSupply = 10**8 * _decMultiplier;

    // balances
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    //Fees
    mapping(address => bool) public isFeeExempt;
    uint256 public sellMul = 95;
    uint256 public buyMul = 95;
    uint256 public constant DIVISOR = 100;

    //Max bag requirements
    mapping(address => bool) public isTxLimitExempt;
    uint256 public maxBag = _totalSupply / 100;

    //Tax collection
    uint256 public taxBalance = 0;

    //Tax wallets
    address public teamWallet = 0xA100EE8143f1fA86C9Bc9b4d2a91271d400a09E6;
    address public treasuryWallet = 0xAb95306Ad61453E57eaaEF2a12d3fE8a3DEA0c92;

    // Tax Split
    uint256 public teamShare = 40;
    uint256 public treasuryShare = 60;
    uint256 public constant SHAREDIVISOR = 100;

    //Known Wallets
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    //trading parameters
    uint256 public liquidity = 20 ether;
    uint256 public liqConst = liquidity * _totalSupply;
    uint256 public constant TRADE_OPEN_TIME = 2884228;

    //volume trackers
    mapping(address => uint256) public indVol;
    mapping(uint256 => uint256) public tVol;
    uint256 public totalVolume = 0;

    //candlestick data
    uint256 public totalTx;
    mapping(uint256 => uint256) public txTimeStamp;

    struct candleStick {
        uint256 time;
        uint256 open;
        uint256 close;
        uint256 high;
        uint256 low;
    }

    mapping(uint256 => candleStick) public candleStickData;

    //Frontrun Guard
    mapping(address => uint256) private _lastBuyBlock;

    //Migration Wallet
    address public constant MIGRATION_WALLET = 0x896fF18471564F5C917FEBf5da272F7a9a32488B;

    // initialize supply
    constructor() {
        _balances[address(this)] = _totalSupply;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[MIGRATION_WALLET] = true;
        isTxLimitExempt[MIGRATION_WALLET] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[address(0)] = true;
        emit Transfer(address(0), address(this), _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address holder, address spender) external view override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function approve(address spender, uint256 amount) public override
        returns (bool)
    {
        require(spender != address(0), "ERC20: approve to the zero address");
        require(msg.sender != address(0), "ERC20: approve from the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= _totalSupply / 100, "New wallet limit should be at least 1% of total supply");
        maxBag = newLimit;
        emit MaxBagChanged(newLimit);
    }

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    /** Transfer Function */
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    /** TransferFrom Function */
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        address spender = msg.sender;
        //check allowance requirement
        _spendAllowance(sender, spender, amount);
        return _transferFrom(sender, recipient, amount);
    }

    /** Internal Transfer */
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        // make standard checks
        require(recipient != address(0) && recipient != address(this), "transfer to the zero address or CA");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag, "Max wallet exceeded!");
        // subtract from sender
        _balances[sender] = _balances[sender] - amount;
        // give amount to receiver
        _balances[recipient] = _balances[recipient] + amount;
        // Transfer Event
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = _allowances[owner][spender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount,
                "ERC20: insufficient allowance");
            unchecked {
                // decrease allowance
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /** Purchases zKING Tokens and Deposits Them in Sender's Address*/
    function _buy(uint256 minTokenOut, uint256 deadline) public payable nonReentrant
        returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");
        // Frontrun Guard
        _lastBuyBlock[msg.sender] = block.number;
        // liquidity is set
        require(liquidity > 0, "The token has no liquidity");
        // check if trading is open or whether the buying wallet is the migration one
        require(block.timestamp >= TRADE_OPEN_TIME ||
                msg.sender == MIGRATION_WALLET, "Trading is not Open");
        //remove the buy tax
        uint256 bnbAmount = isFeeExempt[msg.sender]
            ? msg.value
            : (msg.value * buyMul) / DIVISOR;

        // how much they should purchase?
        uint256 tokensToSend = _balances[address(this)] -
            (liqConst / (bnbAmount + liquidity));
        //revert for max bag
        require(_balances[msg.sender] + tokensToSend <= maxBag ||
                isTxLimitExempt[msg.sender], "Max wallet exceeded");
        // revert if under 1
        require(tokensToSend > 1, "Must Buy more than 1 decimal of zKING");

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");

        // transfer the tokens from CA to the buyer
        buy(msg.sender, tokensToSend);

        //update available tax to extract and Liquidity
        uint256 taxAmount = msg.value - bnbAmount;
        taxBalance = taxBalance + taxAmount;
        liquidity = liquidity + bnbAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = msg.value * getBNBPrice();
        totalVolume += dollarBuy;
        indVol[msg.sender] += dollarBuy;
        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - bnbAmount) / (_totalSupply)) *
                    getBNBPrice();
            } else {
                candleStickData[cTime].open = candleStickData[
                    txTimeStamp[totalTx - 1]
                ].close;
            }
        }
        candleStickData[cTime].close = cPrice;
        if (candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0) {
            candleStickData[cTime].high = cPrice;
        }
        if (candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0) {
            candleStickData[cTime].low = cPrice;
        }
        //emit transfer and buy events
        emit Transfer(address(this), msg.sender, tokensToSend);
        emit Bought(msg.sender, address(this), tokensToSend, msg.value, bnbAmount * getBNBPrice());
        return true;
    }

    /** Sends Tokens to the buyer Address */
    function buy(address receiver, uint256 amount) internal {
        _balances[receiver] = _balances[receiver] + amount;
        _balances[address(this)] = _balances[address(this)] - amount;
    }

    /** Sells zKING Tokens And Deposits the BNB into Seller's Address */
    function _sell(uint256 tokenAmount, uint256 deadline, uint256 minBNBOut) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");
        //Frontrun Guard
        require(_lastBuyBlock[msg.sender] != block.number,
            "Buying and selling in the same block is not allowed!");
        address seller = msg.sender;
        // make sure seller has this balance
        require(_balances[seller] >= tokenAmount, "cannot sell above token amount");
        // get how much beans are the tokens worth
        uint256 amountBNB = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountBNB * (DIVISOR - sellMul)) / DIVISOR;
        uint256 BNBToSend = amountBNB - amountTax;
        //slippage revert
        require(amountBNB >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");
        // send BNB to Seller
        (bool successful, ) = isFeeExempt[msg.sender]
            ? payable(seller).call{value: amountBNB}("")
            : payable(seller).call{value: BNBToSend}("");
        require(successful, "BNB/ETH transfer failed");
        // subtract full amount from sender
        _balances[seller] = _balances[seller] - tokenAmount;
        //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller
        taxBalance = isFeeExempt[msg.sender] ? taxBalance : taxBalance + amountTax;
        liquidity = liquidity - amountBNB;
        // add tokens back into the contract
        _balances[address(this)] = _balances[address(this)] + tokenAmount;
        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountBNB * getBNBPrice();
        totalVolume += dollarSell;
        indVol[msg.sender] += dollarSell;
        tVol[cTime] += dollarSell;
        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            candleStickData[cTime].open = candleStickData[txTimeStamp[totalTx - 1]].close;
        }
        candleStickData[cTime].close = cPrice;
        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0) {
            candleStickData[cTime].high = cPrice;
        }
        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0) {
            candleStickData[cTime].low = cPrice;
        }
        // emit transfer and sell events
        emit Transfer(seller, address(this), tokenAmount);
        if (isFeeExempt[msg.sender]) {
            emit Sold(address(this), msg.sender, tokenAmount, amountBNB, dollarSell);
        } else {emit Sold(address(this), msg.sender, tokenAmount, BNBToSend, BNBToSend * getBNBPrice());
        }
        return true;
    }

    /** Amount of BNB in Contract */
    function getLiquidity() public view returns (uint256) {
        return liquidity;
    }

    /** Returns the value of your holdings before the sell fee */
    function getValueOfHoldings(address holder) public view returns (uint256) {
        return
        ((_balances[holder] * liquidity) / _balances[address(this)]) * getBNBPrice();
    }

    function changeFees(uint256 newBuyMul, uint256 newSellMul) external onlyOwner {
        require(newBuyMul >= 90 &&
                newSellMul >= 90 &&
                newBuyMul <= 100 &&
                newSellMul <= 100, "Fees are too high");
        buyMul = newBuyMul;
        sellMul = newSellMul;
        emit FeesMulChanged(newBuyMul, newSellMul);
    }

    function changeTaxDistribution(
        uint256 newteamShare,
        uint256 newtreasuryShare
    ) external onlyOwner {
        require(newteamShare + newtreasuryShare == SHAREDIVISOR,
            "Sum of shares must be 100");
        teamShare = newteamShare;
        treasuryShare = newtreasuryShare;
    }

    function changeFeeReceivers(address newTeamWallet, address newTreasuryWallet) external onlyOwner {
        require(newTeamWallet != address(0) && newTreasuryWallet != address(0),
            "New wallets must not be the ZERO address");
        teamWallet = newTeamWallet;
        treasuryWallet = newTreasuryWallet;
    }

    function withdrawTaxBalance() external nonReentrant onlyOwner {
        (bool temp1, ) = payable(teamWallet).call{
            value: (taxBalance * teamShare) / SHAREDIVISOR}("");
        (bool temp2, ) = payable(treasuryWallet).call{
            value: (taxBalance * treasuryShare) / SHAREDIVISOR}("");
        assert(temp1 && temp2);
        taxBalance = 0;
    }

    function getTokenAmountOut(uint256 amountBNBIn) external view
        returns (uint256)
    {
        uint256 amountAfter = liqConst / (liquidity - amountBNBIn);
        uint256 amountBefore = liqConst / liquidity;
        return amountAfter - amountBefore;
    }

    function getBNBAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 beansBefore = liqConst / _balances[address(this)];
        uint256 beansAfter = liqConst / (_balances[address(this)] + amountIn);
        return beansBefore - beansAfter;
    }

    function addLiquidity() external payable onlyOwner {
        uint256 tokensToAdd = (_balances[address(this)] * msg.value) / liquidity;
        require(_balances[msg.sender] >= tokensToAdd, "Not enough tokens!");
        uint256 oldLiq = liquidity;
        liquidity = liquidity + msg.value;
        _balances[address(this)] += tokensToAdd;
        _balances[msg.sender] -= tokensToAdd;
        liqConst = (liqConst * liquidity) / oldLiq;
        emit Transfer(msg.sender, address(this), tokensToAdd);
    }

    function getMarketCap() external view returns (uint256) {
        return (getCirculatingSupply() * calculatePrice() * getBNBPrice());
    }

    address private stablePairAddress = 0x1393D3C27bB64516428a070bcC39e79B8FD7ec73;
    address private stableAddress = 0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D;

    function changeStablePair(address newStablePair, address newStableAddress) external onlyOwner {
        require( newStablePair != address(0) && newStableAddress != address(0),
            "New addresses must not be the ZERO address");
        stablePairAddress = newStablePair;
        stableAddress = newStableAddress;
        emit StablePairChanged(newStablePair, newStableAddress);
    }

    // calculate price based on pair reserves
    function getBNBPrice() public view returns (uint256) {
        IPancakePair pair = IPancakePair(stablePairAddress);
        IERC20 token1 = pair.token0() == stableAddress
            ? IERC20(pair.token1())
            : IERC20(pair.token0());

        (uint256 Res0, uint256 Res1, ) = pair.getReserves();

        if (pair.token0() != stableAddress) {
            (Res1, Res0, ) = pair.getReserves();
        }
        uint256 res0 = Res0 * 10**token1.decimals();
        return (res0 / Res1); // return amount of token0 needed to buy token1
    }

    // Returns the Current Price of the Token in beans
    function calculatePrice() public view returns (uint256) {
        require(liquidity > 0, "No Liquidity");
        return liquidity / _balances[address(this)];
    }
}
        

Contract ABI

[{"type":"constructor","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"DIVISOR","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"MIGRATION_WALLET","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SHAREDIVISOR","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TRADE_OPEN_TIME","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_balances","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"_buy","inputs":[{"type":"uint256","name":"minTokenOut","internalType":"uint256"},{"type":"uint256","name":"deadline","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"_sell","inputs":[{"type":"uint256","name":"tokenAmount","internalType":"uint256"},{"type":"uint256","name":"deadline","internalType":"uint256"},{"type":"uint256","name":"minBNBOut","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalSupply","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"addLiquidity","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buyMul","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculatePrice","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"time","internalType":"uint256"},{"type":"uint256","name":"open","internalType":"uint256"},{"type":"uint256","name":"close","internalType":"uint256"},{"type":"uint256","name":"high","internalType":"uint256"},{"type":"uint256","name":"low","internalType":"uint256"}],"name":"candleStickData","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeFeeReceivers","inputs":[{"type":"address","name":"newTeamWallet","internalType":"address"},{"type":"address","name":"newTreasuryWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeFees","inputs":[{"type":"uint256","name":"newBuyMul","internalType":"uint256"},{"type":"uint256","name":"newSellMul","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeStablePair","inputs":[{"type":"address","name":"newStablePair","internalType":"address"},{"type":"address","name":"newStableAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeTaxDistribution","inputs":[{"type":"uint256","name":"newteamShare","internalType":"uint256"},{"type":"uint256","name":"newtreasuryShare","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeWalletLimit","inputs":[{"type":"uint256","name":"newLimit","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBNBAmountOut","inputs":[{"type":"uint256","name":"amountIn","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBNBPrice","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getLiquidity","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getMarketCap","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTokenAmountOut","inputs":[{"type":"uint256","name":"amountBNBIn","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getValueOfHoldings","inputs":[{"type":"address","name":"holder","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"indVol","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isFeeExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isTxLimitExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liqConst","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidity","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxBag","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"sellMul","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tVol","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"taxBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"teamShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"teamWallet","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalTx","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalVolume","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"treasuryShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"treasuryWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"txTimeStamp","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawTaxBalance","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Bought","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"tokens","indexed":false},{"type":"uint256","name":"beans","indexed":false},{"type":"uint256","name":"dollarBuy","indexed":false}],"anonymous":false},{"type":"event","name":"FeesMulChanged","inputs":[{"type":"uint256","name":"newBuyMul","indexed":false},{"type":"uint256","name":"newSellMul","indexed":false}],"anonymous":false},{"type":"event","name":"MaxBagChanged","inputs":[{"type":"uint256","name":"newMaxBag","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"tokens","indexed":false},{"type":"uint256","name":"beans","indexed":false},{"type":"uint256","name":"dollarSell","indexed":false}],"anonymous":false},{"type":"event","name":"StablePairChanged","inputs":[{"type":"address","name":"newStablePair","indexed":false},{"type":"address","name":"newStableToken","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
            

Deployed ByteCode

0x60806040526004361061036b5760003560e01c80637220cf39116101c6578063aa98e163116100f7578063e8f620b111610095578063f2fde38b1161006f578063f2fde38b14610a08578063f4034e4b14610a28578063f7a62fe914610a48578063fabe628314610a7557600080fd5b8063e8f620b1146109c7578063ea6ef2fe146109dd578063f2220c9e146109f357600080fd5b8063d348b409116100d1578063d348b4091461094e578063dd62ed3e14610963578063e0cfcc95146109a9578063e8078d94146109bf57600080fd5b8063aa98e163146108f0578063b37659a414610906578063b4492d0c1461092657600080fd5b806395d89b4111610164578063a0e571a21161013e578063a0e571a214610828578063a3a2e89e1461083e578063a8fb66b41461085e578063a9059cbb146108d057600080fd5b806395d89b41146107b95780639cbd09ac146107e55780639d7550261461081257600080fd5b80638b42507f116101a05780638b42507f146107435780638da5cb5b146107735780638f0d3b8b1461079157806390825c28146107a457600080fd5b80637220cf39146106f75780637796ff371461070d5780637db1342c1461072357600080fd5b8063313ce567116102a0578063599270441161023e5780636ebcf607116102185780636ebcf6071461065f57806370a082311461068c57806371073b38146106c2578063715018a6146106e257600080fd5b806359927044146106295780635f81a57c1461064957806362ff2e9a1461054a57600080fd5b80633f4218e01161027a5780633f4218e0146105745780634626402b146105a457806349ce234c146105dc578063571ac8b01461060957600080fd5b8063313ce5671461052e5780633410fe6e1461054a5780633eaaf86b1461055f57600080fd5b80631f02a29c1161030d57806321ecff5b116102e757806321ecff5b146104c257806323b872dd146104e257806325b15556146105025780632b112e491461051957600080fd5b80631f02a29c146104625780631f1a73d5146104825780631f2c80f1146104a257600080fd5b806318160ddd1161034957806318160ddd146104005780631a686502146104155780631ab6ab241461042b5780631d6bdb5b1461044d57600080fd5b806306fdde03146103705780630910a510146103b1578063095ea7b3146103d0575b600080fd5b34801561037c57600080fd5b5060408051808201909152600681526525a4a723bd1960d11b60208201525b6040516103a891906129d2565b60405180910390f35b3480156103bd57600080fd5b50600e545b6040519081526020016103a8565b3480156103dc57600080fd5b506103f06103eb366004612a38565b610a95565b60405190151581526020016103a8565b34801561040c57600080fd5b506103c2610b48565b34801561042157600080fd5b506103c2600e5481565b34801561043757600080fd5b5061044b610446366004612a64565b610b69565b005b34801561045957600080fd5b5061044b610c81565b34801561046e57600080fd5b506103c261047d366004612a9d565b610ddb565b34801561048e57600080fd5b506103c261049d366004612aba565b610e28565b3480156104ae57600080fd5b5061044b6104bd366004612a64565b610e86565b3480156104ce57600080fd5b5061044b6104dd366004612ad3565b610f5b565b3480156104ee57600080fd5b506103f06104fd366004612af5565b611031565b34801561050e57600080fd5b506103c2622c028481565b34801561052557600080fd5b506103c2611053565b34801561053a57600080fd5b50604051600981526020016103a8565b34801561055657600080fd5b506103c2606481565b34801561056b57600080fd5b506103c26110a6565b34801561058057600080fd5b506103f061058f366004612a9d565b60046020526000908152604090205460ff1681565b3480156105b057600080fd5b50600b546105c4906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b3480156105e857600080fd5b506103c26105f7366004612aba565b60116020526000908152604090205481565b34801561061557600080fd5b506103f0610624366004612a9d565b6110c3565b34801561063557600080fd5b50600a546105c4906001600160a01b031681565b34801561065557600080fd5b506103c260125481565b34801561066b57600080fd5b506103c261067a366004612a9d565b60026020526000908152604090205481565b34801561069857600080fd5b506103c26106a7366004612a9d565b6001600160a01b031660009081526002602052604090205490565b3480156106ce57600080fd5b506103c26106dd366004612aba565b6110d1565b3480156106ee57600080fd5b5061044b611103565b34801561070357600080fd5b506103c260135481565b34801561071957600080fd5b506103c2600d5481565b34801561072f57600080fd5b5061044b61073e366004612aba565b611177565b34801561074f57600080fd5b506103f061075e366004612a9d565b60076020526000908152604090205460ff1681565b34801561077f57600080fd5b506000546001600160a01b03166105c4565b6103f061079f366004612ad3565b611270565b3480156107b057600080fd5b506103c2611832565b3480156107c557600080fd5b506040805180820190915260038152624b5a4360e81b602082015261039b565b3480156107f157600080fd5b506103c2610800366004612a9d565b60106020526000908152604090205481565b34801561081e57600080fd5b506103c260055481565b34801561083457600080fd5b506103c260065481565b34801561084a57600080fd5b5061044b610859366004612b36565b611860565b34801561086a57600080fd5b506108a8610879366004612aba565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a8565b3480156108dc57600080fd5b506103f06108eb366004612a38565b6118b5565b3480156108fc57600080fd5b506103c260095481565b34801561091257600080fd5b506103f0610921366004612b69565b6118c9565b34801561093257600080fd5b506105c473896ff18471564f5c917febf5da272f7a9a32488b81565b34801561095a57600080fd5b506103c2611f43565b34801561096f57600080fd5b506103c261097e366004612a64565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b557600080fd5b506103c260085481565b61044b611fa2565b3480156109d357600080fd5b506103c2600f5481565b3480156109e957600080fd5b506103c2600c5481565b3480156109ff57600080fd5b506103c26120ed565b348015610a1457600080fd5b5061044b610a23366004612a9d565b61244e565b348015610a3457600080fd5b5061044b610a43366004612ad3565b612538565b348015610a5457600080fd5b506103c2610a63366004612aba565b60146020526000908152604090205481565b348015610a8157600080fd5b5061044b610a90366004612b36565b6125c6565b60006001600160a01b038316610ac65760405162461bcd60e51b8152600401610abd90612b95565b60405180910390fd5b33610ae35760405162461bcd60e51b8152600401610abd90612bd7565b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610b566009600a612d15565b610b64906305f5e100612d24565b905090565b6000546001600160a01b03163314610b935760405162461bcd60e51b8152600401610abd90612d3b565b6001600160a01b03821615801590610bb357506001600160a01b03811615155b610c125760405162461bcd60e51b815260206004820152602a60248201527f4e657720616464726573736573206d757374206e6f7420626520746865205a45604482015269524f206164647265737360b01b6064820152608401610abd565b601780546001600160a01b038481166001600160a01b03199283168117909355601880549185169190921681179091556040805192835260208301919091527f9531844c54a073e677302121f844ce762e5d0d82415924346672381a39f8532c91015b60405180910390a15050565b600260015403610ca35760405162461bcd60e51b8152600401610abd90612d70565b60026001556000546001600160a01b03163314610cd25760405162461bcd60e51b8152600401610abd90612d3b565b600a54600c546009546000926001600160a01b031691606491610cf59190612d24565b610cff9190612da7565b604051600081818185875af1925050503d8060008114610d3b576040519150601f19603f3d011682016040523d82523d6000602084013e610d40565b606091505b5050600b54600d546009549293506000926001600160a01b0390921691606491610d6991612d24565b610d739190612da7565b604051600081818185875af1925050503d8060008114610daf576040519150601f19603f3d011682016040523d82523d6000602084013e610db4565b606091505b50509050818015610dc25750805b610dce57610dce612dc9565b5050600060095560018055565b6000610de56120ed565b3060009081526002602052604080822054600e546001600160a01b03871684529190922054610e149190612d24565b610e1e9190612da7565b610b429190612d24565b30600090815260026020526040812054600f548291610e4691612da7565b3060009081526002602052604081205491925090610e65908590612ddf565b600f54610e729190612da7565b9050610e7e8183612df2565b949350505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b8152600401610abd90612d3b565b6001600160a01b03821615801590610ed057506001600160a01b03811615155b610f2d5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610abd565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b6000546001600160a01b03163314610f855760405162461bcd60e51b8152600401610abd90612d3b565b605a8210158015610f975750605a8110155b8015610fa4575060648211155b8015610fb1575060648111155b610ff15760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610abd565b6006829055600581905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a4093878569101610c75565b60003361103f85828561261b565b61104a8585856126ad565b95945050505050565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461108e6009600a612d15565b61109c906305f5e100612d24565b610b649190612df2565b6110b26009600a612d15565b6110c0906305f5e100612d24565b81565b6000610b4282600019610a95565b60008082600e546110e29190612df2565b600f546110ef9190612da7565b90506000600e54600f54610e729190612da7565b6000546001600160a01b0316331461112d5760405162461bcd60e51b8152600401610abd90612d3b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111a15760405162461bcd60e51b8152600401610abd90612d3b565b60646111af6009600a612d15565b6111bd906305f5e100612d24565b6111c79190612da7565b8110156112355760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610abd565b60088190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b60006002600154036112945760405162461bcd60e51b8152600401610abd90612d70565b6002600155428210156112dc5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610abd565b336000908152601660205260409020439055600e5461133d5760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610abd565b622c02844210158061136257503373896ff18471564f5c917febf5da272f7a9a32488b145b6113a45760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610abd565b3360009081526004602052604081205460ff166113da576064600654346113cb9190612d24565b6113d59190612da7565b6113dc565b345b90506000600e54826113ee9190612ddf565b600f546113fb9190612da7565b306000908152600260205260409020546114159190612df2565b6008543360009081526002602052604090205491925090611437908390612ddf565b11158061145357503360009081526007602052604090205460ff165b6114955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610abd565b600181116114f35760405162461bcd60e51b815260206004820152602560248201527f4d75737420427579206d6f7265207468616e203120646563696d616c206f66206044820152647a4b494e4760d81b6064820152608401610abd565b848110156115435760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610abd565b61154d33826128c0565b60006115598334612df2565b9050806009546115699190612ddf565b600955600e5461157a908490612ddf565b600e554260006115886120ed565b6115929034612d24565b905080601260008282546115a69190612ddf565b909155505033600090815260106020526040812080548392906115ca908490612ddf565b9091555050600082815260116020526040812080548392906115ed908490612ddf565b925050819055506001601360008282546116079190612ddf565b909155505060135460009081526014602052604081208390556116286120ed565b611630611f43565b61163a9190612d24565b6000848152601560205260408120858155600101549192500361170f576013546001036116bc576116696120ed565b6116756009600a612d15565b611683906305f5e100612d24565b87600e546116919190612df2565b61169b9190612da7565b6116a59190612d24565b60008481526015602052604090206001015561170f565b601560006014600060016013546116d39190612df2565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b600083815260156020526040902060028101829055600301548111806117445750600083815260156020526040902060030154155b1561175e5760008381526015602052604090206003018190555b60008381526015602052604090206004015481108061178c5750600083815260156020526040902060040154155b156117a65760008381526015602052604090206004018190555b60405185815233903090600080516020612eb28339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c87346117f86120ed565b611802908c612d24565b6040805193845260208401929092529082015260600160405180910390a350506001808055979650505050505050565b600061183c6120ed565b611844611f43565b61184c611053565b6118569190612d24565b610b649190612d24565b6000546001600160a01b0316331461188a5760405162461bcd60e51b8152600401610abd90612d3b565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b60006118c23384846126ad565b9392505050565b60006002600154036118ed5760405162461bcd60e51b8152600401610abd90612d70565b6002600155428310156119355760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610abd565b336000908152601660205260409020544390036119b15760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610abd565b33600081815260026020526040902054851115611a105760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610abd565b30600090815260026020526040812054611a2b908790612ddf565b600f54611a389190612da7565b600e54611a459190612df2565b9050600060646005546064611a5a9190612df2565b611a649084612d24565b611a6e9190612da7565b90506000611a7c8284612df2565b905085831015611ace5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610abd565b3360009081526004602052604081205460ff16611b39576040516001600160a01b038616908390600081818185875af1925050503d8060008114611b2e576040519150601f19603f3d011682016040523d82523d6000602084013e611b33565b606091505b50611b89565b6040516001600160a01b038616908590600081818185875af1925050503d8060008114611b82576040519150601f19603f3d011682016040523d82523d6000602084013e611b87565b606091505b505b50905080611bd95760405162461bcd60e51b815260206004820152601760248201527f424e422f455448207472616e73666572206661696c65640000000000000000006044820152606401610abd565b6001600160a01b038516600090815260026020526040902054611bfd908a90612df2565b6001600160a01b03861660009081526002602090815260408083209390935533825260049052205460ff16611c3f5782600954611c3a9190612ddf565b611c43565b6009545b600955600e54611c54908590612df2565b600e5530600090815260026020526040902054611c72908a90612ddf565b306000908152600260205260408120919091554290611c8f6120ed565b611c999087612d24565b90508060126000828254611cad9190612ddf565b90915550503360009081526010602052604081208054839290611cd1908490612ddf565b909155505060008281526011602052604081208054839290611cf4908490612ddf565b92505081905550600160136000828254611d0e9190612ddf565b90915550506013546000908152601460205260408120839055611d2f6120ed565b611d37611f43565b611d419190612d24565b60008481526015602052604081208581556001015491925003611db15760156000601460006001601354611d759190612df2565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b60008381526015602052604090206002810182905560030154811180611de65750600083815260156020526040902060030154155b15611e005760008381526015602052604090206003018190555b600083815260156020526040902060040154811080611e2e5750600083815260156020526040902060040154155b15611e485760008381526015602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612eb28339815191529060200160405180910390a33360009081526004602052604090205460ff1615611ed857604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a3611f2e565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611f056120ed565b611f0f908b612d24565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b600080600e5411611f855760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610abd565b30600090815260026020526040902054600e54610b649190612da7565b6000546001600160a01b03163314611fcc5760405162461bcd60e51b8152600401610abd90612d3b565b600e5430600090815260026020526040812054909190611fed903490612d24565b611ff79190612da7565b3360009081526002602052604090205490915081111561204e5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610abd565b600e5461205b3482612ddf565b600e55306000908152600260205260408120805484929061207d908490612ddf565b909155505033600090815260026020526040812080548492906120a1908490612df2565b9091555050600e54600f5482916120b791612d24565b6120c19190612da7565b600f5560405182815230903390600080516020612eb28339815191529060200160405180910390a35050565b60175460185460408051630dfe168160e01b815290516000936001600160a01b039081169385939116918491630dfe16819160048083019260209291908290030181865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190612e05565b6001600160a01b0316146121dc57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d79190612e05565b61223e565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190612e05565b9050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190612e3e565b506001600160701b031691506001600160701b03169150601860009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233d9190612e05565b6001600160a01b0316146123bf57836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190612e3e565b506001600160701b0390811693501690505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124239190612e8e565b61242e90600a612d15565b6124389084612d24565b90506124448282612da7565b9550505050505090565b6000546001600160a01b031633146124785760405162461bcd60e51b8152600401610abd90612d3b565b6001600160a01b0381166124dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125625760405162461bcd60e51b8152600401610abd90612d3b565b606461256e8284612ddf565b146125bb5760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610abd565b600c91909155600d55565b6000546001600160a01b031633146125f05760405162461bcd60e51b8152600401610abd90612d3b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0380841660009081526003602090815260408083209386168352929052205460001981146126a7578181101561269a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610abd565b6126a78484848403612925565b50505050565b60006001600160a01b038316158015906126d057506001600160a01b0383163014155b6127275760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610abd565b600082116127895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610abd565b6001600160a01b03831660009081526007602052604090205460ff16806127d557506008546001600160a01b0384166000908152600260205260409020546127d2908490612ddf565b11155b6128185760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610abd565b6001600160a01b03841660009081526002602052604090205461283c908390612df2565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461286c908390612ddf565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020612eb2833981519152906128ae9086815260200190565b60405180910390a35060019392505050565b6001600160a01b0382166000908152600260205260409020546128e4908290612ddf565b6001600160a01b038316600090815260026020526040808220929092553081522054612911908290612df2565b306000908152600260205260409020555050565b6001600160a01b03831661294b5760405162461bcd60e51b8152600401610abd90612bd7565b6001600160a01b0382166129715760405162461bcd60e51b8152600401610abd90612b95565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b818110156129ff578581018301518582016040015282016129e3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612a3557600080fd5b50565b60008060408385031215612a4b57600080fd5b8235612a5681612a20565b946020939093013593505050565b60008060408385031215612a7757600080fd5b8235612a8281612a20565b91506020830135612a9281612a20565b809150509250929050565b600060208284031215612aaf57600080fd5b81356118c281612a20565b600060208284031215612acc57600080fd5b5035919050565b60008060408385031215612ae657600080fd5b50508035926020909101359150565b600080600060608486031215612b0a57600080fd5b8335612b1581612a20565b92506020840135612b2581612a20565b929592945050506040919091013590565b60008060408385031215612b4957600080fd5b8235612b5481612a20565b915060208301358015158114612a9257600080fd5b600080600060608486031215612b7e57600080fd5b505081359360208301359350604090920135919050565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612c6c578160001904821115612c5257612c52612c1b565b80851615612c5f57918102915b93841c9390800290612c36565b509250929050565b600082612c8357506001610b42565b81612c9057506000610b42565b8160018114612ca65760028114612cb057612ccc565b6001915050610b42565b60ff841115612cc157612cc1612c1b565b50506001821b610b42565b5060208310610133831016604e8410600b8410161715612cef575081810a610b42565b612cf98383612c31565b8060001904821115612d0d57612d0d612c1b565b029392505050565b60006118c260ff841683612c74565b8082028115828204841417610b4257610b42612c1b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082612dc457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b80820180821115610b4257610b42612c1b565b81810381811115610b4257610b42612c1b565b600060208284031215612e1757600080fd5b81516118c281612a20565b80516001600160701b0381168114612e3957600080fd5b919050565b600080600060608486031215612e5357600080fd5b612e5c84612e22565b9250612e6a60208501612e22565b9150604084015163ffffffff81168114612e8357600080fd5b809150509250925092565b600060208284031215612ea057600080fd5b815160ff811681146118c257600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2f12f37694889ea58f21047916c972345b7358c33c34a96152d81681be9714c64736f6c63430008110033