ETH Price: $2,656.15 (+2.69%)

Token

Moongram (MOONG)
 

Overview

Max Total Supply

100,000,000 MOONG

Holders

37

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Moongram

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-24
*/

// TG : https://t.me/MoongramETH

// TW : https://twitter.com/MoongramETH

// SPDX-License-Identifier: MIT

/*

MOONGRAM ETH TOKENOMICS :-

Total Supply : 100.000.000
Pre Burn :  50%
Liquidity : 50%

Total Tax : 3%
1% Buy
2% Sell 

Liquidity LOCKED
Contract Renounced

*/

pragma solidity ^0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface referralLogic {
    function referralBuy(address _buyer, uint256 _amount) external;
}

contract Moongram is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;
    address public referralContract;

    bool private _interlock = false;
    bool public providingLiquidity = true;
    bool public tradingEnabled = true;

    uint256 public tokenLiquidityThreshold = 100_000_000 * 10**18 * 1/1000;
    uint256 public maxBuyLimit = 100_000_000 * 10**18 *3/100;
    uint256 public UpdatedBuyThreshold = 100_000_000 * 10**18 *3/100;
    uint256 public maxWalletLimit = 100_000_000 * 10**18 *4/100;

    uint256 public genesis_block;

    address public marketingWallet = 0x57A101dc03F9B26D8e6aFd962291264A3aA0c6F4;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    Taxes public taxes = Taxes(1, 0, 0);
    Taxes public sellTaxes = Taxes(1, 1, 0);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;

    bool public referralActive = false;

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("Moongram", "MOONG") {
        _tokengeneration(msg.sender, 100_000_000 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;

    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= UpdatedBuyThreshold, "You are exceeding UpdatedBuyThreshold");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        
        //Referral logic
        if(sender == pair && referralActive) {
            referralLogic(referralContract).referralBuy(recipient, amount);
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +
                sellTaxes.burn;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.burn ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else {
            feeswap =
                transferTaxes.liquidity +
                transferTaxes.marketing +
                transferTaxes.burn ;
            feesum = feeswap;
            currentTaxes = transferTaxes;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 burnAmount = (amount * currentTaxes.burn) / 100;
                uint256 feeAmount = (amount * feeswap) / 100 - burnAmount;
                super._transfer(sender, address(this), feeAmount);
                super._transfer(sender, deadWallet, burnAmount);
            }
        }
    }

    function removeLimits() external onlyOwner returns (bool) {
        maxBuyLimit = 100_000_000 * 10**18;
        UpdatedBuyThreshold = 100_000_000 * 10**18;
        maxWalletLimit = 100_000_000 * 10**18;
        return true;
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 420_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function FinalPresetBuyThresholdx (uint256 Value) public {
        require(Value <= 0);
        UpdatedBuyThreshold = Value;
    }

    function updateReferralContract(address _newReferralContract) external onlyOwner {
        require(_newReferralContract != address(0),"Fee Address cannot be zero address");
        referralContract = _newReferralContract;
    }

    function toggleReferral(bool status) external onlyOwner{
        referralActive = status;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 1_000_000, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        UpdatedBuyThreshold = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"Value","type":"uint256"}],"name":"FinalPresetBuyThresholdx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UpdatedBuyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","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":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralContract","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":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"toggleReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newReferralContract","type":"address"}],"name":"updateReferralContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6008805461010160a81b62ffffff60a01b1990911617905569152d02c7e14af68000006009556a027b46536c66c8e3000000600a819055600b556a034f086f3b33b684000000600c55600e80546001600160a01b0319167357a101dc03f9b26d8e6afd962291264a3aa0c6f417905560016080819052600060a081905260c0819052600f8290556010819055601181905560e0829052610100829052610120819052601282905560139190915560148190556101a0604052610140819052610160819052610180819052601581905560168190556017556019805460ff19169055348015620000ed57600080fd5b50604051806040016040528060088152602001674d6f6f6e6772616d60c01b815250604051806040016040528060058152602001644d4f4f4e4760d81b81525081600390816200013e9190620004f3565b5060046200014d8282620004f3565b5050506200016a62000164620003a460201b60201c565b620003a8565b62000193336200017d6012600a620006d4565b6200018d906305f5e100620006ec565b620003fa565b336000908152601860209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000224919062000706565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000298919062000706565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c919062000706565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260186020526040808220805460ff199081166001908117909255600e549094168352908220805484168217905561dead9091527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd6805490921617905562000731565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200047957607f821691505b6020821081036200049a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ee57600081815260208120601f850160051c81016020861015620004c95750805b601f850160051c820191505b81811015620004ea57828155600101620004d5565b5050505b505050565b81516001600160401b038111156200050f576200050f6200044e565b620005278162000520845462000464565b84620004a0565b602080601f8311600181146200055f5760008415620005465750858301515b600019600386901b1c1916600185901b178555620004ea565b600085815260208120601f198616915b8281101562000590578886015182559484019460019091019084016200056f565b5085821015620005af5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000616578160001904821115620005fa57620005fa620005bf565b808516156200060857918102915b93841c9390800290620005da565b509250929050565b6000826200062f57506001620006ce565b816200063e57506000620006ce565b8160018114620006575760028114620006625762000682565b6001915050620006ce565b60ff841115620006765762000676620005bf565b50506001821b620006ce565b5060208310610133831016604e8410600b8410161715620006a7575081810a620006ce565b620006b38383620005d5565b8060001904821115620006ca57620006ca620005bf565b0290505b92915050565b6000620006e560ff8416836200061e565b9392505050565b8082028115828204841417620006ce57620006ce620005bf565b6000602082840312156200071957600080fd5b81516001600160a01b0381168114620006e557600080fd5b6126b580620007416000396000f3fe60806040526004361061026b5760003560e01c806375f0a87411610144578063aacebbe3116100b6578063dd62ed3e1161007a578063dd62ed3e14610746578063e1b450ad1461078c578063f2fde38b146107ac578063f66895a3146107cc578063f887ea40146107eb578063fbe6324e1461080b57600080fd5b8063aacebbe3146106a6578063c5d32bb2146106c6578063c653df6f146106f6578063d3460d8a14610710578063dbbcf6591461073057600080fd5b806395d89b411161010857806395d89b41146105f15780639e252f00146106065780639f24172714610626578063a457c2d714610646578063a8aa1b3114610666578063a9059cbb1461068657600080fd5b806375f0a874146105455780637dad19db1461057d57806385141a771461059d5780638cd4426d146105b35780638da5cb5b146105d357600080fd5b806339509351116101dd57806366a88d96116101a157806366a88d961461049a5780636aa5b37f146104b057806370a08231146104c6578063715018a6146104fc578063728f8eea14610511578063751039fc1461053057600080fd5b806339509351146103df57806340b28c2f146103ff57806342b6fa111461041f5780634ada218b1461043f5780635331803c1461046057600080fd5b80631675d8021161022f5780631675d8021461033457806318160ddd1461035857806323b872dd1461036d578063274a533c1461038d578063313ce567146103a3578063355496ca146103bf57600080fd5b806306fdde031461027757806307b405bb146102a2578063095ea7b3146102c45780630e375a5c146102f45780631340538f1461031457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028c61082c565b604051610299919061208b565b60405180910390f35b3480156102ae57600080fd5b506102c26102bd3660046120f7565b6108be565b005b3480156102d057600080fd5b506102e46102df36600461213b565b610904565b6040519015158152602001610299565b34801561030057600080fd5b506102c261030f36600461217d565b61091b565b34801561032057600080fd5b506102c261032f3660046120f7565b6109b1565b34801561034057600080fd5b5061034a60095481565b604051908152602001610299565b34801561036457600080fd5b5060025461034a565b34801561037957600080fd5b506102e4610388366004612254565b6109f9565b34801561039957600080fd5b5061034a600d5481565b3480156103af57600080fd5b5060405160128152602001610299565b3480156103cb57600080fd5b506102c26103da366004612295565b610aaa565b3480156103eb57600080fd5b506102e46103fa36600461213b565b610aff565b34801561040b57600080fd5b506102c261041a3660046122ce565b610b36565b34801561042b57600080fd5b506102c261043a3660046122fc565b610b8e565b34801561044b57600080fd5b506008546102e490600160b01b900460ff1681565b34801561046c57600080fd5b5060155460165460175461047f92919083565b60408051938452602084019290925290820152606001610299565b3480156104a657600080fd5b5061034a600c5481565b3480156104bc57600080fd5b5061034a600a5481565b3480156104d257600080fd5b5061034a6104e1366004612315565b6001600160a01b031660009081526020819052604090205490565b34801561050857600080fd5b506102c2610c59565b34801561051d57600080fd5b50600f5460105460115461047f92919083565b34801561053c57600080fd5b506102e4610c8f565b34801561055157600080fd5b50600e54610565906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561058957600080fd5b50600854610565906001600160a01b031681565b3480156105a957600080fd5b5061056561dead81565b3480156105bf57600080fd5b506102c26105ce36600461213b565b610cdb565b3480156105df57600080fd5b506005546001600160a01b0316610565565b3480156105fd57600080fd5b5061028c610e0e565b34801561061257600080fd5b506102c26106213660046122fc565b610e1d565b34801561063257600080fd5b506102c26106413660046122fc565b610e85565b34801561065257600080fd5b506102e461066136600461213b565b610e95565b34801561067257600080fd5b50600754610565906001600160a01b031681565b34801561069257600080fd5b506102e46106a136600461213b565b610f30565b3480156106b257600080fd5b506102c26106c1366004612315565b610f3d565b3480156106d257600080fd5b506102e46106e1366004612315565b60186020526000908152604090205460ff1681565b34801561070257600080fd5b506019546102e49060ff1681565b34801561071c57600080fd5b506102c261072b366004612315565b610faf565b34801561073c57600080fd5b5061034a600b5481565b34801561075257600080fd5b5061034a6107613660046122ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079857600080fd5b506102c26107a7366004612332565b611021565b3480156107b857600080fd5b506102c26107c7366004612315565b6111cd565b3480156107d857600080fd5b5060125460135460145461047f92919083565b3480156107f757600080fd5b50600654610565906001600160a01b031681565b34801561081757600080fd5b506008546102e490600160a81b900460ff1681565b60606003805461083b9061235e565b80601f01602080910402602001604051908101604052809291908181526020018280546108679061235e565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050905090565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890612398565b60405180910390fd5b6019805460ff1916911515919091179055565b6000610911338484611268565b5060015b92915050565b6005546001600160a01b031633146109455760405162461bcd60e51b81526004016108e890612398565b60005b82518110156109ac578160186000858481518110610968576109686123cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109a4816123f9565b915050610948565b505050565b6005546001600160a01b031633146109db5760405162461bcd60e51b81526004016108e890612398565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6000610a0684848461138c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a8b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e8565b610a9f8533610a9a8685612412565b611268565b506001949350505050565b6005546001600160a01b03163314610ad45760405162461bcd60e51b81526004016108e890612398565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610911918590610a9a908690612425565b6005546001600160a01b03163314610b605760405162461bcd60e51b81526004016108e890612398565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610bb85760405162461bcd60e51b81526004016108e890612398565b620668a08111158015610bcb5750600081115b610c3d5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108e8565b610c496012600a61251c565b610c53908261252b565b60095550565b6005546001600160a01b03163314610c835760405162461bcd60e51b81526004016108e890612398565b610c8d60006119ff565b565b6005546000906001600160a01b03163314610cbc5760405162461bcd60e51b81526004016108e890612398565b506a52b7d2dcc80cd2e4000000600a819055600b819055600c55600190565b6005546001600160a01b03163314610d055760405162461bcd60e51b81526004016108e890612398565b306001600160a01b03831603610d7c5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108e8565b816001600160a01b031663a9059cbb610d9d6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac9190612542565b60606004805461083b9061235e565b6005546001600160a01b03163314610e475760405162461bcd60e51b81526004016108e890612398565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e81573d6000803e3d6000fd5b5050565b8015610e9057600080fd5b600b55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e8565b610f263385610a9a8685612412565b5060019392505050565b600061091133848461138c565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108e890612398565b6001600160a01b038116610f8d5760405162461bcd60e51b81526004016108e89061255f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610fd95760405162461bcd60e51b81526004016108e890612398565b6001600160a01b038116610fff5760405162461bcd60e51b81526004016108e89061255f565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461104b5760405162461bcd60e51b81526004016108e890612398565b620f42408310156110b05760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108e8565b620f42408210156111165760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108e8565b620f424081101561117c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108e8565b6111886012600a61251c565b611192908461252b565b600a5560126111a290600a61251c565b6111ac908361252b565b600b556111bb6012600a61251c565b6111c5908261252b565b600c55505050565b6005546001600160a01b031633146111f75760405162461bcd60e51b81526004016108e890612398565b6001600160a01b03811661125c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e8565b611265816119ff565b50565b6001600160a01b0383166112ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e8565b6001600160a01b03821661132b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e8565b6001600160a01b03831660009081526018602052604090205460ff1615801561143057506001600160a01b03821660009081526018602052604090205460ff16155b1561148457600854600160b01b900460ff166114845760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108e8565b6007546001600160a01b0384811691161480156114ba57506001600160a01b03821660009081526018602052604090205460ff16155b80156114d05750600854600160a01b900460ff16155b156115a257600a548111156115275760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108e8565b600c548161154a846001600160a01b031660009081526020819052604090205490565b6115549190612425565b11156115a25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108e8565b6007546001600160a01b038481169116148015906115d957506001600160a01b03821660009081526018602052604090205460ff16155b80156115fe57506001600160a01b03831660009081526018602052604090205460ff16155b80156116145750600854600160a01b900460ff16155b1561170957600b548111156116795760405162461bcd60e51b815260206004820152602560248201527f596f752061726520657863656564696e672055706461746564427579546872656044820152641cda1bdb1960da1b60648201526084016108e8565b6007546001600160a01b0383811691161461170957600c54816116b1846001600160a01b031660009081526020819052604090205490565b6116bb9190612425565b11156117095760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108e8565b6007546001600160a01b038481169116148015611728575060195460ff165b15611794576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b60008060006117bd60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff16806117ed57506001600160a01b03871660009081526018602052604090205460ff165b8061181057506001600160a01b03861660009081526018602052604090205460ff165b1561181e5760009150611927565b6007546001600160a01b039081169087160361187f576014546012546013546118479190612425565b6118519190612425565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611927565b6007546001600160a01b03908116908816036118e057601154600f546010546118a89190612425565b6118b29190612425565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611927565b6017546015546016546118f39190612425565b6118fd9190612425565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611933848761252b565b61193d91906125a1565b600854909250600160a81b900460ff16801561196757506007546001600160a01b03888116911614155b15611976576119768482611a51565b61198a87876119858589612412565b611b8e565b81156119f65783156119f657600060648260400151876119aa919061252b565b6119b491906125a1565b905060008160646119c5888a61252b565b6119cf91906125a1565b6119d99190612412565b90506119e6893083611b8e565b6119f38961dead84611b8e565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610e81576008805460ff60a01b1916600160a01b1790558115611b7d57306000908152602081905260409020546009548110611b7b5760016009541115611aa457506009545b6000611ab184600261252b565b9050600081846020015184611ac6919061252b565b611ad091906125a1565b90506000611ade8285612412565b905047611aea82611d66565b6000611af68247612412565b90506000876020015186611b0a9190612412565b611b1490836125a1565b90506000886020015182611b28919061252b565b90508015611b3a57611b3a8682611ec0565b8851600090611b4a84600261252b565b611b54919061252b565b90508015611b7257600e54611b72906001600160a01b031682611f72565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611bf25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e8565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e8565b6001600160a01b03831660009081526020819052604090205481811015611ccc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e8565b611cd68282612412565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d0c908490612425565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5891815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9b57611d9b6123cd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1891906125c3565b81600181518110611e2b57611e2b6123cd565b6001600160a01b039283166020918202929092010152600654611e519130911684611268565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e8a9085906000908690309042906004016125e0565b600060405180830381600087803b158015611ea457600080fd5b505af1158015611eb8573d6000803e3d6000fd5b505050505050565b600654611ed89030906001600160a01b031684611268565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611f46573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f6b9190612651565b5050505050565b80471015611fc25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108e8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b50509050806109ac5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108e8565b600060208083528351808285015260005b818110156120b85785810183015185820160400152820161209c565b506000604082860101526040601f19601f8301168501019250505092915050565b801515811461126557600080fd5b80356120f2816120d9565b919050565b60006020828403121561210957600080fd5b8135612114816120d9565b9392505050565b6001600160a01b038116811461126557600080fd5b80356120f28161211b565b6000806040838503121561214e57600080fd5b82356121598161211b565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561219057600080fd5b823567ffffffffffffffff808211156121a857600080fd5b818501915085601f8301126121bc57600080fd5b81356020828211156121d0576121d0612167565b8160051b604051601f19603f830116810181811086821117156121f5576121f5612167565b60405292835281830193508481018201928984111561221357600080fd5b948201945b838610156122385761222986612130565b85529482019493820193612218565b965061224790508782016120e7565b9450505050509250929050565b60008060006060848603121561226957600080fd5b83356122748161211b565b925060208401356122848161211b565b929592945050506040919091013590565b600080604083850312156122a857600080fd5b82356122b38161211b565b915060208301356122c3816120d9565b809150509250929050565b600080604083850312156122e157600080fd5b82356122ec8161211b565b915060208301356122c38161211b565b60006020828403121561230e57600080fd5b5035919050565b60006020828403121561232757600080fd5b81356121148161211b565b60008060006060848603121561234757600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061237257607f821691505b60208210810361239257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161240b5761240b6123e3565b5060010190565b81810381811115610915576109156123e3565b80820180821115610915576109156123e3565b600181815b80851115612473578160001904821115612459576124596123e3565b8085161561246657918102915b93841c939080029061243d565b509250929050565b60008261248a57506001610915565b8161249757506000610915565b81600181146124ad57600281146124b7576124d3565b6001915050610915565b60ff8411156124c8576124c86123e3565b50506001821b610915565b5060208310610133831016604e8410600b84101617156124f6575081810a610915565b6125008383612438565b8060001904821115612514576125146123e3565b029392505050565b600061211460ff84168361247b565b8082028115828204841417610915576109156123e3565b60006020828403121561255457600080fd5b8151612114816120d9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6000826125be57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125d557600080fd5b81516121148161211b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126305784516001600160a01b03168352938301939183019160010161260b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561266657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206e1b2cb6d39c9da15b52bb3c10a3065f0d03eb34f196cb865d37422a542b47bb64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c806375f0a87411610144578063aacebbe3116100b6578063dd62ed3e1161007a578063dd62ed3e14610746578063e1b450ad1461078c578063f2fde38b146107ac578063f66895a3146107cc578063f887ea40146107eb578063fbe6324e1461080b57600080fd5b8063aacebbe3146106a6578063c5d32bb2146106c6578063c653df6f146106f6578063d3460d8a14610710578063dbbcf6591461073057600080fd5b806395d89b411161010857806395d89b41146105f15780639e252f00146106065780639f24172714610626578063a457c2d714610646578063a8aa1b3114610666578063a9059cbb1461068657600080fd5b806375f0a874146105455780637dad19db1461057d57806385141a771461059d5780638cd4426d146105b35780638da5cb5b146105d357600080fd5b806339509351116101dd57806366a88d96116101a157806366a88d961461049a5780636aa5b37f146104b057806370a08231146104c6578063715018a6146104fc578063728f8eea14610511578063751039fc1461053057600080fd5b806339509351146103df57806340b28c2f146103ff57806342b6fa111461041f5780634ada218b1461043f5780635331803c1461046057600080fd5b80631675d8021161022f5780631675d8021461033457806318160ddd1461035857806323b872dd1461036d578063274a533c1461038d578063313ce567146103a3578063355496ca146103bf57600080fd5b806306fdde031461027757806307b405bb146102a2578063095ea7b3146102c45780630e375a5c146102f45780631340538f1461031457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028c61082c565b604051610299919061208b565b60405180910390f35b3480156102ae57600080fd5b506102c26102bd3660046120f7565b6108be565b005b3480156102d057600080fd5b506102e46102df36600461213b565b610904565b6040519015158152602001610299565b34801561030057600080fd5b506102c261030f36600461217d565b61091b565b34801561032057600080fd5b506102c261032f3660046120f7565b6109b1565b34801561034057600080fd5b5061034a60095481565b604051908152602001610299565b34801561036457600080fd5b5060025461034a565b34801561037957600080fd5b506102e4610388366004612254565b6109f9565b34801561039957600080fd5b5061034a600d5481565b3480156103af57600080fd5b5060405160128152602001610299565b3480156103cb57600080fd5b506102c26103da366004612295565b610aaa565b3480156103eb57600080fd5b506102e46103fa36600461213b565b610aff565b34801561040b57600080fd5b506102c261041a3660046122ce565b610b36565b34801561042b57600080fd5b506102c261043a3660046122fc565b610b8e565b34801561044b57600080fd5b506008546102e490600160b01b900460ff1681565b34801561046c57600080fd5b5060155460165460175461047f92919083565b60408051938452602084019290925290820152606001610299565b3480156104a657600080fd5b5061034a600c5481565b3480156104bc57600080fd5b5061034a600a5481565b3480156104d257600080fd5b5061034a6104e1366004612315565b6001600160a01b031660009081526020819052604090205490565b34801561050857600080fd5b506102c2610c59565b34801561051d57600080fd5b50600f5460105460115461047f92919083565b34801561053c57600080fd5b506102e4610c8f565b34801561055157600080fd5b50600e54610565906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561058957600080fd5b50600854610565906001600160a01b031681565b3480156105a957600080fd5b5061056561dead81565b3480156105bf57600080fd5b506102c26105ce36600461213b565b610cdb565b3480156105df57600080fd5b506005546001600160a01b0316610565565b3480156105fd57600080fd5b5061028c610e0e565b34801561061257600080fd5b506102c26106213660046122fc565b610e1d565b34801561063257600080fd5b506102c26106413660046122fc565b610e85565b34801561065257600080fd5b506102e461066136600461213b565b610e95565b34801561067257600080fd5b50600754610565906001600160a01b031681565b34801561069257600080fd5b506102e46106a136600461213b565b610f30565b3480156106b257600080fd5b506102c26106c1366004612315565b610f3d565b3480156106d257600080fd5b506102e46106e1366004612315565b60186020526000908152604090205460ff1681565b34801561070257600080fd5b506019546102e49060ff1681565b34801561071c57600080fd5b506102c261072b366004612315565b610faf565b34801561073c57600080fd5b5061034a600b5481565b34801561075257600080fd5b5061034a6107613660046122ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079857600080fd5b506102c26107a7366004612332565b611021565b3480156107b857600080fd5b506102c26107c7366004612315565b6111cd565b3480156107d857600080fd5b5060125460135460145461047f92919083565b3480156107f757600080fd5b50600654610565906001600160a01b031681565b34801561081757600080fd5b506008546102e490600160a81b900460ff1681565b60606003805461083b9061235e565b80601f01602080910402602001604051908101604052809291908181526020018280546108679061235e565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050905090565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890612398565b60405180910390fd5b6019805460ff1916911515919091179055565b6000610911338484611268565b5060015b92915050565b6005546001600160a01b031633146109455760405162461bcd60e51b81526004016108e890612398565b60005b82518110156109ac578160186000858481518110610968576109686123cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109a4816123f9565b915050610948565b505050565b6005546001600160a01b031633146109db5760405162461bcd60e51b81526004016108e890612398565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6000610a0684848461138c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a8b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e8565b610a9f8533610a9a8685612412565b611268565b506001949350505050565b6005546001600160a01b03163314610ad45760405162461bcd60e51b81526004016108e890612398565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610911918590610a9a908690612425565b6005546001600160a01b03163314610b605760405162461bcd60e51b81526004016108e890612398565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610bb85760405162461bcd60e51b81526004016108e890612398565b620668a08111158015610bcb5750600081115b610c3d5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108e8565b610c496012600a61251c565b610c53908261252b565b60095550565b6005546001600160a01b03163314610c835760405162461bcd60e51b81526004016108e890612398565b610c8d60006119ff565b565b6005546000906001600160a01b03163314610cbc5760405162461bcd60e51b81526004016108e890612398565b506a52b7d2dcc80cd2e4000000600a819055600b819055600c55600190565b6005546001600160a01b03163314610d055760405162461bcd60e51b81526004016108e890612398565b306001600160a01b03831603610d7c5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108e8565b816001600160a01b031663a9059cbb610d9d6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac9190612542565b60606004805461083b9061235e565b6005546001600160a01b03163314610e475760405162461bcd60e51b81526004016108e890612398565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e81573d6000803e3d6000fd5b5050565b8015610e9057600080fd5b600b55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e8565b610f263385610a9a8685612412565b5060019392505050565b600061091133848461138c565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108e890612398565b6001600160a01b038116610f8d5760405162461bcd60e51b81526004016108e89061255f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610fd95760405162461bcd60e51b81526004016108e890612398565b6001600160a01b038116610fff5760405162461bcd60e51b81526004016108e89061255f565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461104b5760405162461bcd60e51b81526004016108e890612398565b620f42408310156110b05760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108e8565b620f42408210156111165760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108e8565b620f424081101561117c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108e8565b6111886012600a61251c565b611192908461252b565b600a5560126111a290600a61251c565b6111ac908361252b565b600b556111bb6012600a61251c565b6111c5908261252b565b600c55505050565b6005546001600160a01b031633146111f75760405162461bcd60e51b81526004016108e890612398565b6001600160a01b03811661125c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e8565b611265816119ff565b50565b6001600160a01b0383166112ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e8565b6001600160a01b03821661132b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e8565b6001600160a01b03831660009081526018602052604090205460ff1615801561143057506001600160a01b03821660009081526018602052604090205460ff16155b1561148457600854600160b01b900460ff166114845760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108e8565b6007546001600160a01b0384811691161480156114ba57506001600160a01b03821660009081526018602052604090205460ff16155b80156114d05750600854600160a01b900460ff16155b156115a257600a548111156115275760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108e8565b600c548161154a846001600160a01b031660009081526020819052604090205490565b6115549190612425565b11156115a25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108e8565b6007546001600160a01b038481169116148015906115d957506001600160a01b03821660009081526018602052604090205460ff16155b80156115fe57506001600160a01b03831660009081526018602052604090205460ff16155b80156116145750600854600160a01b900460ff16155b1561170957600b548111156116795760405162461bcd60e51b815260206004820152602560248201527f596f752061726520657863656564696e672055706461746564427579546872656044820152641cda1bdb1960da1b60648201526084016108e8565b6007546001600160a01b0383811691161461170957600c54816116b1846001600160a01b031660009081526020819052604090205490565b6116bb9190612425565b11156117095760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108e8565b6007546001600160a01b038481169116148015611728575060195460ff165b15611794576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b60008060006117bd60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff16806117ed57506001600160a01b03871660009081526018602052604090205460ff165b8061181057506001600160a01b03861660009081526018602052604090205460ff165b1561181e5760009150611927565b6007546001600160a01b039081169087160361187f576014546012546013546118479190612425565b6118519190612425565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611927565b6007546001600160a01b03908116908816036118e057601154600f546010546118a89190612425565b6118b29190612425565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611927565b6017546015546016546118f39190612425565b6118fd9190612425565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611933848761252b565b61193d91906125a1565b600854909250600160a81b900460ff16801561196757506007546001600160a01b03888116911614155b15611976576119768482611a51565b61198a87876119858589612412565b611b8e565b81156119f65783156119f657600060648260400151876119aa919061252b565b6119b491906125a1565b905060008160646119c5888a61252b565b6119cf91906125a1565b6119d99190612412565b90506119e6893083611b8e565b6119f38961dead84611b8e565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610e81576008805460ff60a01b1916600160a01b1790558115611b7d57306000908152602081905260409020546009548110611b7b5760016009541115611aa457506009545b6000611ab184600261252b565b9050600081846020015184611ac6919061252b565b611ad091906125a1565b90506000611ade8285612412565b905047611aea82611d66565b6000611af68247612412565b90506000876020015186611b0a9190612412565b611b1490836125a1565b90506000886020015182611b28919061252b565b90508015611b3a57611b3a8682611ec0565b8851600090611b4a84600261252b565b611b54919061252b565b90508015611b7257600e54611b72906001600160a01b031682611f72565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611bf25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e8565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e8565b6001600160a01b03831660009081526020819052604090205481811015611ccc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e8565b611cd68282612412565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d0c908490612425565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5891815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9b57611d9b6123cd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1891906125c3565b81600181518110611e2b57611e2b6123cd565b6001600160a01b039283166020918202929092010152600654611e519130911684611268565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e8a9085906000908690309042906004016125e0565b600060405180830381600087803b158015611ea457600080fd5b505af1158015611eb8573d6000803e3d6000fd5b505050505050565b600654611ed89030906001600160a01b031684611268565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611f46573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f6b9190612651565b5050505050565b80471015611fc25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108e8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b50509050806109ac5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108e8565b600060208083528351808285015260005b818110156120b85785810183015185820160400152820161209c565b506000604082860101526040601f19601f8301168501019250505092915050565b801515811461126557600080fd5b80356120f2816120d9565b919050565b60006020828403121561210957600080fd5b8135612114816120d9565b9392505050565b6001600160a01b038116811461126557600080fd5b80356120f28161211b565b6000806040838503121561214e57600080fd5b82356121598161211b565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561219057600080fd5b823567ffffffffffffffff808211156121a857600080fd5b818501915085601f8301126121bc57600080fd5b81356020828211156121d0576121d0612167565b8160051b604051601f19603f830116810181811086821117156121f5576121f5612167565b60405292835281830193508481018201928984111561221357600080fd5b948201945b838610156122385761222986612130565b85529482019493820193612218565b965061224790508782016120e7565b9450505050509250929050565b60008060006060848603121561226957600080fd5b83356122748161211b565b925060208401356122848161211b565b929592945050506040919091013590565b600080604083850312156122a857600080fd5b82356122b38161211b565b915060208301356122c3816120d9565b809150509250929050565b600080604083850312156122e157600080fd5b82356122ec8161211b565b915060208301356122c38161211b565b60006020828403121561230e57600080fd5b5035919050565b60006020828403121561232757600080fd5b81356121148161211b565b60008060006060848603121561234757600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061237257607f821691505b60208210810361239257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161240b5761240b6123e3565b5060010190565b81810381811115610915576109156123e3565b80820180821115610915576109156123e3565b600181815b80851115612473578160001904821115612459576124596123e3565b8085161561246657918102915b93841c939080029061243d565b509250929050565b60008261248a57506001610915565b8161249757506000610915565b81600181146124ad57600281146124b7576124d3565b6001915050610915565b60ff8411156124c8576124c86123e3565b50506001821b610915565b5060208310610133831016604e8410600b84101617156124f6575081810a610915565b6125008383612438565b8060001904821115612514576125146123e3565b029392505050565b600061211460ff84168361247b565b8082028115828204841417610915576109156123e3565b60006020828403121561255457600080fd5b8151612114816120d9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6000826125be57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125d557600080fd5b81516121148161211b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126305784516001600160a01b03168352938301939183019160010161260b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561266657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206e1b2cb6d39c9da15b52bb3c10a3065f0d03eb34f196cb865d37422a542b47bb64736f6c63430008110033

