ETH Price: $2,431.43 (-2.34%)
Gas: 8.08 Gwei

Token

Kenshin Himura (NINJAX)
 

Overview

Max Total Supply

1,000,000,000 NINJAX

Holders

158

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,696,087.060656019738582623 NINJAX

Value
$0.00
0x8cca2b5f8c7e56530c9dbb7059b9bf9e1ab17356
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:
NINJAX

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

Buy & Sell Tax: 4%

Telegram: https://t.me/kenshinhimuraportal
Twitter: https://twitter.com/X_KENSHINHIMURA
Web: http://kenshinhimuratoken.online/

*/
pragma solidity ^0.8.17;
//SPDX-License-Identifier: UNLICENSED

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

        _beforeTokenTransfer(sender, recipient, amount);

        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 {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 3e6 * 10**18;
    uint256 public maxWalletLimit = 2e7 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 99;

    address public marketingWallet = 0x2764F4Ce4bd219e87ac3daEda689ef92B9811597;
    address private devWallet = 0xE4c4590fE0971c61443f341CCaF121f4379CC6b5;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

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

    Taxes private taxes = Taxes(4, 0, 0);
    Taxes private sellTaxes = Taxes(2, 0, 2);

    uint256 public TotalBuyFee = taxes.marketing + taxes.liquidity + taxes.dev;
    uint256 public TotalSellFee = sellTaxes.marketing + sellTaxes.liquidity + sellTaxes.dev;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isearlybuyer;

    //Anti Dump
    mapping(address => uint256) private _lastSell;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("Kenshin Himura", "NINJAX") {
        _tokengeneration(msg.sender, 1e9 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0xE2fE530C047f2d85298b07D9333C05737f1435fB] = true;
        exemptFee[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = 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");
        require(
            !isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

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

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

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

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

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

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

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +           
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

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

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

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {


	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
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

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

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the 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
            devWallet,
            block.timestamp
        );
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function setblock(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 15, "Block should be less than 15");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateIsEarlyBuyer(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }

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

    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 maxWallet) external onlyOwner {
        require(maxWallet >= 1e6, "Cannot set max wallet amount lower than 0.1%");
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

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

    function rescueERC20(address tokenAdd, uint256 amount) external {
        IERC20(tokenAdd).transfer(devWallet, 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":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","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":[],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isearlybuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"setblock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","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":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a027b46536c66c8e30000006008556a108b2a2c280290940000006009556000600b8190556063600c55600d80546001600160a01b0319908116732764f4ce4bd219e87ac3daeda689ef92b981159717909155600e805490911673e4c4590fe0971c61443f341ccaf121f4379cc6b51790556004608081905260a082905260c0829052600f81905560108290556011829055610140604052600260e081905261010083905261012081905260128190556013839055601455620000d39082906200059e565b620000df91906200059e565b601555601454601354601254620000f791906200059e565b6200010391906200059e565b6016553480156200011357600080fd5b506040518060400160405280600e81526020016d4b656e7368696e2048696d75726160901b8152506040518060400160405280600681526020016509c929c9482b60d31b81525081600390816200016b91906200065e565b5060046200017a82826200065e565b50505062000197620001916200047060201b60201c565b62000474565b620001c033620001aa6012600a62000827565b620001ba90633b9aca006200083f565b620004c6565b336000908152601760209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000251919062000859565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c5919062000859565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000859565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff199081166001908117909255600d54851684528284208054821683179055600e54909416835290822080548416821790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548416821790557ff4d8fe8682944aad7910cbbf27da6916af3289a2a48b6811250a498b558b931c80548416821790557fbfe210d72f201fd58ee613d4cb799cbbe7fa9e16ec7b40fcf60b7548ea55f995805484168217905573dba68f07d1b7ca219f78ae8582c213d975c25caf9091527f1497029dec09f36b42b6c68749bd96c358fd5bba1f16b8f9da9c5d47858c36d7805490921617905562000884565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200052f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005b457620005b462000588565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005e557607f821691505b6020821081036200060657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058357600081815260208120601f850160051c81016020861015620006355750805b601f850160051c820191505b81811015620006565782815560010162000641565b505050505050565b81516001600160401b038111156200067a576200067a620005ba565b62000692816200068b8454620005d0565b846200060c565b602080601f831160018114620006ca5760008415620006b15750858301515b600019600386901b1c1916600185901b17855562000656565b600085815260208120601f198616915b82811015620006fb57888601518255948401946001909101908401620006da565b50858210156200071a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156200076b5781600019048211156200074f576200074f62000588565b808516156200075d57918102915b93841c93908002906200072f565b509250929050565b6000826200078457506001620005b4565b816200079357506000620005b4565b8160018114620007ac5760028114620007b757620007d7565b6001915050620005b4565b60ff841115620007cb57620007cb62000588565b50506001821b620005b4565b5060208310610133831016604e8410600b8410161715620007fc575081810a620005b4565b6200080883836200072a565b80600019048211156200081f576200081f62000588565b029392505050565b60006200083860ff84168362000773565b9392505050565b8082028115828204841417620005b457620005b462000588565b6000602082840312156200086c57600080fd5b81516001600160a01b03811681146200083857600080fd5b6124f880620008946000396000f3fe6080604052600436106102555760003560e01c80637b46eee511610139578063a457c2d7116100b6578063c5d32bb21161007a578063c5d32bb2146106e7578063dc89f88c14610717578063dd62ed3e1461072d578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a457c2d714610647578063a8aa1b3114610667578063a9059cbb14610687578063aacebbe3146106a7578063c2c327d1146106c757600080fd5b80638da5cb5b116100fd5780638da5cb5b146105a457806395d89b41146105c25780639d282cd6146105d75780639e252f00146105f7578063a0cc1c2a1461061757600080fd5b80637b46eee5146105235780638514022d1461053957806385141a77146105595780638a8c523c1461056f5780638cd4426d1461058457600080fd5b8063274a533c116101d25780634ada218b116101965780634ada218b146104495780634e736f221461046a57806366a88d961461048a57806370a08231146104a0578063715018a6146104d657806375f0a874146104eb57600080fd5b8063274a533c146103b7578063313ce567146103cd578063355496ca146103e9578063395093511461040957806342b6fa111461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f146103375780631caf899714610357578063215d92a61461037757806323b872dd1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc6103723660046120f6565b6109b0565b34801561038357600080fd5b506102dc610392366004611fde565b610a97565b3480156103a357600080fd5b506102ac6103b236600461210f565b610b28565b3480156103c357600080fd5b50610314600a5481565b3480156103d957600080fd5b5060405160128152602001610283565b3480156103f557600080fd5b506102dc610404366004612150565b610bd9565b34801561041557600080fd5b506102ac610424366004611f83565b610c2e565b34801561043557600080fd5b506102dc6104443660046120f6565b610c65565b34801561045557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561047657600080fd5b506102dc610485366004612189565b610cab565b34801561049657600080fd5b5061031460095481565b3480156104ac57600080fd5b506103146104bb3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e257600080fd5b506102dc610cfb565b3480156104f757600080fd5b50600d5461050b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561052f57600080fd5b5061031460155481565b34801561054557600080fd5b506102dc610554366004612150565b610d31565b34801561056557600080fd5b5061050b61dead81565b34801561057b57600080fd5b506102dc610d86565b34801561059057600080fd5b506102dc61059f366004611f83565b610e25565b3480156105b057600080fd5b506005546001600160a01b031661050b565b3480156105ce57600080fd5b50610276610e9c565b3480156105e357600080fd5b506102dc6105f2366004612189565b610eab565b34801561060357600080fd5b506102dc6106123660046120f6565b610efb565b34801561062357600080fd5b506102ac6106323660046120d9565b60186020526000908152604090205460ff1681565b34801561065357600080fd5b506102ac610662366004611f83565b610f39565b34801561067357600080fd5b5060075461050b906001600160a01b031681565b34801561069357600080fd5b506102ac6106a2366004611f83565b610fd4565b3480156106b357600080fd5b506102dc6106c23660046120d9565b610fe1565b3480156106d357600080fd5b506102dc6106e23660046120f6565b61102d565b3480156106f357600080fd5b506102ac6107023660046120d9565b60176020526000908152604090205460ff1681565b34801561072357600080fd5b5061031460165481565b34801561073957600080fd5b506103146107483660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b5060065461050b906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610a425760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f8110610a925760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016108a79061221d565b60005b8251811015610917578160186000858481518110610ae457610ae4612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b208161227e565b915050610ac4565b6000610b3584848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610bce8533610bc98685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610bc99086906122aa565b6005546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016108a79061221d565b610c9b6012600a6123a1565b610ca590826123b0565b60085550565b6005546001600160a01b03163314610cd55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a79061221d565b610d2f6000611846565b565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db05760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f35573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610fca3385610bc98685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110575760405162461bcd60e51b81526004016108a79061221d565b620f42408110156110bf5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b6110cb6012600a6123a1565b6110d590826123b0565b60095550565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610f35576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60006020828403121561210857600080fd5b5035919050565b60008060006060848603121561212457600080fd5b833561212f81611f5e565b9250602084013561213f81611f5e565b929592945050506040919091013590565b6000806040838503121561216357600080fd5b823561216e81611f5e565b9150602083013561217e81611fc5565b809150509250929050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561217e81611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200f2347ceb20dd814e8956e53f31ddac061c5b76bf548651c299e9405a1bf8b7164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637b46eee511610139578063a457c2d7116100b6578063c5d32bb21161007a578063c5d32bb2146106e7578063dc89f88c14610717578063dd62ed3e1461072d578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a457c2d714610647578063a8aa1b3114610667578063a9059cbb14610687578063aacebbe3146106a7578063c2c327d1146106c757600080fd5b80638da5cb5b116100fd5780638da5cb5b146105a457806395d89b41146105c25780639d282cd6146105d75780639e252f00146105f7578063a0cc1c2a1461061757600080fd5b80637b46eee5146105235780638514022d1461053957806385141a77146105595780638a8c523c1461056f5780638cd4426d1461058457600080fd5b8063274a533c116101d25780634ada218b116101965780634ada218b146104495780634e736f221461046a57806366a88d961461048a57806370a08231146104a0578063715018a6146104d657806375f0a874146104eb57600080fd5b8063274a533c146103b7578063313ce567146103cd578063355496ca146103e9578063395093511461040957806342b6fa111461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f146103375780631caf899714610357578063215d92a61461037757806323b872dd1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc6103723660046120f6565b6109b0565b34801561038357600080fd5b506102dc610392366004611fde565b610a97565b3480156103a357600080fd5b506102ac6103b236600461210f565b610b28565b3480156103c357600080fd5b50610314600a5481565b3480156103d957600080fd5b5060405160128152602001610283565b3480156103f557600080fd5b506102dc610404366004612150565b610bd9565b34801561041557600080fd5b506102ac610424366004611f83565b610c2e565b34801561043557600080fd5b506102dc6104443660046120f6565b610c65565b34801561045557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561047657600080fd5b506102dc610485366004612189565b610cab565b34801561049657600080fd5b5061031460095481565b3480156104ac57600080fd5b506103146104bb3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e257600080fd5b506102dc610cfb565b3480156104f757600080fd5b50600d5461050b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561052f57600080fd5b5061031460155481565b34801561054557600080fd5b506102dc610554366004612150565b610d31565b34801561056557600080fd5b5061050b61dead81565b34801561057b57600080fd5b506102dc610d86565b34801561059057600080fd5b506102dc61059f366004611f83565b610e25565b3480156105b057600080fd5b506005546001600160a01b031661050b565b3480156105ce57600080fd5b50610276610e9c565b3480156105e357600080fd5b506102dc6105f2366004612189565b610eab565b34801561060357600080fd5b506102dc6106123660046120f6565b610efb565b34801561062357600080fd5b506102ac6106323660046120d9565b60186020526000908152604090205460ff1681565b34801561065357600080fd5b506102ac610662366004611f83565b610f39565b34801561067357600080fd5b5060075461050b906001600160a01b031681565b34801561069357600080fd5b506102ac6106a2366004611f83565b610fd4565b3480156106b357600080fd5b506102dc6106c23660046120d9565b610fe1565b3480156106d357600080fd5b506102dc6106e23660046120f6565b61102d565b3480156106f357600080fd5b506102ac6107023660046120d9565b60176020526000908152604090205460ff1681565b34801561072357600080fd5b5061031460165481565b34801561073957600080fd5b506103146107483660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b5060065461050b906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610a425760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f8110610a925760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016108a79061221d565b60005b8251811015610917578160186000858481518110610ae457610ae4612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b208161227e565b915050610ac4565b6000610b3584848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610bce8533610bc98685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610bc99086906122aa565b6005546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016108a79061221d565b610c9b6012600a6123a1565b610ca590826123b0565b60085550565b6005546001600160a01b03163314610cd55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a79061221d565b610d2f6000611846565b565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db05760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f35573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610fca3385610bc98685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110575760405162461bcd60e51b81526004016108a79061221d565b620f42408110156110bf5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b6110cb6012600a6123a1565b6110d590826123b0565b60095550565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610f35576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60006020828403121561210857600080fd5b5035919050565b60008060006060848603121561212457600080fd5b833561212f81611f5e565b9250602084013561213f81611f5e565b929592945050506040919091013590565b6000806040838503121561216357600080fd5b823561216e81611f5e565b9150602083013561217e81611fc5565b809150509250929050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561217e81611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200f2347ceb20dd814e8956e53f31ddac061c5b76bf548651c299e9405a1bf8b7164736f6c63430008110033

Deployed Bytecode Sourcemap

12852:11778:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2543:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15128:161;;;;;;;;;;-1:-1:-1;15128:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;15128:161:0;1162:187:1;23904:202:0;;;;;;;;;;-1:-1:-1;23904:202:0;;;;;:::i;:::-;;:::i;:::-;;21970:152;;;;;;;;;;-1:-1:-1;21970:152:0;;;;;:::i;:::-;;:::i;13122:53::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;13122:53:0;3184:177:1;3663:108:0;;;;;;;;;;-1:-1:-1;3751:12:0;;3663:108;;23318:102;;;;;;;;;;-1:-1:-1;23318:102:0;;;;;:::i;:::-;;:::i;22950:237::-;;;;;;;;;;-1:-1:-1;22950:237:0;;;;;:::i;:::-;;:::i;23560:208::-;;;;;;;;;;-1:-1:-1;23560:208:0;;;;;:::i;:::-;;:::i;15297:448::-;;;;;;;;;;-1:-1:-1;15297:448:0;;;;;:::i;:::-;;:::i;13235:28::-;;;;;;;;;;;;;;;;3505:93;;;;;;;;;;-1:-1:-1;3505:93:0;;3588:2;4406:36:1;;4394:2;4379:18;3505:93:0;4264:184:1;23776:120:0;;;;;;;;;;-1:-1:-1;23776:120:0;;;;;:::i;:::-;;:::i;15753:248::-;;;;;;;;;;-1:-1:-1;15753:248:0;;;;;:::i;:::-;;:::i;22130:177::-;;;;;;;;;;-1:-1:-1;22130:177:0;;;;;:::i;:::-;;:::i;13079:34::-;;;;;;;;;;-1:-1:-1;13079:34:0;;;;-1:-1:-1;;;13079:34:0;;;;;;22516:195;;;;;;;;;;-1:-1:-1;22516:195:0;;;;;:::i;:::-;;:::i;13182:44::-;;;;;;;;;;;;;;;;3834:127;;;;;;;;;;-1:-1:-1;3834:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3935:18:0;3908:7;3935:18;;;;;;;;;;;;3834:127;11515:94;;;;;;;;;;;;;:::i;13344:75::-;;;;;;;;;;-1:-1:-1;13344:75:0;;;;-1:-1:-1;;;;;13344:75:0;;;;;;-1:-1:-1;;;;;5325:32:1;;;5307:51;;5295:2;5280:18;13344:75:0;5161:203:1;13790:74:0;;;;;;;;;;;;;;;;23428:124;;;;;;;;;;-1:-1:-1;23428:124:0;;;;;:::i;:::-;;:::i;13500:79::-;;;;;;;;;;;;13537:42;13500:79;;22718:224;;;;;;;;;;;;;:::i;24445:127::-;;;;;;;;;;-1:-1:-1;24445:127:0;;;;;:::i;:::-;;:::i;11292:87::-;;;;;;;;;;-1:-1:-1;11365:6:0;;-1:-1:-1;;;;;11365:6:0;11292:87;;2762:104;;;;;;;;;;;;;:::i;22315:193::-;;;;;;;;;;-1:-1:-1;22315:193:0;;;;;:::i;:::-;;:::i;24333:104::-;;;;;;;;;;-1:-1:-1;24333:104:0;;;;;:::i;:::-;;:::i;14015:44::-;;;;;;;;;;-1:-1:-1;14015:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16009:410;;;;;;;;;;-1:-1:-1;16009:410:0;;;;;:::i;:::-;;:::i;12963:19::-;;;;;;;;;;-1:-1:-1;12963:19:0;;;;-1:-1:-1;;;;;12963:19:0;;;16427:165;;;;;;;;;;-1:-1:-1;16427:165:0;;;;;:::i;:::-;;:::i;23195:115::-;;;;;;;;;;-1:-1:-1;23195:115:0;;;;;:::i;:::-;;:::i;24114:211::-;;;;;;;;;;-1:-1:-1;24114:211:0;;;;;:::i;:::-;;:::i;13967:41::-;;;;;;;;;;-1:-1:-1;13967:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13871:87;;;;;;;;;;;;;;;;4453:201;;;;;;;;;;-1:-1:-1;4453:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4619:18:0;;;4587:7;4619:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4453:201;11617:192;;;;;;;;;;-1:-1:-1;11617:192:0;;;;;:::i;:::-;;:::i;12935:21::-;;;;;;;;;;-1:-1:-1;12935:21:0;;;;-1:-1:-1;;;;;12935:21:0;;;13034:38;;;;;;;;;;-1:-1:-1;13034:38:0;;;;-1:-1:-1;;;13034:38:0;;;;;;2543:100;2597:13;2630:5;2623:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2543:100;:::o;15128:161::-;15203:4;15220:39;345:10;15243:7;15252:6;15220:8;:39::i;:::-;-1:-1:-1;15277:4:0;15128:161;;;;;:::o;23904:202::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;;;;;;;;;24001:9:::1;23996:103;24020:8;:15;24016:1;:19;23996:103;;;24082:5;24057:9;:22;24067:8;24076:1;24067:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24057:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24057:22:0;:30;;-1:-1:-1;;24057:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24037:3;::::1;::::0;::::1;:::i;:::-;;;;23996:103;;;;23904:202:::0;;:::o;21970:152::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;22088:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;22088:26:0::1;-1:-1:-1::0;;;;22088:26:0;;::::1;::::0;;;::::1;::::0;;21970:152::o;23318:102::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;23391:9:::1;:21:::0;;-1:-1:-1;;;;;;23391:21:0::1;-1:-1:-1::0;;;;;23391:21:0;;;::::1;::::0;;;::::1;::::0;;23318:102::o;22950:237::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;23026:14:::1;::::0;-1:-1:-1;;;23026:14:0;::::1;;;23025:15;23017:65;;;::::0;-1:-1:-1;;;23017:65:0;;7337:2:1;23017:65:0::1;::::0;::::1;7319:21:1::0;7376:2;7356:18;;;7349:30;7415:34;7395:18;;;7388:62;-1:-1:-1;;;7466:18:1;;;7459:35;7511:19;;23017:65:0::1;7135:401:1::0;23017:65:0::1;23113:2;23101:9;:14;23093:55;;;::::0;-1:-1:-1;;;23093:55:0;;7743:2:1;23093:55:0::1;::::0;::::1;7725:21:1::0;7782:2;7762:18;;;7755:30;7821;7801:18;;;7794:58;7869:18;;23093:55:0::1;7541:352:1::0;23093:55:0::1;23159:8;:20:::0;22950:237::o;23560:208::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;23660:9:::1;23655:106;23679:8;:15;23675:1;:19;23655:106;;;23744:5;23716:12;:25;23729:8;23738:1;23729:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23716:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23716:25:0;:33;;-1:-1:-1;;23716:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23696:3;::::1;::::0;::::1;:::i;:::-;;;;23655:106;;15297:448:::0;15429:4;15446:36;15456:6;15464:9;15475:6;15446:9;:36::i;:::-;-1:-1:-1;;;;;15522:19:0;;15495:24;15522:19;;;:11;:19;;;;;;;;345:10;15522:33;;;;;;;;15574:26;;;;15566:79;;;;-1:-1:-1;;;15566:79:0;;8100:2:1;15566:79:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;-1:-1:-1;;;8229:18:1;;;8222:38;8277:19;;15566:79:0;7898:404:1;15566:79:0;15656:57;15665:6;345:10;15687:25;15706:6;15687:16;:25;:::i;:::-;15656:8;:57::i;:::-;-1:-1:-1;15733:4:0;;15297:448;-1:-1:-1;;;;15297:448:0:o;23776:120::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23861:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23861:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23776:120::o;15753:248::-;345:10;15869:4;15923:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15923:34:0;;;;;;;;;;15869:4;;15891:80;;15914:7;;15923:47;;15960:10;;15923:47;:::i;22130:177::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;22285:14:::1;3588:2:::0;22285::::1;:14;:::i;:::-;22272:27;::::0;:10;:27:::1;:::i;:::-;22246:23;:53:::0;-1:-1:-1;22130:177:0:o;22516:195::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;22668:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22656:9:::1;:47:::0;;;;;;;;22516:195::o;11515:94::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;11580:21:::1;11598:1;11580:9;:21::i;:::-;11515:94::o:0;23428:124::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23515:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;23515:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23428:124::o;22718:224::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;22782:14:::1;::::0;-1:-1:-1;;;22782:14:0;::::1;;;22781:15;22773:54;;;::::0;-1:-1:-1;;;22773:54:0;;10328:2:1;22773:54:0::1;::::0;::::1;10310:21:1::0;10367:2;10347:18;;;10340:30;10406:28;10386:18;;;10379:56;10452:18;;22773:54:0::1;10126:350:1::0;22773:54:0::1;22838:14;:21:::0;;-1:-1:-1;;;;22870:25:0;-1:-1:-1;;;22870:25:0;;;22922:12:::1;22906:13;:28:::0;22718:224::o;24445:127::-;24546:9;;24520:44;;-1:-1:-1;;;24520:44:0;;-1:-1:-1;;;;;24546:9:0;;;24520:44;;;10655:51:1;10722:18;;;10715:34;;;24520:25:0;;;;;;10628:18:1;;24520:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2762:104::-;2818:13;2851:7;2844:14;;;;;:::i;22315:193::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;22465:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22457:5:::1;:43:::0;;;;;;;;22315:193::o;24333:104::-;24399:9;;24391:38;;-1:-1:-1;;;;;24399:9:0;;;;24391:38;;;;;24419:9;;24399;24391:38;24399:9;24391:38;24419:9;24399;24391:38;;;;;;;;;;;;;;;;;;;;;24333:104;:::o;16009:410::-;345:10;16130:4;16179:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16179:34:0;;;;;;;;;;16232:35;;;;16224:85;;;;-1:-1:-1;;;16224:85:0;;11212:2:1;16224:85:0;;;11194:21:1;11251:2;11231:18;;;11224:30;11290:34;11270:18;;;11263:62;-1:-1:-1;;;11341:18:1;;;11334:35;11386:19;;16224:85:0;11010:401:1;16224:85:0;16320:67;345:10;16343:7;16352:34;16371:15;16352:16;:34;:::i;16320:67::-;-1:-1:-1;16407:4:0;;16009:410;-1:-1:-1;;;16009:410:0:o;16427:165::-;16505:4;16522:40;16532:10;16544:9;16555:6;16522:9;:40::i;23195:115::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;23275:15:::1;:27:::0;;-1:-1:-1;;;;;;23275:27:0::1;-1:-1:-1::0;;;;;23275:27:0;;;::::1;::::0;;;::::1;::::0;;23195:115::o;24114:211::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;24210:3:::1;24197:9;:16;;24189:73;;;::::0;-1:-1:-1;;;24189:73:0;;11618:2:1;24189:73:0::1;::::0;::::1;11600:21:1::0;11657:2;11637:18;;;11630:30;11696:34;11676:18;;;11669:62;-1:-1:-1;;;11747:18:1;;;11740:42;11799:19;;24189:73:0::1;11416:408:1::0;24189:73:0::1;24302:14;3588:2:::0;24302::::1;:14;:::i;:::-;24290:26;::::0;:9;:26:::1;:::i;:::-;24273:14;:43:::0;-1:-1:-1;24114:211:0:o;11617:192::-;11365:6;;-1:-1:-1;;;;;11365:6:0;345:10;11427:23;11419:68;;;;-1:-1:-1;;;11419:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11706:22:0;::::1;11698:73;;;::::0;-1:-1:-1;;;11698:73:0;;12031:2:1;11698:73:0::1;::::0;::::1;12013:21:1::0;12070:2;12050:18;;;12043:30;12109:34;12089:18;;;12082:62;-1:-1:-1;;;12160:18:1;;;12153:36;12206:19;;11698:73:0::1;11829:402:1::0;11698:73:0::1;11782:19;11792:8;11782:9;:19::i;:::-;11617:192:::0;:::o;9591:380::-;-1:-1:-1;;;;;9727:19:0;;9719:68;;;;-1:-1:-1;;;9719:68:0;;12438:2:1;9719:68:0;;;12420:21:1;12477:2;12457:18;;;12450:30;12516:34;12496:18;;;12489:62;-1:-1:-1;;;12567:18:1;;;12560:34;12611:19;;9719:68:0;12236:400:1;9719:68:0;-1:-1:-1;;;;;9806:21:0;;9798:68;;;;-1:-1:-1;;;9798:68:0;;12843:2:1;9798:68:0;;;12825:21:1;12882:2;12862:18;;;12855:30;12921:34;12901:18;;;12894:62;-1:-1:-1;;;12972:18:1;;;12965:32;13014:19;;9798:68:0;12641:398:1;9798:68:0;-1:-1:-1;;;;;9879:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9931:32;;3330:25:1;;;9931:32:0;;3303:18:1;9931:32:0;;;;;;;9591:380;;;:::o;16600:2723::-;16750:1;16741:6;:10;16733:64;;;;-1:-1:-1;;;16733:64:0;;13246:2:1;16733:64:0;;;13228:21:1;13285:2;13265:18;;;13258:30;13324:34;13304:18;;;13297:62;-1:-1:-1;;;13375:18:1;;;13368:39;13424:19;;16733:64:0;13044:405:1;16733:64:0;-1:-1:-1;;;;;16831:20:0;;;;;;:12;:20;;;;;;;;16830:21;:49;;;;-1:-1:-1;;;;;;16856:23:0;;;;;;:12;:23;;;;;;;;16855:24;16830:49;16808:124;;;;-1:-1:-1;;;16808:124:0;;13656:2:1;16808:124:0;;;13638:21:1;13695:2;13675:18;;;13668:30;13734:27;13714:18;;;13707:55;13779:18;;16808:124:0;13454:349:1;16808:124:0;-1:-1:-1;;;;;16950:17:0;;;;;;:9;:17;;;;;;;;16949:18;:43;;;;-1:-1:-1;;;;;;16972:20:0;;;;;;:9;:20;;;;;;;;16971:21;16949:43;16945:122;;;17017:14;;-1:-1:-1;;;17017:14:0;;;;17009:46;;;;-1:-1:-1;;;17009:46:0;;14010:2:1;17009:46:0;;;13992:21:1;14049:2;14029:18;;;14022:30;-1:-1:-1;;;14068:18:1;;;14061:49;14127:18;;17009:46:0;13808:343:1;17009:46:0;17093:4;;-1:-1:-1;;;;;17083:14:0;;;17093:4;;17083:14;:39;;;;-1:-1:-1;;;;;;17102:20:0;;;;;;:9;:20;;;;;;;;17101:21;17083:39;:59;;;;-1:-1:-1;17127:15:0;;-1:-1:-1;;;17127:15:0;;;;17126:16;17083:59;17079:233;;;17218:14;;17208:6;17185:20;17195:9;-1:-1:-1;;;;;3935:18:0;3908:7;3935:18;;;;;;;;;;;;3834:127;17185:20;:29;;;;:::i;:::-;:47;;17159:141;;;;-1:-1:-1;;;17159:141:0;;14358:2:1;17159:141:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17159:141:0;14156:356:1;17159:141:0;17352:4;;-1:-1:-1;;;;;17342:14:0;;;17352:4;;17342:14;;;;:39;;-1:-1:-1;;;;;;17361:20:0;;;;;;:9;:20;;;;;;;;17360:21;17342:39;:61;;;;-1:-1:-1;;;;;;17386:17:0;;;;;;:9;:17;;;;;;;;17385:18;17342:61;:81;;;;-1:-1:-1;17408:15:0;;-1:-1:-1;;;17408:15:0;;;;17407:16;17342:81;17324:348;;;17467:4;;-1:-1:-1;;;;;17454:17:0;;;17467:4;;17454:17;17450:211;;17555:14;;17545:6;17522:20;17532:9;-1:-1:-1;;;;;3935:18:0;3908:7;3935:18;;;;;;;;;;;;3834:127;17522:20;:29;;;;:::i;:::-;:47;;17492:153;;;;-1:-1:-1;;;17492:153:0;;14358:2:1;17492:153:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17492:153:0;14156:356:1;17492:153:0;17684:15;17710:14;17735:11;17757:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17757:25:0;-1:-1:-1;;;;;17816:17:0;;17795;17816;;;:9;:17;;;;;;;;17815:18;:56;;;;-1:-1:-1;;;;;;17851:20:0;;;;;;:9;:20;;;;;;;;17850:21;17815:56;:112;;;;;17919:8;;17903:13;;:24;;;;:::i;:::-;17888:12;:39;17815:112;18015:15;;17795:132;;-1:-1:-1;;;;18015:15:0;;;;;:36;;-1:-1:-1;;;;;;18034:17:0;;;;;;:9;:17;;;;;;;;18015:36;:60;;;-1:-1:-1;;;;;;18055:20:0;;;;;;:9;:20;;;;;;;;18015:60;18011:728;;;18096:1;18090:7;;18011:728;;;18161:4;;-1:-1:-1;;;;;18148:17:0;;;18161:4;;18148:17;:34;;;;;18170:12;18169:13;18148:34;18144:595;;;18315:13;;:9;18265:19;18226;;:58;;18265:19;18226:58;:::i;:::-;:102;;;;:::i;:::-;18375:24;;;;;;;;18390:9;18375:24;;;;;;;;;;;;;;;;;;18199:129;;-1:-1:-1;18199:129:0;;-1:-1:-1;18375:24:0;-1:-1:-1;18144:595:0;;;18422:12;18417:322;;18548:9;;:5;18513:15;18478;;:50;;18513:15;18478:50;:::i;:::-;:79;;;;:::i;:::-;18604:20;;;;;;;;18619:5;18604:20;;;;;;;;;;;;;;;;;;18451:106;;-1:-1:-1;18451:106:0;;-1:-1:-1;18604:20:0;-1:-1:-1;18417:322:0;;;18646:12;18642:97;;;18685:9;;;-1:-1:-1;18685:9:0;;-1:-1:-1;18642:97:0;18777:3;18758:15;18767:6;18758;:15;:::i;:::-;18757:23;;;;:::i;:::-;18894:18;;18751:29;;-1:-1:-1;;;;18894:18:0;;;;:36;;;;-1:-1:-1;18926:4:0;;-1:-1:-1;;;;;18916:14:0;;;18926:4;;18916:14;;18894:36;18890:76;;;18932:34;18944:7;18953:12;18932:11;:34::i;:::-;19008:48;19024:6;19032:9;19043:12;19052:3;19043:6;:12;:::i;:::-;19008:15;:48::i;:::-;19071:7;;19067:249;;19143:11;;19139:164;;19175:17;19216:3;19196:16;19205:7;19196:6;:16;:::i;:::-;19195:24;;;;:::i;:::-;19175:44;;19238:49;19254:6;19270:4;19277:9;19238:15;:49::i;:::-;19156:147;19139:164;16722:2601;;;;;16600:2723;;;:::o;11817:173::-;11892:6;;;-1:-1:-1;;;;;11909:17:0;;;-1:-1:-1;;;;;;11909:17:0;;;;;;;11942:40;;11892:6;;;11909:17;11892:6;;11942:40;;11873:16;;11942:40;11862:128;11817:173;:::o;19331:1590::-;14176:15;;-1:-1:-1;;;14176:15:0;;;;14171:125;;14208:15;:22;;-1:-1:-1;;;;14208:22:0;-1:-1:-1;;;14208:22:0;;;19419:49;;19450:7:::1;19419:49;19525:4;19481:23;3935:18:::0;;;;;;;;;;;19565:23:::1;::::0;19546:42;::::1;19542:1372;;19635:1;19609:23;;:27;19605:109;;;-1:-1:-1::0;19675:23:0::1;::::0;19605:109:::1;19785:19;19807:11;:7:::0;19817:1:::1;19807:11;:::i;:::-;19785:33;;19833:32;19927:11;19887:9;:19;;;19869:15;:37;;;;:::i;:::-;19868:70;;;;:::i;:::-;19833:105:::0;-1:-1:-1;19953:14:0::1;19970:42;19833:105:::0;19970:15;:42:::1;:::i;:::-;19953:59:::0;-1:-1:-1;20054:21:0::1;20092:24;19953:59:::0;20092:16:::1;:24::i;:::-;20133:20;20156:38;20180:14:::0;20156:21:::1;:38;:::i;:::-;20133:61;;20209:19;20261:9;:19;;;20247:11;:33;;;;:::i;:::-;20231:50;::::0;:12;:50:::1;:::i;:::-;20209:72;;20296:29;20342:9;:19;;;20328:11;:33;;;;:::i;:::-;20296:65:::0;-1:-1:-1;20382:25:0;;20378:161:::1;;20462:61;20475:24;20501:21;20462:12;:61::i;:::-;20596:19:::0;;20555:20:::1;::::0;20578:15:::1;:11:::0;20592:1:::1;20578:15;:::i;:::-;:37;;;;:::i;:::-;20555:60:::0;-1:-1:-1;20634:16:0;;20630:105:::1;;20679:15;::::0;20671:48:::1;::::0;-1:-1:-1;;;;;20679:15:0::1;20706:12:::0;20671:34:::1;:48::i;:::-;20786:13;::::0;::::1;::::0;20751:14:::1;::::0;20768:15:::1;:11:::0;20782:1:::1;20768:15;:::i;:::-;:31;;;;:::i;:::-;20751:48:::0;-1:-1:-1;20818:10:0;;20814:87:::1;;20857:9;::::0;20849:36:::1;::::0;-1:-1:-1;;;;;20857:9:0::1;20878:6:::0;20849:28:::1;:36::i;:::-;19590:1324;;;;;;;;;19542:1372;19411:1510;14245:1;14261:15:::0;:23;;-1:-1:-1;;;;14261:23:0;;;19331:1590;;:::o;7966:638::-;-1:-1:-1;;;;;8106:20:0;;8098:70;;;;-1:-1:-1;;;8098:70:0;;14941:2:1;8098:70:0;;;14923:21:1;14980:2;14960:18;;;14953:30;15019:34;14999:18;;;14992:62;-1:-1:-1;;;15070:18:1;;;15063:35;15115:19;;8098:70:0;14739:401:1;8098:70:0;-1:-1:-1;;;;;8187:23:0;;8179:71;;;;-1:-1:-1;;;8179:71:0;;15347:2:1;8179:71:0;;;15329:21:1;15386:2;15366:18;;;15359:30;15425:34;15405:18;;;15398:62;-1:-1:-1;;;15476:18:1;;;15469:33;15519:19;;8179:71:0;15145:399:1;8179:71:0;-1:-1:-1;;;;;8347:17:0;;8323:21;8347:17;;;;;;;;;;;8383:23;;;;8375:74;;;;-1:-1:-1;;;8375:74:0;;15751:2:1;8375:74:0;;;15733:21:1;15790:2;15770:18;;;15763:30;15829:34;15809:18;;;15802:62;-1:-1:-1;;;15880:18:1;;;15873:36;15926:19;;8375:74:0;15549:402:1;8375:74:0;8480:22;8496:6;8480:13;:22;:::i;:::-;-1:-1:-1;;;;;8460:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8513:20;;;;;;;;:30;;8537:6;;8460:9;8513:30;;8537:6;;8513:30;:::i;:::-;;;;;;;;8578:9;-1:-1:-1;;;;;8561:35:0;8570:6;-1:-1:-1;;;;;8561:35:0;;8589:6;8561:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8561:35:0;;;;;;;;8087:517;7966:638;;;:::o;20929:526::-;21071:16;;;21085:1;21071:16;;;;;;;;21047:21;;21071:16;;;;;;;;;;-1:-1:-1;21071:16:0;21047:40;;21116:4;21098;21103:1;21098:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21098:23:0;;;:7;;;;;;;;;;:23;;;;21142:6;;:13;;;-1:-1:-1;;;21142:13:0;;;;:6;;;;;:11;;:13;;;;;21098:7;;21142:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21132:4;21137:1;21132:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21132:23:0;;;:7;;;;;;;;;:23;21200:6;;21168:53;;21185:4;;21200:6;21209:11;21168:8;:53::i;:::-;21260:6;;:187;;-1:-1:-1;;;21260:187:0;;-1:-1:-1;;;;;21260:6:0;;;;:57;;:187;;21332:11;;21260:6;;21374:4;;21401;;21421:15;;21260:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20984:471;20929:526;:::o;21463:499::-;21643:6;;21611:53;;21628:4;;-1:-1:-1;;;;;21643:6:0;21652:11;21611:8;:53::i;:::-;21707:6;;21904:9;;21707:247;;-1:-1:-1;;;21707:247:0;;21772:4;21707:247;;;17538:34:1;17588:18;;;17581:34;;;21707:6:0;17631:18:1;;;17624:34;;;17674:18;;;17667:34;-1:-1:-1;;;;;21904:9:0;;;17717:19:1;;;17710:44;21928:15:0;17770:19:1;;;17763:35;21707:6:0;;;:22;;21738:9;;17472:19:1;;21707:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21463:499;;:::o;10735:319::-;10850:6;10825:21;:31;;10817:73;;;;-1:-1:-1;;;10817:73:0;;18322:2:1;10817:73:0;;;18304:21:1;18361:2;18341:18;;;18334:30;18400:31;18380:18;;;18373:59;18449:18;;10817:73:0;18120:353:1;10817:73:0;10904:12;10922:9;-1:-1:-1;;;;;10922:14:0;10945:6;10922:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10903:54;;;10976:7;10968:78;;;;-1:-1:-1;;;10968:78:0;;18890:2:1;10968:78:0;;;18872:21:1;18929:2;18909:18;;;18902:30;18968:34;18948:18;;;18941:62;19039:28;19019:18;;;19012:56;19085:19;;10968:78:0;18688: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:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:241::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:28;3143:5;3121:28;:::i;:::-;3168:5;2938:241;-1:-1:-1;;;2938:241:1:o;3366:247::-;3425:6;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3533:9;3520:23;3552:31;3577:5;3552:31;:::i;3618:180::-;3677:6;3730:2;3718:9;3709:7;3705:23;3701:32;3698:52;;;3746:1;3743;3736:12;3698:52;-1:-1:-1;3769:23:1;;3618:180;-1:-1:-1;3618:180:1:o;3803:456::-;3880:6;3888;3896;3949:2;3937:9;3928:7;3924:23;3920:32;3917:52;;;3965:1;3962;3955:12;3917:52;4004:9;3991:23;4023:31;4048:5;4023:31;:::i;:::-;4073:5;-1:-1:-1;4130:2:1;4115:18;;4102:32;4143:33;4102:32;4143:33;:::i;:::-;3803:456;;4195:7;;-1:-1:-1;;;4249:2:1;4234:18;;;;4221:32;;3803:456::o;4453:382::-;4518:6;4526;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;4634:9;4621:23;4653:31;4678:5;4653:31;:::i;:::-;4703:5;-1:-1:-1;4760:2:1;4745:18;;4732:32;4773:30;4732:32;4773:30;:::i;:::-;4822:7;4812:17;;;4453:382;;;;;:::o;4840:316::-;4917:6;4925;4933;4986:2;4974:9;4965:7;4961:23;4957:32;4954:52;;;5002:1;4999;4992:12;4954:52;-1:-1:-1;;5025:23:1;;;5095:2;5080:18;;5067:32;;-1:-1:-1;5146:2:1;5131:18;;;5118:32;;4840:316;-1:-1:-1;4840:316:1:o;5369:388::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5553:9;5540:23;5572:31;5597:5;5572:31;:::i;:::-;5622:5;-1:-1:-1;5679:2:1;5664:18;;5651:32;5692:33;5651:32;5692:33;:::i;5985:380::-;6064:1;6060:12;;;;6107;;;6128:61;;6182:4;6174:6;6170:17;6160:27;;6128:61;6235:2;6227:6;6224:14;6204:18;6201:38;6198:161;;6281:10;6276:3;6272:20;6269:1;6262:31;6316:4;6313:1;6306:15;6344:4;6341:1;6334:15;6198:161;;5985:380;;;:::o;6370:356::-;6572:2;6554:21;;;6591:18;;;6584:30;6650:34;6645:2;6630:18;;6623:62;6717:2;6702:18;;6370:356::o;6731:127::-;6792:10;6787:3;6783:20;6780:1;6773:31;6823:4;6820:1;6813:15;6847:4;6844:1;6837:15;6863:127;6924:10;6919:3;6915:20;6912:1;6905:31;6955:4;6952:1;6945:15;6979:4;6976:1;6969:15;6995:135;7034:3;7055:17;;;7052:43;;7075:18;;:::i;:::-;-1:-1:-1;7122:1:1;7111:13;;6995:135::o;8307:128::-;8374:9;;;8395:11;;;8392:37;;;8409:18;;:::i;8440:125::-;8505:9;;;8526:10;;;8523:36;;;8539:18;;:::i;8570:422::-;8659:1;8702:5;8659:1;8716:270;8737:7;8727:8;8724:21;8716:270;;;8796:4;8792:1;8788:6;8784:17;8778:4;8775:27;8772:53;;;8805:18;;:::i;:::-;8855:7;8845:8;8841:22;8838:55;;;8875:16;;;;8838:55;8954:22;;;;8914:15;;;;8716:270;;;8720:3;8570:422;;;;;:::o;8997:806::-;9046:5;9076:8;9066:80;;-1:-1:-1;9117:1:1;9131:5;;9066:80;9165:4;9155:76;;-1:-1:-1;9202:1:1;9216:5;;9155:76;9247:4;9265:1;9260:59;;;;9333:1;9328:130;;;;9240:218;;9260:59;9290:1;9281:10;;9304:5;;;9328:130;9365:3;9355:8;9352:17;9349:43;;;9372:18;;:::i;:::-;-1:-1:-1;;9428:1:1;9414:16;;9443:5;;9240:218;;9542:2;9532:8;9529:16;9523:3;9517:4;9514:13;9510:36;9504:2;9494:8;9491:16;9486:2;9480:4;9477:12;9473:35;9470:77;9467:159;;;-1:-1:-1;9579:19:1;;;9611:5;;9467:159;9658:34;9683:8;9677:4;9658:34;:::i;:::-;9728:6;9724:1;9720:6;9716:19;9707:7;9704:32;9701:58;;;9739:18;;:::i;:::-;9777:20;;8997:806;-1:-1:-1;;;8997:806:1:o;9808:140::-;9866:5;9895:47;9936:4;9926:8;9922:19;9916:4;9895:47;:::i;9953:168::-;10026:9;;;10057;;10074:15;;;10068:22;;10054:37;10044:71;;10095:18;;:::i;10760:245::-;10827:6;10880:2;10868:9;10859:7;10855:23;10851:32;10848:52;;;10896:1;10893;10886:12;10848:52;10928:9;10922:16;10947:28;10969:5;10947:28;:::i;14517:217::-;14557:1;14583;14573:132;;14627:10;14622:3;14618:20;14615:1;14608:31;14662:4;14659:1;14652:15;14690:4;14687:1;14680:15;14573:132;-1:-1:-1;14719:9:1;;14517:217::o;15956:251::-;16026:6;16079:2;16067:9;16058:7;16054:23;16050:32;16047:52;;;16095:1;16092;16085:12;16047:52;16127:9;16121:16;16146:31;16171:5;16146:31;:::i;16212:980::-;16474:4;16522:3;16511:9;16507:19;16553:6;16542:9;16535:25;16579:2;16617:6;16612:2;16601:9;16597:18;16590:34;16660:3;16655:2;16644:9;16640:18;16633:31;16684:6;16719;16713:13;16750:6;16742;16735:22;16788:3;16777:9;16773:19;16766:26;;16827:2;16819:6;16815:15;16801:29;;16848:1;16858:195;16872:6;16869:1;16866:13;16858:195;;;16937:13;;-1:-1:-1;;;;;16933:39:1;16921:52;;17028:15;;;;16993:12;;;;16969:1;16887:9;16858:195;;;-1:-1:-1;;;;;;;17109:32:1;;;;17104:2;17089:18;;17082:60;-1:-1:-1;;;17173:3:1;17158:19;17151:35;17070:3;16212:980;-1:-1:-1;;;16212:980:1:o;17809:306::-;17897:6;17905;17913;17966:2;17954:9;17945:7;17941:23;17937:32;17934:52;;;17982:1;17979;17972:12;17934:52;18011:9;18005:16;17995:26;;18061:2;18050:9;18046:18;18040:25;18030:35;;18105:2;18094:9;18090:18;18084:25;18074:35;;17809:306;;;;;:::o

Swarm Source

ipfs://0f2347ceb20dd814e8956e53f31ddac061c5b76bf548651c299e9405a1bf8b71
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.