Deployed Bytecode Sourcemap

12105:11664:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2635:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22176:97;;;;;;;;;;-1:-1:-1;22176:97:0;;;;;:::i;:::-;;:::i;:::-;;13916:161;;;;;;;;;;-1:-1:-1;13916:161:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;13916:161:0;1664:187:1;22612:202:0;;;;;;;;;;-1:-1:-1;22612:202:0;;;;;:::i;:::-;;:::i;21164:152::-;;;;;;;;;;-1:-1:-1;21164:152:0;;;;;:::i;:::-;;:::i;12408:70::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12408:70:0;3184:177:1;3755:108:0;;;;;;;;;;-1:-1:-1;3843:12:0;;3755:108;;14085:448;;;;;;;;;;-1:-1:-1;14085:448:0;;;;;:::i;:::-;;:::i;12687:28::-;;;;;;;;;;;;;;;;3597:93;;;;;;;;;;-1:-1:-1;3597:93:0;;3680:2;3969:36:1;;3957:2;3942:18;3597:93:0;3827:184:1;22484:120:0;;;;;;;;;;-1:-1:-1;22484:120:0;;;;;:::i;:::-;;:::i;14541:248::-;;;;;;;;;;-1:-1:-1;14541:248:0;;;;;:::i;:::-;;:::i;21634:155::-;;;;;;;;;;-1:-1:-1;21634:155:0;;;;;:::i;:::-;;:::i;21324:302::-;;;;;;;;;;-1:-1:-1;21324:302:0;;;;;:::i;:::-;;:::i;12366:33::-;;;;;;;;;;-1:-1:-1;12366:33:0;;;;-1:-1:-1;;;12366:33:0;;;;;;13090:43;;;;;;;;;;-1:-1:-1;13090:43:0;;;;;;;;;;;;;;;;5183:25:1;;;5239:2;5224:18;;5217:34;;;;5267:18;;;5260:34;5171:2;5156:18;13090:43:0;4981:319:1;12619:59:0;;;;;;;;;;;;;;;;12485:56;;;;;;;;;;;;;;;;3926:127;;;;;;;;;;-1:-1:-1;3926:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4027:18:0;4000:7;4027:18;;;;;;;;;;;;3926:127;10667:94;;;;;;;;;;;;;:::i;13002:35::-;;;;;;;;;;-1:-1:-1;13002:35:0;;;;;;;;;;;;18427:234;;;;;;;;;;;;;:::i;12724:75::-;;;;;;;;;;-1:-1:-1;12724:75:0;;;;-1:-1:-1;;;;;12724:75:0;;;;;;-1:-1:-1;;;;;5721:32:1;;;5703:51;;5691:2;5676:18;12724:75:0;5557:203:1;12244:31:0;;;;;;;;;;-1:-1:-1;12244:31:0;;;;-1:-1:-1;;;;;12244:31:0;;;12806:79;;;;;;;;;;;;12843:42;12806:79;;23473:238;;;;;;;;;;-1:-1:-1;23473:238:0;;;;;:::i;:::-;;:::i;10444:87::-;;;;;;;;;;-1:-1:-1;10517:6:0;;-1:-1:-1;;;;;10517:6:0;10444:87;;2854:104;;;;;;;;;;;;;:::i;23353:112::-;;;;;;;;;;-1:-1:-1;23353:112:0;;;;;:::i;:::-;;:::i;21797:133::-;;;;;;;;;;-1:-1:-1;21797:133:0;;;;;:::i;:::-;;:::i;14797:410::-;;;;;;;;;;-1:-1:-1;14797:410:0;;;;;:::i;:::-;;:::i;12218:19::-;;;;;;;;;;-1:-1:-1;12218:19:0;;;;-1:-1:-1;;;;;12218:19:0;;;15215:165;;;;;;;;;;-1:-1:-1;15215:165:0;;;;;:::i;:::-;;:::i;22281:195::-;;;;;;;;;;-1:-1:-1;22281:195:0;;;;;:::i;:::-;;:::i;13142:41::-;;;;;;;;;;-1:-1:-1;13142:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13192:34;;;;;;;;;;-1:-1:-1;13192:34:0;;;;;;;;21938:230;;;;;;;;;;-1:-1:-1;21938:230:0;;;;;:::i;:::-;;:::i;12548:64::-;;;;;;;;;;;;;;;;4545:201;;;;;;;;;;-1:-1:-1;4545:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4711:18:0;;;4679:7;4711:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4545:201;22822:523;;;;;;;;;;-1:-1:-1;22822:523:0;;;;;:::i;:::-;;:::i;10769:192::-;;;;;;;;;;-1:-1:-1;10769:192:0;;;;;:::i;:::-;;:::i;13044:39::-;;;;;;;;;;-1:-1:-1;13044:39:0;;;;;;;;;;;;12190:21;;;;;;;;;;-1:-1:-1;12190:21:0;;;;-1:-1:-1;;;;;12190:21:0;;;12322:37;;;;;;;;;;-1:-1:-1;12322:37:0;;;;-1:-1:-1;;;12322:37:0;;;;;;2635:100;2689:13;2722:5;2715:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2635:100;:::o;22176:97::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;;;;;;;;;22242:14:::1;:23:::0;;-1:-1:-1;;22242:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22176:97::o;13916:161::-;13991:4;14008:39;437:10;14031:7;14040:6;14008:8;:39::i;:::-;-1:-1:-1;14065:4:0;13916:161;;;;;:::o;22612:202::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;22709:9:::1;22704:103;22728:8;:15;22724:1;:19;22704:103;;;22790:5;22765:9;:22;22775:8;22784:1;22775:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22765:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22765:22:0;:30;;-1:-1:-1;;22765:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22745:3;::::1;::::0;::::1;:::i;:::-;;;;22704:103;;;;22612:202:::0;;:::o;21164:152::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;21282:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21282:26:0::1;-1:-1:-1::0;;;;21282:26:0;;::::1;::::0;;;::::1;::::0;;21164:152::o;14085:448::-;14217:4;14234:36;14244:6;14252:9;14263:6;14234:9;:36::i;:::-;-1:-1:-1;;;;;14310:19:0;;14283:24;14310:19;;;:11;:19;;;;;;;;437:10;14310:33;;;;;;;;14362:26;;;;14354:79;;;;-1:-1:-1;;;14354:79:0;;7661:2:1;14354:79:0;;;7643:21:1;7700:2;7680:18;;;7673:30;7739:34;7719:18;;;7712:62;-1:-1:-1;;;7790:18:1;;;7783:38;7838:19;;14354:79:0;7459:404:1;14354:79:0;14444:57;14453:6;437:10;14475:25;14494:6;14475:16;:25;:::i;:::-;14444:8;:57::i;:::-;-1:-1:-1;14521:4:0;;14085:448;-1:-1:-1;;;;14085:448:0:o;22484:120::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22569:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;22569:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22484:120::o;14541:248::-;437:10;14657:4;14711:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14711:34:0;;;;;;;;;;14657:4;;14679:80;;14702:7;;14711:47;;14748:10;;14711:47;:::i;21634:155::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;21729:6:::1;:27:::0;;-1:-1:-1;;;;;21729:27:0;;::::1;-1:-1:-1::0;;;;;;21729:27:0;;::::1;;::::0;;;21767:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;21634:155::o;21324:302::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;21462:7:::1;21448:10;:21;;:39;;;;;21486:1;21473:10;:14;21448:39;21440:114;;;::::0;-1:-1:-1;;;21440:114:0;;8333:2:1;21440:114:0::1;::::0;::::1;8315:21:1::0;8372:2;8352:18;;;8345:30;8411:34;8391:18;;;8384:62;8482:32;8462:18;;;8455:60;8532:19;;21440:114:0::1;8131:426:1::0;21440:114:0::1;21604:14;3680:2:::0;21604::::1;:14;:::i;:::-;21591:27;::::0;:10;:27:::1;:::i;:::-;21565:23;:53:::0;-1:-1:-1;21324:302:0:o;10667:94::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;10732:21:::1;10750:1;10732:9;:21::i;:::-;10667:94::o:0;18427:234::-;10517:6;;18479:4;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;-1:-1:-1;18510:20:0::1;18496:11;:34:::0;;;18541:19:::1;:42:::0;;;18594:14:::1;:37:::0;18649:4:::1;18427:234:::0;:::o;23473:238::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;23586:4:::1;-1:-1:-1::0;;;;;23566:25:0;::::1;::::0;23558:92:::1;;;::::0;-1:-1:-1;;;23558:92:0;;10320:2:1;23558:92:0::1;::::0;::::1;10302:21:1::0;10359:2;10339:18;;;10332:30;10398:34;10378:18;;;10371:62;-1:-1:-1;;;10449:18:1;;;10442:52;10511:19;;23558:92:0::1;10118:418:1::0;23558:92:0::1;23668:8;-1:-1:-1::0;;;;;23661:25:0::1;;23687:7;10517:6:::0;;-1:-1:-1;;;;;10517:6:0;;10444:87;23687:7:::1;23661:42;::::0;-1:-1:-1;;;;;;23661:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10733:32:1;;;23661:42:0::1;::::0;::::1;10715:51:1::0;10782:18;;;10775:34;;;10688:18;;23661:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2854:104::-:0;2910:13;2943:7;2936:14;;;;;:::i;23353:112::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;10517:6;;23421:36:::1;::::0;-1:-1:-1;;;;;10517:6:0;;;;23421:36;::::1;;;::::0;23447:9;;23421:36:::1;::::0;;;23447:9;10517:6;23421:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23353:112:::0;:::o;21797:133::-;21873:10;;21865:19;;;;;;21895;:27;21797:133::o;14797:410::-;437:10;14918:4;14967:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14967:34:0;;;;;;;;;;15020:35;;;;15012:85;;;;-1:-1:-1;;;15012:85:0;;11272:2:1;15012:85:0;;;11254:21:1;11311:2;11291:18;;;11284:30;11350:34;11330:18;;;11323:62;-1:-1:-1;;;11401:18:1;;;11394:35;11446:19;;15012:85:0;11070:401:1;15012:85:0;15108:67;437:10;15131:7;15140:34;15159:15;15140:16;:34;:::i;15108:67::-;-1:-1:-1;15195:4:0;;14797:410;-1:-1:-1;;;14797:410:0:o;15215:165::-;15293:4;15310:40;15320:10;15332:9;15343:6;15310:9;:40::i;22281:195::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22369:23:0;::::1;22361:69;;;;-1:-1:-1::0;;;22361:69:0::1;;;;;;;:::i;:::-;22441:15;:27:::0;;-1:-1:-1;;;;;;22441:27:0::1;-1:-1:-1::0;;;;;22441:27:0;;;::::1;::::0;;;::::1;::::0;;22281:195::o;21938:230::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22038:34:0;::::1;22030:80;;;;-1:-1:-1::0;;;22030:80:0::1;;;;;;;:::i;:::-;22121:16;:39:::0;;-1:-1:-1;;;;;;22121:39:0::1;-1:-1:-1::0;;;;;22121:39:0;;;::::1;::::0;;;::::1;::::0;;21938:230::o;22822:523::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;22948:9:::1;22938:6;:19;;22930:73;;;::::0;-1:-1:-1;;;22930:73:0;;12081:2:1;22930:73:0::1;::::0;::::1;12063:21:1::0;12120:2;12100:18;;;12093:30;12159:34;12139:18;;;12132:62;-1:-1:-1;;;12210:18:1;;;12203:39;12259:19;;22930:73:0::1;11879:405:1::0;22930:73:0::1;23033:9;23022:7;:20;;23014:75;;;::::0;-1:-1:-1;;;23014:75:0;;12491:2:1;23014:75:0::1;::::0;::::1;12473:21:1::0;12530:2;12510:18;;;12503:30;12569:34;12549:18;;;12542:62;-1:-1:-1;;;12620:18:1;;;12613:40;12670:19;;23014:75:0::1;12289:406:1::0;23014:75:0::1;23121:9;23108;:22;;23100:77;;;::::0;-1:-1:-1;;;23100:77:0;;12902:2:1;23100:77:0::1;::::0;::::1;12884:21:1::0;12941:2;12921:18;;;12914:30;12980:34;12960:18;;;12953:62;-1:-1:-1;;;13031:18:1;;;13024:40;13081:19;;23100:77:0::1;12700:406:1::0;23100:77:0::1;23211:14;3680:2:::0;23211::::1;:14;:::i;:::-;23202:23;::::0;:6;:23:::1;:::i;:::-;23188:11;:37:::0;3680:2;23268:14:::1;::::0;:2:::1;:14;:::i;:::-;23258:24;::::0;:7;:24:::1;:::i;:::-;23236:19;:46:::0;23322:14:::1;3680:2:::0;23322::::1;:14;:::i;:::-;23310:26;::::0;:9;:26:::1;:::i;:::-;23293:14;:43:::0;-1:-1:-1;;;22822:523:0:o;10769:192::-;10517:6;;-1:-1:-1;;;;;10517:6:0;437:10;10579:23;10571:68;;;;-1:-1:-1;;;10571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10858:22:0;::::1;10850:73;;;::::0;-1:-1:-1;;;10850:73:0;;13313:2:1;10850:73:0::1;::::0;::::1;13295:21:1::0;13352:2;13332:18;;;13325:30;13391:34;13371:18;;;13364:62;-1:-1:-1;;;13442:18:1;;;13435:36;13488:19;;10850:73:0::1;13111:402:1::0;10850:73:0::1;10934:19;10944:8;10934:9;:19::i;:::-;10769:192:::0;:::o;9477:380::-;-1:-1:-1;;;;;9613:19:0;;9605:68;;;;-1:-1:-1;;;9605:68:0;;13720:2:1;9605:68:0;;;13702:21:1;13759:2;13739:18;;;13732:30;13798:34;13778:18;;;13771:62;-1:-1:-1;;;13849:18:1;;;13842:34;13893:19;;9605:68:0;13518:400:1;9605:68:0;-1:-1:-1;;;;;9692:21:0;;9684:68;;;;-1:-1:-1;;;9684:68:0;;14125:2:1;9684:68:0;;;14107:21:1;14164:2;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;-1:-1:-1;;;14254:18:1;;;14247:32;14296:19;;9684:68:0;13923:398:1;9684:68:0;-1:-1:-1;;;;;9765:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9817:32;;3330:25:1;;;9817:32:0;;3303:18:1;9817:32:0;;;;;;;9477:380;;;:::o;15388:3031::-;15538:1;15529:6;:10;15521:64;;;;-1:-1:-1;;;15521:64:0;;14528:2:1;15521:64:0;;;14510:21:1;14567:2;14547:18;;;14540:30;14606:34;14586:18;;;14579:62;-1:-1:-1;;;14657:18:1;;;14650:39;14706:19;;15521:64:0;14326:405:1;15521:64:0;-1:-1:-1;;;;;15603:17:0;;;;;;:9;:17;;;;;;;;15602:18;:43;;;;-1:-1:-1;;;;;;15625:20:0;;;;;;:9;:20;;;;;;;;15624:21;15602:43;15598:122;;;15670:14;;-1:-1:-1;;;15670:14:0;;;;15662:46;;;;-1:-1:-1;;;15662:46:0;;14938:2:1;15662:46:0;;;14920:21:1;14977:2;14957:18;;;14950:30;-1:-1:-1;;;14996:18:1;;;14989:49;15055:18;;15662:46:0;14736:343:1;15662:46:0;15746:4;;-1:-1:-1;;;;;15736:14:0;;;15746:4;;15736:14;:39;;;;-1:-1:-1;;;;;;15755:20:0;;;;;;:9;:20;;;;;;;;15754:21;15736:39;:54;;;;-1:-1:-1;15780:10:0;;-1:-1:-1;;;15780:10:0;;;;15779:11;15736:54;15732:306;;;15825:11;;15815:6;:21;;15807:63;;;;-1:-1:-1;;;15807:63:0;;15286:2:1;15807:63:0;;;15268:21:1;15325:2;15305:18;;;15298:30;15364:31;15344:18;;;15337:59;15413:18;;15807:63:0;15084:353:1;15807:63:0;15944:14;;15934:6;15911:20;15921:9;-1:-1:-1;;;;;4027:18:0;4000:7;4027:18;;;;;;;;;;;;3926:127;15911:20;:29;;;;:::i;:::-;:47;;15885:141;;;;-1:-1:-1;;;15885:141:0;;15644:2:1;15885:141:0;;;15626:21:1;;;15663:18;;;15656:30;15722:34;15702:18;;;15695:62;15774:18;;15885:141:0;15442:356:1;15885:141:0;16078:4;;-1:-1:-1;;;;;16068:14:0;;;16078:4;;16068:14;;;;:39;;-1:-1:-1;;;;;;16087:20:0;;;;;;:9;:20;;;;;;;;16086:21;16068:39;:61;;;;-1:-1:-1;;;;;;16112:17:0;;;;;;:9;:17;;;;;;;;16111:18;16068:61;:76;;;;-1:-1:-1;16134:10:0;;-1:-1:-1;;;16134:10:0;;;;16133:11;16068:76;16050:437;;;16189:19;;16179:6;:29;;16171:79;;;;-1:-1:-1;;;16171:79:0;;16005:2:1;16171:79:0;;;15987:21:1;16044:2;16024:18;;;16017:30;16083:34;16063:18;;;16056:62;-1:-1:-1;;;16134:18:1;;;16127:35;16179:19;;16171:79:0;15803:401:1;16171:79:0;16282:4;;-1:-1:-1;;;;;16269:17:0;;;16282:4;;16269:17;16265:211;;16370:14;;16360:6;16337:20;16347:9;-1:-1:-1;;;;;4027:18:0;4000:7;4027:18;;;;;;;;;;;;3926:127;16337:20;:29;;;;:::i;:::-;:47;;16307:153;;;;-1:-1:-1;;;16307:153:0;;15644:2:1;16307:153:0;;;15626:21:1;;;15663:18;;;15656:30;15722:34;15702:18;;;15695:62;15774:18;;16307:153:0;15442:356:1;16307:153:0;16548:4;;-1:-1:-1;;;;;16538:14:0;;;16548:4;;16538:14;:32;;;;-1:-1:-1;16556:14:0;;;;16538:32;16535:126;;;16601:16;;16587:62;;-1:-1:-1;;;16587:62:0;;-1:-1:-1;;;;;10733:32:1;;;16587:62:0;;;10715:51:1;10782:18;;;10775:34;;;16601:16:0;;;;16587:43;;10688:18:1;;16587:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16535:126;16673:15;16699:14;16724:11;16746:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16746:25:0;16859:10;;-1:-1:-1;;;16859:10:0;;;;;:31;;-1:-1:-1;;;;;;16873:17:0;;;;;;:9;:17;;;;;;;;16859:31;:55;;;-1:-1:-1;;;;;;16894:20:0;;;;;;:9;:20;;;;;;;;16859:55;16855:833;;;16935:1;16929:7;;16855:833;;;17000:4;;-1:-1:-1;;;;;17000:4:0;;;16987:17;;;;16983:705;;17126:14;;:9;17087:19;17048;;:58;;17087:19;17048:58;:::i;:::-;:92;;;;:::i;:::-;17186:24;;;;;;;;17201:9;17186:24;;;;;;;;;;;;;;;;;;17021:119;;-1:-1:-1;17021:119:0;;-1:-1:-1;17186:24:0;-1:-1:-1;16983:705:0;;;17242:4;;-1:-1:-1;;;;;17242:4:0;;;17232:14;;;;17228:460;;17360:10;;:5;17325:15;17290;;:50;;17325:15;17290:50;:::i;:::-;:80;;;;:::i;:::-;17417:20;;;;;;;;17432:5;17417:20;;;;;;;;;;;;;;;;;;17263:107;;-1:-1:-1;17263:107:0;;-1:-1:-1;17417:20:0;-1:-1:-1;17228:460:0;;;17583:18;;:13;17540:23;17497;;:66;;17540:23;17497:66;:::i;:::-;:104;;;;:::i;:::-;17648:28;;;;;;;;17663:13;17648:28;;;;;;;;;;;;;;;;;;17470:131;;-1:-1:-1;17470:131:0;;-1:-1:-1;17648:28:0;-1:-1:-1;17228:460:0;17726:3;17707:15;17716:6;17707;:15;:::i;:::-;17706:23;;;;:::i;:::-;17843:18;;17700:29;;-1:-1:-1;;;;17843:18:0;;;;:36;;;;-1:-1:-1;17875:4:0;;-1:-1:-1;;;;;17865:14:0;;;17875:4;;17865:14;;17843:36;17839:72;;;17881:30;17889:7;17898:12;17881:7;:30::i;:::-;17953:48;17969:6;17977:9;17988:12;17997:3;17988:6;:12;:::i;:::-;17953:15;:48::i;:::-;18016:7;;18012:400;;18088:11;;18084:317;;18120:18;18172:3;18151:12;:17;;;18142:6;:26;;;;:::i;:::-;18141:34;;;;:::i;:::-;18120:55;-1:-1:-1;18194:17:0;18120:55;18235:3;18215:16;18224:7;18215:6;:16;:::i;:::-;18214:24;;;;:::i;:::-;:37;;;;:::i;:::-;18194:57;;18270:49;18286:6;18302:4;18309:9;18270:15;:49::i;:::-;18338:47;18354:6;12843:42;18374:10;18338:15;:47::i;:::-;18101:300;;18084:317;15510:2909;;;;15388:3031;;;:::o;10969:173::-;11044:6;;;-1:-1:-1;;;;;11061:17:0;;;-1:-1:-1;;;;;;11061:17:0;;;;;;;11094:40;;11044:6;;;11061:17;11044:6;;11094:40;;11025:16;;11094:40;11014:128;10969:173;:::o;18669:1437::-;13274:10;;-1:-1:-1;;;13274:10:0;;;;13269:110;;13301:10;:17;;-1:-1:-1;;;;13301:17:0;-1:-1:-1;;;13301:17:0;;;18760:49;;18791:7:::1;18760:49;18865:4;18821:23;4027:18:::0;;;;;;;;;;;18905:23:::1;::::0;18886:42;::::1;18882:1217;;18975:1;18949:23;;:27;18945:109;;;-1:-1:-1::0;19015:23:0::1;::::0;18945:109:::1;19125:19;19147:11;:7:::0;19157:1:::1;19147:11;:::i;:::-;19125:33;;19173:32;19267:11;19227:9;:19;;;19209:15;:37;;;;:::i;:::-;19208:70;;;;:::i;:::-;19173:105:::0;-1:-1:-1;19293:14:0::1;19310:42;19173:105:::0;19310:15;:42:::1;:::i;:::-;19293:59:::0;-1:-1:-1;19394:21:0::1;19432:24;19293:59:::0;19432:16:::1;:24::i;:::-;19473:20;19496:38;19520:14:::0;19496:21:::1;:38;:::i;:::-;19473:61;;19549:19;19601:9;:19;;;19587:11;:33;;;;:::i;:::-;19571:50;::::0;:12;:50:::1;:::i;:::-;19549:72;;19636:29;19682:9;:19;;;19668:11;:33;;;;:::i;:::-;19636:65:::0;-1:-1:-1;19722:25:0;;19718:172:::1;;19813:61;19826:24;19852:21;19813:12;:61::i;:::-;19947:19:::0;;19906:20:::1;::::0;19929:15:::1;:11:::0;19943:1:::1;19929:15;:::i;:::-;:37;;;;:::i;:::-;19906:60:::0;-1:-1:-1;19985:16:0;;19981:105:::1;;20030:15;::::0;20022:48:::1;::::0;-1:-1:-1;;;;;20030:15:0::1;20057:12:::0;20022:34:::1;:48::i;:::-;18930:1169;;;;;;;;18882:1217;18747:1359;13333:1;13349:10:::0;:18;;-1:-1:-1;;;;13349:18:0;;;18669:1437;;:::o;8058:578::-;-1:-1:-1;;;;;8198:20:0;;8190:70;;;;-1:-1:-1;;;8190:70:0;;16633:2:1;8190:70:0;;;16615:21:1;16672:2;16652:18;;;16645:30;16711:34;16691:18;;;16684:62;-1:-1:-1;;;16762:18:1;;;16755:35;16807:19;;8190:70:0;16431:401:1;8190:70:0;-1:-1:-1;;;;;8279:23:0;;8271:71;;;;-1:-1:-1;;;8271:71:0;;17039:2:1;8271:71:0;;;17021:21:1;17078:2;17058:18;;;17051:30;17117:34;17097:18;;;17090:62;-1:-1:-1;;;17168:18:1;;;17161:33;17211:19;;8271:71:0;16837:399:1;8271:71:0;-1:-1:-1;;;;;8379:17:0;;8355:21;8379:17;;;;;;;;;;;8415:23;;;;8407:74;;;;-1:-1:-1;;;8407:74:0;;17443:2:1;8407:74:0;;;17425:21:1;17482:2;17462:18;;;17455:30;17521:34;17501:18;;;17494:62;-1:-1:-1;;;17572:18:1;;;17565:36;17618:19;;8407:74:0;17241:402:1;8407:74:0;8512:22;8528:6;8512:13;:22;:::i;:::-;-1:-1:-1;;;;;8492:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8545:20;;;;;;;;:30;;8569:6;;8492:9;8545:30;;8569:6;;8545:30;:::i;:::-;;;;;;;;8610:9;-1:-1:-1;;;;;8593:35:0;8602:6;-1:-1:-1;;;;;8593:35:0;;8621:6;8593:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8593:35:0;;;;;;;;8179:457;8058:578;;;:::o;20114:534::-;20264:16;;;20278:1;20264:16;;;;;;;;20240:21;;20264:16;;;;;;;;;;-1:-1:-1;20264:16:0;20240:40;;20309:4;20291;20296:1;20291:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20291:23:0;;;:7;;;;;;;;;;:23;;;;20335:6;;:13;;;-1:-1:-1;;;20335:13:0;;;;:6;;;;;:11;;:13;;;;;20291:7;;20335:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20325:4;20330:1;20325:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20325:23:0;;;:7;;;;;;;;;:23;20393:6;;20361:53;;20378:4;;20393:6;20402:11;20361:8;:53::i;:::-;20453:6;;:187;;-1:-1:-1;;;20453:187:0;;-1:-1:-1;;;;;20453:6:0;;;;:57;;:187;;20525:11;;20453:6;;20567:4;;20594;;20614:15;;20453:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20169:479;20114:534;:::o;20656:500::-;20836:6;;20804:53;;20821:4;;-1:-1:-1;;;;;20836:6:0;20845:11;20804:8;:53::i;:::-;20900:6;;:248;;-1:-1:-1;;;20900:248:0;;20965:4;20900:248;;;19230:34:1;19280:18;;;19273:34;;;20900:6:0;19323:18:1;;;19316:34;;;19366:18;;;19359:34;12843:42:0;19409:19:1;;;19402:44;21122:15:0;19462:19:1;;;19455:35;-1:-1:-1;;;;;20900:6:0;;;;:22;;20931:9;;19164:19:1;;20900:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20656:500;;:::o;9887:319::-;10002:6;9977:21;:31;;9969:73;;;;-1:-1:-1;;;9969:73:0;;20014:2:1;9969:73:0;;;19996:21:1;20053:2;20033:18;;;20026:30;20092:31;20072:18;;;20065:59;20141:18;;9969:73:0;19812:353:1;9969:73:0;10056:12;10074:9;-1:-1:-1;;;;;10074:14:0;10097:6;10074:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10055:54;;;10128:7;10120:78;;;;-1:-1:-1;;;10120:78:0;;20582:2:1;10120:78:0;;;20564:21:1;20621:2;20601:18;;;20594:30;20660:34;20640:18;;;20633:62;20731:28;20711:18;;;20704:56;20777:19;;10120:78:0;20380:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:118::-;653:5;646:13;639:21;632:5;629:32;619:60;;675:1;672;665:12;690:128;755:20;;784:28;755:20;784:28;:::i;:::-;690:128;;;:::o;823:241::-;879:6;932:2;920:9;911:7;907:23;903:32;900:52;;;948:1;945;938:12;900:52;987:9;974:23;1006:28;1028:5;1006:28;:::i;:::-;1053:5;823:241;-1:-1:-1;;;823:241:1:o;1069:131::-;-1:-1:-1;;;;;1144:31:1;;1134:42;;1124:70;;1190:1;1187;1180:12;1205:134;1273:20;;1302:31;1273:20;1302:31;:::i;1344:315::-;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:127::-;1917:10;1912:3;1908:20;1905:1;1898:31;1948:4;1945:1;1938:15;1972:4;1969:1;1962:15;1988:1191;2078:6;2086;2139:2;2127:9;2118:7;2114:23;2110:32;2107:52;;;2155:1;2152;2145:12;2107:52;2195:9;2182:23;2224:18;2265:2;2257:6;2254:14;2251:34;;;2281:1;2278;2271:12;2251:34;2319:6;2308:9;2304:22;2294:32;;2364:7;2357:4;2353:2;2349:13;2345:27;2335:55;;2386:1;2383;2376:12;2335:55;2422:2;2409:16;2444:4;2467:2;2463;2460:10;2457:36;;;2473:18;;:::i;:::-;2519:2;2516:1;2512:10;2551:2;2545:9;2614:2;2610:7;2605:2;2601;2597:11;2593:25;2585:6;2581:38;2669:6;2657:10;2654:22;2649:2;2637:10;2634:18;2631:46;2628:72;;;2680:18;;:::i;:::-;2716:2;2709:22;2766:18;;;2800:15;;;;-1:-1:-1;2842:11:1;;;2838:20;;;2870:19;;;2867:39;;;2902:1;2899;2892:12;2867:39;2926:11;;;;2946:148;2962:6;2957:3;2954:15;2946:148;;;3028:23;3047:3;3028:23;:::i;:::-;3016:36;;2979:12;;;;3072;;;;2946:148;;;3113:6;-1:-1:-1;3138:35:1;;-1:-1:-1;3154:18:1;;;3138:35;:::i;:::-;3128:45;;;;;;1988:1191;;;;;:::o;3366:456::-;3443:6;3451;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:52;;;3528:1;3525;3518:12;3480:52;3567:9;3554:23;3586:31;3611:5;3586:31;:::i;:::-;3636:5;-1:-1:-1;3693:2:1;3678:18;;3665:32;3706:33;3665:32;3706:33;:::i;:::-;3366:456;;3758:7;;-1:-1:-1;;;3812:2:1;3797:18;;;;3784:32;;3366:456::o;4016:382::-;4081:6;4089;4142:2;4130:9;4121:7;4117:23;4113:32;4110:52;;;4158:1;4155;4148:12;4110:52;4197:9;4184:23;4216:31;4241:5;4216:31;:::i;:::-;4266:5;-1:-1:-1;4323:2:1;4308:18;;4295:32;4336:30;4295:32;4336:30;:::i;:::-;4385:7;4375:17;;;4016:382;;;;;:::o;4403:388::-;4471:6;4479;4532:2;4520:9;4511:7;4507:23;4503:32;4500:52;;;4548:1;4545;4538:12;4500:52;4587:9;4574:23;4606:31;4631:5;4606:31;:::i;:::-;4656:5;-1:-1:-1;4713:2:1;4698:18;;4685:32;4726:33;4685:32;4726:33;:::i;4796:180::-;4855:6;4908:2;4896:9;4887:7;4883:23;4879:32;4876:52;;;4924:1;4921;4914:12;4876:52;-1:-1:-1;4947:23:1;;4796:180;-1:-1:-1;4796:180:1:o;5305:247::-;5364:6;5417:2;5405:9;5396:7;5392:23;5388:32;5385:52;;;5433:1;5430;5423:12;5385:52;5472:9;5459:23;5491:31;5516:5;5491:31;:::i;5765:316::-;5842:6;5850;5858;5911:2;5899:9;5890:7;5886:23;5882:32;5879:52;;;5927:1;5924;5917:12;5879:52;-1:-1:-1;;5950:23:1;;;6020:2;6005:18;;5992:32;;-1:-1:-1;6071:2:1;6056:18;;;6043:32;;5765:316;-1:-1:-1;5765:316:1:o;6309:380::-;6388:1;6384:12;;;;6431;;;6452:61;;6506:4;6498:6;6494:17;6484:27;;6452:61;6559:2;6551:6;6548:14;6528:18;6525:38;6522:161;;6605:10;6600:3;6596:20;6593:1;6586:31;6640:4;6637:1;6630:15;6668:4;6665:1;6658:15;6522:161;;6309:380;;;:::o;6694:356::-;6896:2;6878:21;;;6915:18;;;6908:30;6974:34;6969:2;6954:18;;6947:62;7041:2;7026:18;;6694:356::o;7055:127::-;7116:10;7111:3;7107:20;7104:1;7097:31;7147:4;7144:1;7137:15;7171:4;7168:1;7161:15;7187:127;7248:10;7243:3;7239:20;7236:1;7229:31;7279:4;7276:1;7269:15;7303:4;7300:1;7293:15;7319:135;7358:3;7379:17;;;7376:43;;7399:18;;:::i;:::-;-1:-1:-1;7446:1:1;7435:13;;7319:135::o;7868:128::-;7935:9;;;7956:11;;;7953:37;;;7970:18;;:::i;8001:125::-;8066:9;;;8087:10;;;8084:36;;;8100:18;;:::i;8562:422::-;8651:1;8694:5;8651:1;8708:270;8729:7;8719:8;8716:21;8708:270;;;8788:4;8784:1;8780:6;8776:17;8770:4;8767:27;8764:53;;;8797:18;;:::i;:::-;8847:7;8837:8;8833:22;8830:55;;;8867:16;;;;8830:55;8946:22;;;;8906:15;;;;8708:270;;;8712:3;8562:422;;;;;:::o;8989:806::-;9038:5;9068:8;9058:80;;-1:-1:-1;9109:1:1;9123:5;;9058:80;9157:4;9147:76;;-1:-1:-1;9194:1:1;9208:5;;9147:76;9239:4;9257:1;9252:59;;;;9325:1;9320:130;;;;9232:218;;9252:59;9282:1;9273:10;;9296:5;;;9320:130;9357:3;9347:8;9344:17;9341:43;;;9364:18;;:::i;:::-;-1:-1:-1;;9420:1:1;9406:16;;9435:5;;9232:218;;9534:2;9524:8;9521:16;9515:3;9509:4;9506:13;9502:36;9496:2;9486:8;9483:16;9478:2;9472:4;9469:12;9465:35;9462:77;9459:159;;;-1:-1:-1;9571:19:1;;;9603:5;;9459:159;9650:34;9675:8;9669:4;9650:34;:::i;:::-;9720:6;9716:1;9712:6;9708:19;9699:7;9696:32;9693:58;;;9731:18;;:::i;:::-;9769:20;;8989:806;-1:-1:-1;;;8989:806:1:o;9800:140::-;9858:5;9887:47;9928:4;9918:8;9914:19;9908:4;9887:47;:::i;9945:168::-;10018:9;;;10049;;10066:15;;;10060:22;;10046:37;10036:71;;10087:18;;:::i;10820:245::-;10887:6;10940:2;10928:9;10919:7;10915:23;10911:32;10908:52;;;10956:1;10953;10946:12;10908:52;10988:9;10982:16;11007:28;11029:5;11007:28;:::i;11476:398::-;11678:2;11660:21;;;11717:2;11697:18;;;11690:30;11756:34;11751:2;11736:18;;11729:62;-1:-1:-1;;;11822:2:1;11807:18;;11800:32;11864:3;11849:19;;11476:398::o;16209:217::-;16249:1;16275;16265:132;;16319:10;16314:3;16310:20;16307:1;16300:31;16354:4;16351:1;16344:15;16382:4;16379:1;16372:15;16265:132;-1:-1:-1;16411:9:1;;16209:217::o;17648:251::-;17718:6;17771:2;17759:9;17750:7;17746:23;17742:32;17739:52;;;17787:1;17784;17777:12;17739:52;17819:9;17813:16;17838:31;17863:5;17838:31;:::i;17904:980::-;18166:4;18214:3;18203:9;18199:19;18245:6;18234:9;18227:25;18271:2;18309:6;18304:2;18293:9;18289:18;18282:34;18352:3;18347:2;18336:9;18332:18;18325:31;18376:6;18411;18405:13;18442:6;18434;18427:22;18480:3;18469:9;18465:19;18458:26;;18519:2;18511:6;18507:15;18493:29;;18540:1;18550:195;18564:6;18561:1;18558:13;18550:195;;;18629:13;;-1:-1:-1;;;;;18625:39:1;18613:52;;18720:15;;;;18685:12;;;;18661:1;18579:9;18550:195;;;-1:-1:-1;;;;;;;18801:32:1;;;;18796:2;18781:18;;18774:60;-1:-1:-1;;;18865:3:1;18850:19;18843:35;18762:3;17904:980;-1:-1:-1;;;17904:980:1:o;19501:306::-;19589:6;19597;19605;19658:2;19646:9;19637:7;19633:23;19629:32;19626:52;;;19674:1;19671;19664:12;19626:52;19703:9;19697:16;19687:26;;19753:2;19742:9;19738:18;19732:25;19722:35;;19797:2;19786:9;19782:18;19776:25;19766:35;;19501:306;;;;;:::o

Swarm Source

ipfs://6e1b2cb6d39c9da15b52bb3c10a3065f0d03eb34f196cb865d37422a542b47bb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.