ETH Price: $2,939.23 (-6.12%)
Gas: 8 Gwei

Token

GOOD MORNING (GM☕️)
 

Overview

Max Total Supply

100,000,000 GM☕️

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
984,435.004347453317390779 GM☕️

Value
$0.00
0x10d27ef1eb97c95634322c273f9c642a0bd20003
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:
GM

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-09
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.1;

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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
     * minting 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 minted 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,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract GM is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 50_000 * 10e18;
    uint256 public maxTxAmount = 100_000_000* 10**18;
    uint256 public maxWalletAmount = 100_000_000 * 10**18;
    
    address public marketingWallet = 0xbCBed3ffC8597b236F733951eE3571dbd7780d93;
    address public devWallet = 0xbCBed3ffC8597b236F733951eE3571dbd7780d93;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(0,0,0);
    Taxes public sellTaxes = Taxes(0,0,0);
    uint256 public totTax = 0;
    uint256 public totSellTax = 0;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("GOOD MORNING", unicode"GM☕️") {
        _mint(msg.sender, 100000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

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

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        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 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

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

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

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

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
    function setIsBot(address account, bool state) external onlyOwner{
        isBot[account] = state;
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

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

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // 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":"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":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","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":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060098190556969e10de76676d0800000600a556a52b7d2dcc80cd2e4000000600b819055600c55600d805473bcbed3ffc8597b236f733951ee3571dbd7780d936001600160a01b03199182168117909255600e80549091169091179055608081905260a081905260c0819052600f8190556010819055601181905561014060405260e08190526101008190526101208190526012819055601381905560148190556015819055601655348015620000b757600080fd5b50604080518082018252600c81526b474f4f44204d4f524e494e4760a01b602080830191825283518085019094526008845267474de29895efb88f60c01b9084015281519192916200010c91600391620004b9565b50805162000122906004906020840190620004b9565b5050506200013f620001396200038560201b60201c565b62000389565b62000171336200014e620003db565b6200015b90600a62000651565b6200016b906305f5e1006200073c565b620003e0565b336000908152601760209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a01559260048083019392829003018186803b158015620001d757600080fd5b505afa158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021291906200055f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025b57600080fd5b505afa15801562000270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029691906200055f565b6040518363ffffffff1660e01b8152600401620002b59291906200058f565b602060405180830381600087803b158015620002d057600080fd5b505af1158015620002e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030b91906200055f565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff199081166001908117909255600d54851684528284208054821683179055600e54909416835291208054909216179055620007b1565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601290565b6001600160a01b038216620004125760405162461bcd60e51b81526004016200040990620005a9565b60405180910390fd5b6200042060008383620004b4565b8060026000828254620004349190620005e9565b90915550506001600160a01b0382166000908152602081905260408120805483929062000463908490620005e9565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004a8908590620005e0565b60405180910390a35050565b505050565b828054620004c7906200075e565b90600052602060002090601f016020900481019282620004eb576000855562000536565b82601f106200050657805160ff191683800117855562000536565b8280016001018555821562000536579182015b828111156200053657825182559160200191906001019062000519565b506200054492915062000548565b5090565b5b8082111562000544576000815560010162000549565b60006020828403121562000571578081fd5b81516001600160a01b038116811462000588578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620005ff57620005ff6200079b565b500190565b80825b600180861162000618575062000648565b8187048211156200062d576200062d6200079b565b808616156200063b57918102915b9490941c93800262000607565b94509492505050565b60006200058860001960ff851684600082620006705750600162000588565b816200067f5750600062000588565b8160018114620006985760028114620006a357620006d7565b600191505062000588565b60ff841115620006b757620006b76200079b565b6001841b915084821115620006d057620006d06200079b565b5062000588565b5060208310610133831016604e8410600b84101617156200070f575081810a838111156200070957620007096200079b565b62000588565b6200071e848484600162000604565b8086048211156200073357620007336200079b565b02949350505050565b60008160001904831182151516156200075957620007596200079b565b500290565b6002810460018216806200077357607f821691505b602082108114156200079557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6124de80620007c16000396000f3fe6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c14610717578063e545fd6d14610737578063e9dae5ed14610757578063f2fde38b14610777578063f66895a314610797578063f887ea40146107ac57610288565b8063a9059cbb14610662578063aa4bde2814610682578063aacebbe314610697578063c18bc195146106b7578063dbe66ca0146106d7578063dd62ed3e146106f757610288565b80638ea5220f116101135780638ea5220f146105c357806395d89b41146105d85780639d0014b1146105ed5780639e252f001461060d578063a457c2d71461062d578063a8aa1b311461064d57610288565b806375f0a8741461053757806382aa7c68146105595780638c0b5e22146105795780638cd4426d1461058e5780638da5cb5b146105ae57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146104945780636256d181146104a95780636ddd1713146104c957806370a08231146104de578063715018a6146104fe578063728f8eea1461051357610288565b8063293b7ef4146103e8578063313ce567146103fd578063395093511461041f5780633bbac5791461043f57806340b28c2f1461045f5780634ada218b1461047f57610288565b806318160ddd1161024557806318160ddd146103495780631816467f1461035e5780632253163d1461037e57806323b872dd1461039357806326b5d32f146103b3578063274a533c146103d357610288565b806303c0f5d41461028d5780630445b667146102af57806306fdde03146102da57806308733214146102fc578063095ea7b31461031c57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004611d06565b6107c1565b005b3480156102bb57600080fd5b506102c4610834565b6040516102d19190612329565b60405180910390f35b3480156102e657600080fd5b506102ef61083a565b6040516102d19190611e8e565b34801561030857600080fd5b506102ad610317366004611dc0565b6108cc565b34801561032857600080fd5b5061033c610337366004611d33565b61094f565b6040516102d19190611e83565b34801561035557600080fd5b506102c461096c565b34801561036a57600080fd5b506102ad610379366004611c4f565b610972565b34801561038a57600080fd5b506102c46109d3565b34801561039f57600080fd5b5061033c6103ae366004611cc6565b6109d9565b3480156103bf57600080fd5b506102ad6103ce366004611dc0565b610a70565b3480156103df57600080fd5b506102c4610b40565b3480156103f457600080fd5b506102c4610b46565b34801561040957600080fd5b50610412610b4c565b6040516102d191906123b8565b34801561042b57600080fd5b5061033c61043a366004611d33565b610b51565b34801561044b57600080fd5b5061033c61045a366004611c4f565b610ba0565b34801561046b57600080fd5b506102ad61047a366004611d96565b610bb5565b34801561048b57600080fd5b5061033c610c22565b3480156104a057600080fd5b506102c4610c32565b3480156104b557600080fd5b506102ad6104c4366004611da8565b610c38565b3480156104d557600080fd5b5061033c610c8f565b3480156104ea57600080fd5b506102c46104f9366004611c4f565b610c9f565b34801561050a57600080fd5b506102ad610cba565b34801561051f57600080fd5b50610528610d05565b6040516102d1939291906123a2565b34801561054357600080fd5b5061054c610d11565b6040516102d19190611e1b565b34801561056557600080fd5b506102ad610574366004611da8565b610d20565b34801561058557600080fd5b506102c4610db4565b34801561059a57600080fd5b506102ad6105a9366004611d33565b610dba565b3480156105ba57600080fd5b5061054c610e85565b3480156105cf57600080fd5b5061054c610e94565b3480156105e457600080fd5b506102ef610ea3565b3480156105f957600080fd5b506102ad610608366004611da8565b610eb2565b34801561061957600080fd5b506102ad610628366004611da8565b610ef6565b34801561063957600080fd5b5061033c610648366004611d33565b610f53565b34801561065957600080fd5b5061054c610fce565b34801561066e57600080fd5b5061033c61067d366004611d33565b610fdd565b34801561068e57600080fd5b506102c4610ff1565b3480156106a357600080fd5b506102ad6106b2366004611c4f565b610ff7565b3480156106c357600080fd5b506102ad6106d2366004611da8565b611058565b3480156106e357600080fd5b5061033c6106f2366004611c4f565b6110af565b34801561070357600080fd5b506102c4610712366004611c8e565b6110c4565b34801561072357600080fd5b506102ad610732366004611d5e565b6110ef565b34801561074357600080fd5b506102ad610752366004611d06565b61114c565b34801561076357600080fd5b506102ad610772366004611dc0565b6111b6565b34801561078357600080fd5b506102ad610792366004611c4f565b611239565b3480156107a357600080fd5b506105286112a7565b3480156107b857600080fd5b5061054c6112b3565b6107c96112c2565b6001600160a01b03166107da610e85565b6001600160a01b0316146108095760405162461bcd60e51b8152600401610800906121a6565b60405180910390fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b600a5481565b60606003805461084990612434565b80601f016020809104026020016040519081016040528092919081815260200182805461087590612434565b80156108c25780601f10610897576101008083540402835291602001916108c2565b820191906000526020600020905b8154815290600101906020018083116108a557829003601f168201915b5050505050905090565b6108d46112c2565b6001600160a01b03166108e5610e85565b6001600160a01b03161461090b5760405162461bcd60e51b8152600401610800906121a6565b6040805160608101825284815260208101849052018190526012839055601382905560148190558061093d83856123c6565b61094791906123c6565b601655505050565b600061096361095c6112c2565b84846112c6565b50600192915050565b60025490565b61097a6112c2565b6001600160a01b031661098b610e85565b6001600160a01b0316146109b15760405162461bcd60e51b8152600401610800906121a6565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b60165481565b60006109e684848461137a565b6001600160a01b038416600090815260016020526040812081610a076112c2565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811015610a4a5760405162461bcd60e51b81526004016108009061215e565b610a6585610a566112c2565b610a60868561241d565b6112c6565b506001949350505050565b610a786112c2565b6001600160a01b0316610a89610e85565b6001600160a01b031614610aaf5760405162461bcd60e51b8152600401610800906121a6565b47610ab9846116ab565b6000610ac5824761241d565b90508215610b0057610b00610ada84866123c6565b610ae485846123fe565b610aee91906123de565b600d546001600160a01b031690611830565b8315610b3957610b39610b1384866123c6565b610b1d86846123fe565b610b2791906123de565b600e546001600160a01b031690611830565b5050505050565b60085481565b60155481565b601290565b6000610963610b5e6112c2565b848460016000610b6c6112c2565b6001600160a01b03908116825260208083019390935260409182016000908120918b1681529252902054610a6091906123c6565b60186020526000908152604090205460ff1681565b610bbd6112c2565b6001600160a01b0316610bce610e85565b6001600160a01b031614610bf45760405162461bcd60e51b8152600401610800906121a6565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b600754600160b01b900460ff1681565b60095481565b610c406112c2565b6001600160a01b0316610c51610e85565b6001600160a01b031614610c775760405162461bcd60e51b8152600401610800906121a6565b610c8981670de0b6b3a76400006123fe565b600b5550565b600754600160a81b900460ff1681565b6001600160a01b031660009081526020819052604090205490565b610cc26112c2565b6001600160a01b0316610cd3610e85565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610800906121a6565b610d0360006118cc565b565b600f5460105460115483565b600d546001600160a01b031681565b610d286112c2565b6001600160a01b0316610d39610e85565b6001600160a01b031614610d5f5760405162461bcd60e51b8152600401610800906121a6565b600754600160b01b900460ff1615610d895760405162461bcd60e51b815260040161080090611ee1565b6007805460ff60a81b1960ff60b01b19909116600160b01b1716600160a81b17905543600855600955565b600b5481565b610dc26112c2565b6001600160a01b0316610dd3610e85565b6001600160a01b031614610df95760405162461bcd60e51b8152600401610800906121a6565b816001600160a01b031663a9059cbb610e10610e85565b836040518363ffffffff1660e01b8152600401610e2e929190611e2f565b602060405180830381600087803b158015610e4857600080fd5b505af1158015610e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e809190611d7a565b505050565b6005546001600160a01b031690565b600e546001600160a01b031681565b60606004805461084990612434565b610eba6112c2565b6001600160a01b0316610ecb610e85565b6001600160a01b031614610ef15760405162461bcd60e51b8152600401610800906121a6565b600a55565b610efe6112c2565b6001600160a01b0316610f0f610e85565b6001600160a01b031614610f355760405162461bcd60e51b8152600401610800906121a6565b610f5081610f41610e85565b6001600160a01b031690611830565b50565b60008060016000610f626112c2565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015610fae5760405162461bcd60e51b8152600401610800906122e4565b610fc4610fb96112c2565b85610a60868561241d565b5060019392505050565b6007546001600160a01b031681565b6000610963610fea6112c2565b848461137a565b600c5481565b610fff6112c2565b6001600160a01b0316611010610e85565b6001600160a01b0316146110365760405162461bcd60e51b8152600401610800906121a6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6110606112c2565b6001600160a01b0316611071610e85565b6001600160a01b0316146110975760405162461bcd60e51b8152600401610800906121a6565b6110a981670de0b6b3a76400006123fe565b600c5550565b60176020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6110f76112c2565b6001600160a01b0316611108610e85565b6001600160a01b03161461112e5760405162461bcd60e51b8152600401610800906121a6565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6111546112c2565b6001600160a01b0316611165610e85565b6001600160a01b03161461118b5760405162461bcd60e51b8152600401610800906121a6565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6111be6112c2565b6001600160a01b03166111cf610e85565b6001600160a01b0316146111f55760405162461bcd60e51b8152600401610800906121a6565b604080516060810182528481526020810184905201819052600f839055601082905560118190558061122783856123c6565b61123191906123c6565b601555505050565b6112416112c2565b6001600160a01b0316611252610e85565b6001600160a01b0316146112785760405162461bcd60e51b8152600401610800906121a6565b6001600160a01b03811661129e5760405162461bcd60e51b815260040161080090611fbb565b610f50816118cc565b60125460135460145483565b6006546001600160a01b031681565b3390565b6001600160a01b0383166112ec5760405162461bcd60e51b8152600401610800906122a0565b6001600160a01b0382166113125760405162461bcd60e51b815260040161080090612001565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061136d908590612329565b60405180910390a3505050565b6000811161139a5760405162461bcd60e51b8152600401610800906121db565b6001600160a01b03831660009081526018602052604090205460ff161580156113dc57506001600160a01b03821660009081526018602052604090205460ff16155b6113f85760405162461bcd60e51b815260040161080090612224565b6001600160a01b03831660009081526017602052604090205460ff1615801561143a57506001600160a01b03821660009081526017602052604090205460ff16155b80156114505750600754600160a01b900460ff16155b1561157357600754600160b01b900460ff1661147e5760405162461bcd60e51b815260040161080090611f8b565b4360095460085461148f91906123c6565b1115611507576007546001600160a01b038381169116146114ce576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b03848116911614611507576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b548111156115295760405162461bcd60e51b815260040161080090611f54565b6007546001600160a01b0383811691161461157357600c548161154b84610c9f565b61155591906123c6565b11156115735760405162461bcd60e51b815260040161080090612089565b600754600090600160a01b900460ff16806115a657506001600160a01b03841660009081526017602052604090205460ff165b806115c957506001600160a01b03831660009081526017602052604090205460ff165b156115d65750600061162a565b6007546001600160a01b038481169116141561160d576064601654836115fc91906123fe565b61160691906123de565b905061162a565b60646015548361161d91906123fe565b61162791906123de565b90505b600754600160a81b900460ff16801561164d5750600754600160a01b900460ff16155b801561166757506007546001600160a01b03858116911614155b80156116735750600081115b156116805761168061191e565b611694848461168f848661241d565b611a7d565b80156116a5576116a5843083611a7d565b50505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116ee57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190611c72565b8160018151811061179b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546117c191309116846112c6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117fa908590600090869030904290600401612332565b600060405180830381600087803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050505050565b804710156118505760405162461bcd60e51b815260040161080090612127565b6000826001600160a01b03168260405161186990611e18565b60006040518083038185875af1925050503d80600081146118a6576040519150601f19603f3d011682016040523d82523d6000602084013e6118ab565b606091505b5050905080610e805760405162461bcd60e51b8152600401610800906120ca565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610d03576007805460ff60a01b1916600160a01b179055600061194d30610c9f565b9050600a548110611a6d576000601654600261196991906123fe565b90506000816012600101548461197f91906123fe565b61198991906123de565b90506000611997828561241d565b9050476119a3826116ab565b60006119af824761241d565b6013549091506000906119c2908761241d565b6119cc90836123de565b6013549091506000906119df90836123fe565b905080156119f1576119f18682611ba5565b601254600090611a028460026123fe565b611a0c91906123fe565b90508015611a2a57600d54611a2a906001600160a01b031682611830565b601454600090611a3b8560026123fe565b611a4591906123fe565b90508015611a6357600e54611a63906001600160a01b031682611830565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611aa35760405162461bcd60e51b81526004016108009061225b565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161080090611f11565b611ad4838383610e80565b6001600160a01b03831660009081526020819052604090205481811015611b0d5760405162461bcd60e51b815260040161080090612043565b611b17828261241d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b4d9084906123c6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b979190612329565b60405180910390a350505050565b600654611bbd9030906001600160a01b0316846112c6565b600654600e5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611bfd9230928992600092839216904290600401611e48565b6060604051808303818588803b158015611c1657600080fd5b505af1158015611c2a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b399190611deb565b600060208284031215611c60578081fd5b8135611c6b81612485565b9392505050565b600060208284031215611c83578081fd5b8151611c6b81612485565b60008060408385031215611ca0578081fd5b8235611cab81612485565b91506020830135611cbb81612485565b809150509250929050565b600080600060608486031215611cda578081fd5b8335611ce581612485565b92506020840135611cf581612485565b929592945050506040919091013590565b60008060408385031215611d18578182fd5b8235611d2381612485565b91506020830135611cbb8161249a565b60008060408385031215611d45578182fd5b8235611d5081612485565b946020939093013593505050565b600060208284031215611d6f578081fd5b8135611c6b8161249a565b600060208284031215611d8b578081fd5b8151611c6b8161249a565b60008060408385031215611ca0578182fd5b600060208284031215611db9578081fd5b5035919050565b600080600060608486031215611dd4578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215611dff578283fd5b8351925060208401519150604084015190509250925092565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015611eba57858101830151858201604001528201611e9e565b81811115611ecb5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526016908201527554726164696e6720616c72656164792061637469766560501b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601d908201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604082015260600190565b602080825260169082015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526021908201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6040820152601d60fa1b606082015260800190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526019908201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156123815784516001600160a01b03168352938301939183019160010161235c565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b600082198211156123d9576123d961246f565b500190565b6000826123f957634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124185761241861246f565b500290565b60008282101561242f5761242f61246f565b500390565b60028104600182168061244857607f821691505b6020821081141561246957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f5057600080fd5b8015158114610f5057600080fdfea26469706673582212206a83316280616fb5d68e1caa70c2b71eeed75d434cfb7707a124392d32dbca7d64736f6c63430008010033

Deployed Bytecode

0x6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c14610717578063e545fd6d14610737578063e9dae5ed14610757578063f2fde38b14610777578063f66895a314610797578063f887ea40146107ac57610288565b8063a9059cbb14610662578063aa4bde2814610682578063aacebbe314610697578063c18bc195146106b7578063dbe66ca0146106d7578063dd62ed3e146106f757610288565b80638ea5220f116101135780638ea5220f146105c357806395d89b41146105d85780639d0014b1146105ed5780639e252f001461060d578063a457c2d71461062d578063a8aa1b311461064d57610288565b806375f0a8741461053757806382aa7c68146105595780638c0b5e22146105795780638cd4426d1461058e5780638da5cb5b146105ae57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146104945780636256d181146104a95780636ddd1713146104c957806370a08231146104de578063715018a6146104fe578063728f8eea1461051357610288565b8063293b7ef4146103e8578063313ce567146103fd578063395093511461041f5780633bbac5791461043f57806340b28c2f1461045f5780634ada218b1461047f57610288565b806318160ddd1161024557806318160ddd146103495780631816467f1461035e5780632253163d1461037e57806323b872dd1461039357806326b5d32f146103b3578063274a533c146103d357610288565b806303c0f5d41461028d5780630445b667146102af57806306fdde03146102da57806308733214146102fc578063095ea7b31461031c57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004611d06565b6107c1565b005b3480156102bb57600080fd5b506102c4610834565b6040516102d19190612329565b60405180910390f35b3480156102e657600080fd5b506102ef61083a565b6040516102d19190611e8e565b34801561030857600080fd5b506102ad610317366004611dc0565b6108cc565b34801561032857600080fd5b5061033c610337366004611d33565b61094f565b6040516102d19190611e83565b34801561035557600080fd5b506102c461096c565b34801561036a57600080fd5b506102ad610379366004611c4f565b610972565b34801561038a57600080fd5b506102c46109d3565b34801561039f57600080fd5b5061033c6103ae366004611cc6565b6109d9565b3480156103bf57600080fd5b506102ad6103ce366004611dc0565b610a70565b3480156103df57600080fd5b506102c4610b40565b3480156103f457600080fd5b506102c4610b46565b34801561040957600080fd5b50610412610b4c565b6040516102d191906123b8565b34801561042b57600080fd5b5061033c61043a366004611d33565b610b51565b34801561044b57600080fd5b5061033c61045a366004611c4f565b610ba0565b34801561046b57600080fd5b506102ad61047a366004611d96565b610bb5565b34801561048b57600080fd5b5061033c610c22565b3480156104a057600080fd5b506102c4610c32565b3480156104b557600080fd5b506102ad6104c4366004611da8565b610c38565b3480156104d557600080fd5b5061033c610c8f565b3480156104ea57600080fd5b506102c46104f9366004611c4f565b610c9f565b34801561050a57600080fd5b506102ad610cba565b34801561051f57600080fd5b50610528610d05565b6040516102d1939291906123a2565b34801561054357600080fd5b5061054c610d11565b6040516102d19190611e1b565b34801561056557600080fd5b506102ad610574366004611da8565b610d20565b34801561058557600080fd5b506102c4610db4565b34801561059a57600080fd5b506102ad6105a9366004611d33565b610dba565b3480156105ba57600080fd5b5061054c610e85565b3480156105cf57600080fd5b5061054c610e94565b3480156105e457600080fd5b506102ef610ea3565b3480156105f957600080fd5b506102ad610608366004611da8565b610eb2565b34801561061957600080fd5b506102ad610628366004611da8565b610ef6565b34801561063957600080fd5b5061033c610648366004611d33565b610f53565b34801561065957600080fd5b5061054c610fce565b34801561066e57600080fd5b5061033c61067d366004611d33565b610fdd565b34801561068e57600080fd5b506102c4610ff1565b3480156106a357600080fd5b506102ad6106b2366004611c4f565b610ff7565b3480156106c357600080fd5b506102ad6106d2366004611da8565b611058565b3480156106e357600080fd5b5061033c6106f2366004611c4f565b6110af565b34801561070357600080fd5b506102c4610712366004611c8e565b6110c4565b34801561072357600080fd5b506102ad610732366004611d5e565b6110ef565b34801561074357600080fd5b506102ad610752366004611d06565b61114c565b34801561076357600080fd5b506102ad610772366004611dc0565b6111b6565b34801561078357600080fd5b506102ad610792366004611c4f565b611239565b3480156107a357600080fd5b506105286112a7565b3480156107b857600080fd5b5061054c6112b3565b6107c96112c2565b6001600160a01b03166107da610e85565b6001600160a01b0316146108095760405162461bcd60e51b8152600401610800906121a6565b60405180910390fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b600a5481565b60606003805461084990612434565b80601f016020809104026020016040519081016040528092919081815260200182805461087590612434565b80156108c25780601f10610897576101008083540402835291602001916108c2565b820191906000526020600020905b8154815290600101906020018083116108a557829003601f168201915b5050505050905090565b6108d46112c2565b6001600160a01b03166108e5610e85565b6001600160a01b03161461090b5760405162461bcd60e51b8152600401610800906121a6565b6040805160608101825284815260208101849052018190526012839055601382905560148190558061093d83856123c6565b61094791906123c6565b601655505050565b600061096361095c6112c2565b84846112c6565b50600192915050565b60025490565b61097a6112c2565b6001600160a01b031661098b610e85565b6001600160a01b0316146109b15760405162461bcd60e51b8152600401610800906121a6565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b60165481565b60006109e684848461137a565b6001600160a01b038416600090815260016020526040812081610a076112c2565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811015610a4a5760405162461bcd60e51b81526004016108009061215e565b610a6585610a566112c2565b610a60868561241d565b6112c6565b506001949350505050565b610a786112c2565b6001600160a01b0316610a89610e85565b6001600160a01b031614610aaf5760405162461bcd60e51b8152600401610800906121a6565b47610ab9846116ab565b6000610ac5824761241d565b90508215610b0057610b00610ada84866123c6565b610ae485846123fe565b610aee91906123de565b600d546001600160a01b031690611830565b8315610b3957610b39610b1384866123c6565b610b1d86846123fe565b610b2791906123de565b600e546001600160a01b031690611830565b5050505050565b60085481565b60155481565b601290565b6000610963610b5e6112c2565b848460016000610b6c6112c2565b6001600160a01b03908116825260208083019390935260409182016000908120918b1681529252902054610a6091906123c6565b60186020526000908152604090205460ff1681565b610bbd6112c2565b6001600160a01b0316610bce610e85565b6001600160a01b031614610bf45760405162461bcd60e51b8152600401610800906121a6565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b600754600160b01b900460ff1681565b60095481565b610c406112c2565b6001600160a01b0316610c51610e85565b6001600160a01b031614610c775760405162461bcd60e51b8152600401610800906121a6565b610c8981670de0b6b3a76400006123fe565b600b5550565b600754600160a81b900460ff1681565b6001600160a01b031660009081526020819052604090205490565b610cc26112c2565b6001600160a01b0316610cd3610e85565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610800906121a6565b610d0360006118cc565b565b600f5460105460115483565b600d546001600160a01b031681565b610d286112c2565b6001600160a01b0316610d39610e85565b6001600160a01b031614610d5f5760405162461bcd60e51b8152600401610800906121a6565b600754600160b01b900460ff1615610d895760405162461bcd60e51b815260040161080090611ee1565b6007805460ff60a81b1960ff60b01b19909116600160b01b1716600160a81b17905543600855600955565b600b5481565b610dc26112c2565b6001600160a01b0316610dd3610e85565b6001600160a01b031614610df95760405162461bcd60e51b8152600401610800906121a6565b816001600160a01b031663a9059cbb610e10610e85565b836040518363ffffffff1660e01b8152600401610e2e929190611e2f565b602060405180830381600087803b158015610e4857600080fd5b505af1158015610e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e809190611d7a565b505050565b6005546001600160a01b031690565b600e546001600160a01b031681565b60606004805461084990612434565b610eba6112c2565b6001600160a01b0316610ecb610e85565b6001600160a01b031614610ef15760405162461bcd60e51b8152600401610800906121a6565b600a55565b610efe6112c2565b6001600160a01b0316610f0f610e85565b6001600160a01b031614610f355760405162461bcd60e51b8152600401610800906121a6565b610f5081610f41610e85565b6001600160a01b031690611830565b50565b60008060016000610f626112c2565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015610fae5760405162461bcd60e51b8152600401610800906122e4565b610fc4610fb96112c2565b85610a60868561241d565b5060019392505050565b6007546001600160a01b031681565b6000610963610fea6112c2565b848461137a565b600c5481565b610fff6112c2565b6001600160a01b0316611010610e85565b6001600160a01b0316146110365760405162461bcd60e51b8152600401610800906121a6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6110606112c2565b6001600160a01b0316611071610e85565b6001600160a01b0316146110975760405162461bcd60e51b8152600401610800906121a6565b6110a981670de0b6b3a76400006123fe565b600c5550565b60176020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6110f76112c2565b6001600160a01b0316611108610e85565b6001600160a01b03161461112e5760405162461bcd60e51b8152600401610800906121a6565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6111546112c2565b6001600160a01b0316611165610e85565b6001600160a01b03161461118b5760405162461bcd60e51b8152600401610800906121a6565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6111be6112c2565b6001600160a01b03166111cf610e85565b6001600160a01b0316146111f55760405162461bcd60e51b8152600401610800906121a6565b604080516060810182528481526020810184905201819052600f839055601082905560118190558061122783856123c6565b61123191906123c6565b601555505050565b6112416112c2565b6001600160a01b0316611252610e85565b6001600160a01b0316146112785760405162461bcd60e51b8152600401610800906121a6565b6001600160a01b03811661129e5760405162461bcd60e51b815260040161080090611fbb565b610f50816118cc565b60125460135460145483565b6006546001600160a01b031681565b3390565b6001600160a01b0383166112ec5760405162461bcd60e51b8152600401610800906122a0565b6001600160a01b0382166113125760405162461bcd60e51b815260040161080090612001565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061136d908590612329565b60405180910390a3505050565b6000811161139a5760405162461bcd60e51b8152600401610800906121db565b6001600160a01b03831660009081526018602052604090205460ff161580156113dc57506001600160a01b03821660009081526018602052604090205460ff16155b6113f85760405162461bcd60e51b815260040161080090612224565b6001600160a01b03831660009081526017602052604090205460ff1615801561143a57506001600160a01b03821660009081526017602052604090205460ff16155b80156114505750600754600160a01b900460ff16155b1561157357600754600160b01b900460ff1661147e5760405162461bcd60e51b815260040161080090611f8b565b4360095460085461148f91906123c6565b1115611507576007546001600160a01b038381169116146114ce576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b03848116911614611507576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b548111156115295760405162461bcd60e51b815260040161080090611f54565b6007546001600160a01b0383811691161461157357600c548161154b84610c9f565b61155591906123c6565b11156115735760405162461bcd60e51b815260040161080090612089565b600754600090600160a01b900460ff16806115a657506001600160a01b03841660009081526017602052604090205460ff165b806115c957506001600160a01b03831660009081526017602052604090205460ff165b156115d65750600061162a565b6007546001600160a01b038481169116141561160d576064601654836115fc91906123fe565b61160691906123de565b905061162a565b60646015548361161d91906123fe565b61162791906123de565b90505b600754600160a81b900460ff16801561164d5750600754600160a01b900460ff16155b801561166757506007546001600160a01b03858116911614155b80156116735750600081115b156116805761168061191e565b611694848461168f848661241d565b611a7d565b80156116a5576116a5843083611a7d565b50505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116ee57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190611c72565b8160018151811061179b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546117c191309116846112c6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117fa908590600090869030904290600401612332565b600060405180830381600087803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050505050565b804710156118505760405162461bcd60e51b815260040161080090612127565b6000826001600160a01b03168260405161186990611e18565b60006040518083038185875af1925050503d80600081146118a6576040519150601f19603f3d011682016040523d82523d6000602084013e6118ab565b606091505b5050905080610e805760405162461bcd60e51b8152600401610800906120ca565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610d03576007805460ff60a01b1916600160a01b179055600061194d30610c9f565b9050600a548110611a6d576000601654600261196991906123fe565b90506000816012600101548461197f91906123fe565b61198991906123de565b90506000611997828561241d565b9050476119a3826116ab565b60006119af824761241d565b6013549091506000906119c2908761241d565b6119cc90836123de565b6013549091506000906119df90836123fe565b905080156119f1576119f18682611ba5565b601254600090611a028460026123fe565b611a0c91906123fe565b90508015611a2a57600d54611a2a906001600160a01b031682611830565b601454600090611a3b8560026123fe565b611a4591906123fe565b90508015611a6357600e54611a63906001600160a01b031682611830565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611aa35760405162461bcd60e51b81526004016108009061225b565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161080090611f11565b611ad4838383610e80565b6001600160a01b03831660009081526020819052604090205481811015611b0d5760405162461bcd60e51b815260040161080090612043565b611b17828261241d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b4d9084906123c6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b979190612329565b60405180910390a350505050565b600654611bbd9030906001600160a01b0316846112c6565b600654600e5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611bfd9230928992600092839216904290600401611e48565b6060604051808303818588803b158015611c1657600080fd5b505af1158015611c2a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b399190611deb565b600060208284031215611c60578081fd5b8135611c6b81612485565b9392505050565b600060208284031215611c83578081fd5b8151611c6b81612485565b60008060408385031215611ca0578081fd5b8235611cab81612485565b91506020830135611cbb81612485565b809150509250929050565b600080600060608486031215611cda578081fd5b8335611ce581612485565b92506020840135611cf581612485565b929592945050506040919091013590565b60008060408385031215611d18578182fd5b8235611d2381612485565b91506020830135611cbb8161249a565b60008060408385031215611d45578182fd5b8235611d5081612485565b946020939093013593505050565b600060208284031215611d6f578081fd5b8135611c6b8161249a565b600060208284031215611d8b578081fd5b8151611c6b8161249a565b60008060408385031215611ca0578182fd5b600060208284031215611db9578081fd5b5035919050565b600080600060608486031215611dd4578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215611dff578283fd5b8351925060208401519150604084015190509250925092565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015611eba57858101830151858201604001528201611e9e565b81811115611ecb5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526016908201527554726164696e6720616c72656164792061637469766560501b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601d908201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604082015260600190565b602080825260169082015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526021908201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6040820152601d60fa1b606082015260800190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526019908201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156123815784516001600160a01b03168352938301939183019160010161235c565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b600082198211156123d9576123d961246f565b500190565b6000826123f957634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124185761241861246f565b500290565b60008282101561242f5761242f61246f565b500390565b60028104600182168061244857607f821691505b6020821081141561246957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f5057600080fd5b8015158114610f5057600080fdfea26469706673582212206a83316280616fb5d68e1caa70c2b71eeed75d434cfb7707a124392d32dbca7d64736f6c63430008010033

Deployed Bytecode Sourcemap

13171:8330:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20115:106;;;;;;;;;;-1:-1:-1;20115:106:0;;;;;:::i;:::-;;:::i;:::-;;13477:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2377:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19504:214::-;;;;;;;;;;-1:-1:-1;19504:214:0;;;;;:::i;:::-;;:::i;4544:169::-;;;;;;;;;;-1:-1:-1;4544:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3497:108::-;;;;;;;;;;;;;:::i;19856:102::-;;;;;;;;;;-1:-1:-1;19856:102:0;;;;;:::i;:::-;;:::i;14042:29::-;;;;;;;;;;;;;:::i;5195:422::-;;;;;;;;;;-1:-1:-1;5195:422:0;;;;;:::i;:::-;;:::i;20891:546::-;;;;;;;;;;-1:-1:-1;20891:546:0;;;;;:::i;:::-;;:::i;13400:28::-;;;;;;;;;;;;;:::i;14010:25::-;;;;;;;;;;;;;:::i;3339:93::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6026:215::-;;;;;;;;;;-1:-1:-1;6026:215:0;;;;;:::i;:::-;;:::i;14140:38::-;;;;;;;;;;-1:-1:-1;14140:38:0;;;;;:::i;:::-;;:::i;19966:137::-;;;;;;;;;;-1:-1:-1;19966:137:0;;;;;:::i;:::-;;:::i;13365:26::-;;;;;;;;;;;;;:::i;13435:29::-;;;;;;;;;;;;;:::i;20375:109::-;;;;;;;;;;-1:-1:-1;20375:109:0;;;;;:::i;:::-;;:::i;13335:23::-;;;;;;;;;;;;;:::i;3668:127::-;;;;;;;;;;-1:-1:-1;3668:127:0;;;;;:::i;:::-;;:::i;11948:94::-;;;;;;;;;;;;;:::i;13926:33::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;13650:75::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19012:274::-;;;;;;;;;;-1:-1:-1;19012:274:0;;;;;:::i;:::-;;:::i;13529:48::-;;;;;;;;;;;;;:::i;20621:142::-;;;;;;;;;;-1:-1:-1;20621:142:0;;;;;:::i;:::-;;:::i;11725:87::-;;;;;;;;;;;;;:::i;13732:69::-;;;;;;;;;;;;;:::i;2596:104::-;;;;;;;;;;;;;:::i;18894:110::-;;;;;;;;;;-1:-1:-1;18894:110:0;;;;;:::i;:::-;;:::i;20771:112::-;;;;;;;;;;-1:-1:-1;20771:112:0;;;;;:::i;:::-;;:::i;6744:377::-;;;;;;;;;;-1:-1:-1;6744:377:0;;;;;:::i;:::-;;:::i;13281:19::-;;;;;;;;;;;;;:::i;4008:175::-;;;;;;;;;;-1:-1:-1;4008:175:0;;;;;:::i;:::-;;:::i;13584:53::-;;;;;;;;;;;;;:::i;19730:114::-;;;;;;;;;;-1:-1:-1;19730:114:0;;;;;:::i;:::-;;:::i;20496:117::-;;;;;;;;;;-1:-1:-1;20496:117:0;;;;;:::i;:::-;;:::i;14084:49::-;;;;;;;;;;-1:-1:-1;14084:49:0;;;;;:::i;:::-;;:::i;4246:151::-;;;;;;;;;;-1:-1:-1;4246:151:0;;;;;:::i;:::-;;:::i;18793:93::-;;;;;;;;;;-1:-1:-1;18793:93:0;;;;;:::i;:::-;;:::i;20229:134::-;;;;;;;;;;-1:-1:-1;20229:134:0;;;;;:::i;:::-;;:::i;19294:202::-;;;;;;;;;;-1:-1:-1;19294:202:0;;;;;:::i;:::-;;:::i;12050:192::-;;;;;;;;;;-1:-1:-1;12050:192:0;;;;;:::i;:::-;;:::i;13966:37::-;;;;;;;;;;;;;:::i;13253:21::-;;;;;;;;;;;;;:::i;20115:106::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;20191:14:0;;;::::1;;::::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;20191:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20115:106::o;13477:45::-;;;;:::o;2377:100::-;2431:13;2464:5;2457:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2377:100;:::o;19504:214::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;19621:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;19609:9:::1;:47:::0;;;;;;;;;;;19651:4;19680:23:::1;19639:10:::0;19627;19680:23:::1;:::i;:::-;:30;;;;:::i;:::-;19667:10;:43:::0;-1:-1:-1;;;19504:214:0:o;4544:169::-;4627:4;4644:39;4653:12;:10;:12::i;:::-;4667:7;4676:6;4644:8;:39::i;:::-;-1:-1:-1;4701:4:0;4544:169;;;;:::o;3497:108::-;3585:12;;3497:108;:::o;19856:102::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;19929:9:::1;:21:::0;;-1:-1:-1;;;;;;19929:21:0::1;-1:-1:-1::0;;;;;19929:21:0;;;::::1;::::0;;;::::1;::::0;;19856:102::o;14042:29::-;;;;:::o;5195:422::-;5301:4;5318:36;5328:6;5336:9;5347:6;5318:9;:36::i;:::-;-1:-1:-1;;;;;5394:19:0;;5367:24;5394:19;;;:11;:19;;;;;5367:24;5414:12;:10;:12::i;:::-;-1:-1:-1;;;;;5394:33:0;-1:-1:-1;;;;;5394:33:0;;;;;;;;;;;;;5367:60;;5466:6;5446:16;:26;;5438:79;;;;-1:-1:-1;;;5438:79:0;;;;;;;:::i;:::-;5528:57;5537:6;5545:12;:10;:12::i;:::-;5559:25;5578:6;5559:16;:25;:::i;:::-;5528:8;:57::i;:::-;-1:-1:-1;5605:4:0;;5195:422;-1:-1:-1;;;;5195:422:0:o;20891:546::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;21030:21:::1;21062:24;21079:6:::0;21062:16:::1;:24::i;:::-;21097:18;21118:35;21142:11:::0;21118:21:::1;:35;:::i;:::-;21097:56:::0;-1:-1:-1;21167:23:0;;21164:136:::1;;21192:108;21263:35;21279:19:::0;21263:13;:35:::1;:::i;:::-;21227:32;21240:19:::0;21227:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;21200:15;::::0;-1:-1:-1;;;;;21200:15:0::1;::::0;21192:34:::1;:108::i;:::-;21314:17:::0;;21311:118:::1;;21333:96;21392:35;21408:19:::0;21392:13;:35:::1;:::i;:::-;21362:26;21375:13:::0;21362:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;21341:9;::::0;-1:-1:-1;;;;;21341:9:0::1;::::0;21333:28:::1;:96::i;:::-;11931:1;;20891:546:::0;;;:::o;13400:28::-;;;;:::o;14010:25::-;;;;:::o;3339:93::-;3422:2;3339:93;:::o;6026:215::-;6114:4;6131:80;6140:12;:10;:12::i;:::-;6154:7;6200:10;6163:11;:25;6175:12;:10;:12::i;:::-;-1:-1:-1;;;;;6163:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;6163:25:0;;;:34;;;;;;;;;;:47;;;;:::i;14140:38::-;;;;;;;;;;;;;;;:::o;19966:137::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;20056:6:::1;:16:::0;;-1:-1:-1;;;;;20056:16:0;;::::1;-1:-1:-1::0;;;;;;20056:16:0;;::::1;;::::0;;;20083:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;19966:137::o;13365:26::-;;;-1:-1:-1;;;13365:26:0;;;;;:::o;13435:29::-;;;;:::o;20375:109::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;20461:15:::1;:6:::0;20470::::1;20461:15;:::i;:::-;20447:11;:29:::0;-1:-1:-1;20375:109:0:o;13335:23::-;;;-1:-1:-1;;;13335:23:0;;;;;:::o;3668:127::-;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127::o;11948:94::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;12013:21:::1;12031:1;12013:9;:21::i;:::-;11948:94::o:0;13926:33::-;;;;;;;;:::o;13650:75::-;;;-1:-1:-1;;;;;13650:75:0;;:::o;19012:274::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;19098:14:::1;::::0;-1:-1:-1;;;19098:14:0;::::1;;;19097:15;19089:50;;;;-1:-1:-1::0;;;19089:50:0::1;;;;;;;:::i;:::-;19150:14;:21:::0;;-1:-1:-1;;;;;;;;19150:21:0;;::::1;-1:-1:-1::0;;;19150:21:0::1;19182:18;-1:-1:-1::0;;;19182:18:0::1;::::0;;19227:12:::1;19211:13;:28:::0;19250:10:::1;:28:::0;19012:274::o;13529:48::-;;;;:::o;20621:142::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;20716:12:::1;-1:-1:-1::0;;;;;20709:29:0::1;;20739:7;:5;:7::i;:::-;20748:6;20709:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20621:142:::0;;:::o;11725:87::-;11798:6;;-1:-1:-1;;;;;11798:6:0;11725:87;:::o;13732:69::-;;;-1:-1:-1;;;;;13732:69:0;;:::o;2596:104::-;2652:13;2685:7;2678:14;;;;;:::i;18894:110::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;18970:13:::1;:26:::0;18894:110::o;20771:112::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;20838:37:::1;20865:9;20846:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;20838:26:0::1;::::0;::::1;:37::i;:::-;20771:112:::0;:::o;6744:377::-;6837:4;6854:24;6881:11;:25;6893:12;:10;:12::i;:::-;-1:-1:-1;;;;;6881:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;6881:25:0;;;:34;;;;;;;;;;;-1:-1:-1;6934:35:0;;;;6926:85;;;;-1:-1:-1;;;6926:85:0;;;;;;;:::i;:::-;7022:67;7031:12;:10;:12::i;:::-;7045:7;7054:34;7073:15;7054:16;:34;:::i;7022:67::-;-1:-1:-1;7109:4:0;;6744:377;-1:-1:-1;;;6744:377:0:o;13281:19::-;;;-1:-1:-1;;;;;13281:19:0;;:::o;4008:175::-;4094:4;4111:42;4121:12;:10;:12::i;:::-;4135:9;4146:6;4111:9;:42::i;13584:53::-;;;;:::o;19730:114::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;19809:15:::1;:27:::0;;-1:-1:-1;;;;;;19809:27:0::1;-1:-1:-1::0;;;;;19809:27:0;;;::::1;::::0;;;::::1;::::0;;19730:114::o;20496:117::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;20590:15:::1;:6:::0;20599::::1;20590:15;:::i;:::-;20572;:33:::0;-1:-1:-1;20496:117:0:o;14084:49::-;;;;;;;;;;;;;;;:::o;4246:151::-;-1:-1:-1;;;;;4362:18:0;;;4335:7;4362:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4246:151::o;18793:93::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;18859:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;18859:19:0::1;-1:-1:-1::0;;;;18859:19:0;;::::1;::::0;;;::::1;::::0;;18793:93::o;20229:134::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20321:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;20321:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20229:134::o;19294:202::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;19403:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;19395:5:::1;:43:::0;;;;;;;;;;;19433:4;19458:23:::1;19421:10:::0;19409;19458:23:::1;:::i;:::-;:30;;;;:::i;:::-;19449:6;:39:::0;-1:-1:-1;;;19294:202:0:o;12050:192::-;11871:12;:10;:12::i;:::-;-1:-1:-1;;;;;11860:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;11860:23:0;;11852:68;;;;-1:-1:-1;;;11852:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12139:22:0;::::1;12131:73;;;;-1:-1:-1::0;;;12131:73:0::1;;;;;;;:::i;:::-;12215:19;12225:8;12215:9;:19::i;13966:37::-:0;;;;;;;;:::o;13253:21::-;;;-1:-1:-1;;;;;13253:21:0;;:::o;93:98::-;173:10;93:98;:::o;10100:346::-;-1:-1:-1;;;;;10202:19:0;;10194:68;;;;-1:-1:-1;;;10194:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10281:21:0;;10273:68;;;;-1:-1:-1;;;10273:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10354:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10406:32;;;;;10384:6;;10406:32;:::i;:::-;;;;;;;;10100:346;;;:::o;14915:1573::-;15031:1;15022:6;:10;15014:64;;;;-1:-1:-1;;;15014:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15098:13:0;;;;;;:5;:13;;;;;;;;15097:14;:35;;;;-1:-1:-1;;;;;;15116:16:0;;;;;;:5;:16;;;;;;;;15115:17;15097:35;15089:73;;;;-1:-1:-1;;;15089:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15205:24:0;;;;;;:16;:24;;;;;;;;15204:25;:57;;;;-1:-1:-1;;;;;;15234:27:0;;;;;;:16;:27;;;;;;;;15233:28;15204:57;:70;;;;-1:-1:-1;15266:8:0;;-1:-1:-1;;;15266:8:0;;;;15265:9;15204:70;15201:589;;;15298:14;;-1:-1:-1;;;15298:14:0;;;;15290:49;;;;-1:-1:-1;;;15290:49:0;;;;;;;:::i;:::-;15386:12;15373:10;;15357:13;;:26;;;;:::i;:::-;:41;15354:183;;;15434:4;;-1:-1:-1;;;;;15421:17:0;;;15434:4;;15421:17;15418:45;;-1:-1:-1;;;;;15440:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;15440:23:0;15459:4;15440:23;;;15418:45;15495:4;;-1:-1:-1;;;;;15485:14:0;;;15495:4;;15485:14;15482:39;;-1:-1:-1;;;;;15501:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;15501:20:0;15517:4;15501:20;;;15482:39;15569:11;;15559:6;:21;;15551:63;;;;-1:-1:-1;;;15551:63:0;;;;;;;:::i;:::-;15645:4;;-1:-1:-1;;;;;15632:17:0;;;15645:4;;15632:17;15629:150;;15710:15;;15700:6;15677:20;15687:9;15677;:20::i;:::-;:29;;;;:::i;:::-;:48;;15669:94;;;;-1:-1:-1;;;15669:94:0;;;;;;;:::i;:::-;15909:8;;15802:11;;-1:-1:-1;;;15909:8:0;;;;;:36;;-1:-1:-1;;;;;;15921:24:0;;;;;;:16;:24;;;;;;;;15909:36;:67;;;-1:-1:-1;;;;;;15949:27:0;;;;;;:16;:27;;;;;;;;15909:67;15905:257;;;-1:-1:-1;15984:1:0;15905:257;;;16066:4;;-1:-1:-1;;;;;16053:17:0;;;16066:4;;16053:17;16050:100;;;16100:3;16087:10;;16078:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16072:31;;16050:100;;;16147:3;16138:6;;16129;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16123:27;;16050:100;16283:11;;-1:-1:-1;;;16283:11:0;;;;:24;;;;-1:-1:-1;16299:8:0;;-1:-1:-1;;;16299:8:0;;;;16298:9;16283:24;:42;;;;-1:-1:-1;16321:4:0;;-1:-1:-1;;;;;16311:14:0;;;16321:4;;16311:14;;16283:42;:53;;;;;16335:1;16329:3;:7;16283:53;16279:72;;;16338:13;:11;:13::i;:::-;16364:48;16380:6;16388:9;16399:12;16408:3;16399:6;:12;:::i;:::-;16364:15;:48::i;:::-;16426:7;;16423:55;;16435:43;16451:6;16467:4;16474:3;16435:15;:43::i;:::-;14915:1573;;;;:::o;17880:400::-;17970:16;;;17984:1;17970:16;;;;;;;;17946:21;;17970:16;;;;;;;;;;-1:-1:-1;17970:16:0;17946:40;;18015:4;17997;18002:1;17997:7;;;;;;-1:-1:-1;;;17997:7:0;;;;;;;;;-1:-1:-1;;;;;17997:23:0;;;:7;;;;;;;;;;:23;;;;18041:6;;:13;;;-1:-1:-1;;;18041:13:0;;;;:6;;;;;:11;;:13;;;;;17997:7;;18041:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18031:4;18036:1;18031:7;;;;;;-1:-1:-1;;;18031:7:0;;;;;;;;;-1:-1:-1;;;;;18031:23:0;;;:7;;;;;;;;;:23;18099:6;;18067:53;;18084:4;;18099:6;18108:11;18067:8;:53::i;:::-;18159:6;;:111;;-1:-1:-1;;;18159:111:0;;-1:-1:-1;;;;;18159:6:0;;;;:57;;:111;;18217:11;;18159:6;;18233:4;;18247;;18254:15;;18159:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17880:400;;:::o;11170:317::-;11285:6;11260:21;:31;;11252:73;;;;-1:-1:-1;;;11252:73:0;;;;;;;:::i;:::-;11339:12;11357:9;-1:-1:-1;;;;;11357:14:0;11379:6;11357:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11338:52;;;11409:7;11401:78;;;;-1:-1:-1;;;11401:78:0;;;;;;;:::i;12250:173::-;12325:6;;;-1:-1:-1;;;;;12342:17:0;;;-1:-1:-1;;;;;;12342:17:0;;;;;;;12375:40;;12325:6;;;12342:17;12325:6;;12375:40;;12306:16;;12375:40;12250:173;;:::o;16496:1374::-;14225:8;;-1:-1:-1;;;14225:8:0;;;;14220:104;;14250:8;:15;;-1:-1:-1;;;;14250:15:0;-1:-1:-1;;;14250:15:0;;;;16571:24:::1;16589:4;16571:9;:24::i;:::-;16545:50;;16629:13;;16610:15;:32;16606:1257;;16716:19;16738:10;;16751:1;16738:14;;;;:::i;:::-;16716:36;;16767:32;16842:11;16820:9;:19;;;16802:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;16767:86:::0;-1:-1:-1;16868:14:0::1;16885:42;16767:86:::0;16885:15;:42:::1;:::i;:::-;16868:59:::0;-1:-1:-1;16973:21:0::1;17015:24;16868:59:::0;17015:16:::1;:24::i;:::-;17060:20;17083:38;17107:14:::0;17083:21:::1;:38;:::i;:::-;17187:19:::0;;17060:61;;-1:-1:-1;17136:19:0::1;::::0;17173:33:::1;::::0;:11;:33:::1;:::i;:::-;17157:50;::::0;:12;:50:::1;:::i;:::-;17268:19:::0;;17136:71;;-1:-1:-1;17222:29:0::1;::::0;17254:33:::1;::::0;17136:71;17254:33:::1;:::i;:::-;17222:65:::0;-1:-1:-1;17311:25:0;;17308:170:::1;;17401:61;17414:24;17440:21;17401:12;:61::i;:::-;17539:9;:19:::0;17498:20:::1;::::0;17521:15:::1;:11:::0;17535:1:::1;17521:15;:::i;:::-;:37;;;;:::i;:::-;17498:60:::0;-1:-1:-1;17576:16:0;;17573:103:::1;;17620:15;::::0;17612:48:::1;::::0;-1:-1:-1;;;;;17620:15:0::1;17647:12:::0;17612:34:::1;:48::i;:::-;17739:13:::0;;17704:14:::1;::::0;17721:15:::1;:11:::0;17739:13:::1;17721:15;:::i;:::-;:31;;;;:::i;:::-;17704:48:::0;-1:-1:-1;17770:10:0;;17767:85:::1;;17808:9;::::0;17800:36:::1;::::0;-1:-1:-1;;;;;17808:9:0::1;17829:6:::0;17800:28:::1;:36::i;:::-;16606:1257;;;;;;;;;;-1:-1:-1::0;14296:8:0;:16;;-1:-1:-1;;;;14296:16:0;;;16496:1374::o;7611:604::-;-1:-1:-1;;;;;7717:20:0;;7709:70;;;;-1:-1:-1;;;7709:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7798:23:0;;7790:71;;;;-1:-1:-1;;;7790:71:0;;;;;;;:::i;:::-;7874:47;7895:6;7903:9;7914:6;7874:20;:47::i;:::-;-1:-1:-1;;;;;7958:17:0;;7934:21;7958:17;;;;;;;;;;;7994:23;;;;7986:74;;;;-1:-1:-1;;;7986:74:0;;;;;;;:::i;:::-;8091:22;8107:6;8091:13;:22;:::i;:::-;-1:-1:-1;;;;;8071:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8124:20;;;;;;;;:30;;8148:6;;8071:9;8124:30;;8148:6;;8124:30;:::i;:::-;;;;;;;;8189:9;-1:-1:-1;;;;;8172:35:0;8181:6;-1:-1:-1;;;;;8172:35:0;;8200:6;8172:35;;;;;;:::i;:::-;;;;;;;;7611:604;;;;:::o;18288:497::-;18468:6;;18436:53;;18453:4;;-1:-1:-1;;;;;18468:6:0;18477:11;18436:8;:53::i;:::-;18532:6;;18727:9;;18532:245;;-1:-1:-1;;;18532:245:0;;-1:-1:-1;;;;;18532:6:0;;;;:22;;18562:9;;18532:245;;18595:4;;18615:11;;18532:6;;;;18727:9;;18751:15;;18532:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;:::-;262:5;84:189;-1:-1:-1;;;84:189:1:o;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:396::-;;;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1575:6;1567;1560:22;1522:2;1619:9;1606:23;1638:33;1665:5;1638:33;:::i;:::-;1690:5;-1:-1:-1;1747:2:1;1732:18;;1719:32;1760;1719;1760;:::i;1829:327::-;;;1958:2;1946:9;1937:7;1933:23;1929:32;1926:2;;;1979:6;1971;1964:22;1926:2;2023:9;2010:23;2042:33;2069:5;2042:33;:::i;:::-;2094:5;2146:2;2131:18;;;;2118:32;;-1:-1:-1;;;1916:240:1:o;2161:253::-;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;2291:6;2283;2276:22;2238:2;2335:9;2322:23;2354:30;2378:5;2354:30;:::i;2419:257::-;;2539:2;2527:9;2518:7;2514:23;2510:32;2507:2;;;2560:6;2552;2545:22;2507:2;2597:9;2591:16;2616:30;2640:5;2616:30;:::i;2681:417::-;;;2825:2;2813:9;2804:7;2800:23;2796:32;2793:2;;;2846:6;2838;2831:22;3103:190;;3215:2;3203:9;3194:7;3190:23;3186:32;3183:2;;;3236:6;3228;3221:22;3183:2;-1:-1:-1;3264:23:1;;3173:120;-1:-1:-1;3173:120:1:o;3298:326::-;;;;3444:2;3432:9;3423:7;3419:23;3415:32;3412:2;;;3465:6;3457;3450:22;3412:2;-1:-1:-1;;3493:23:1;;;3563:2;3548:18;;3535:32;;-1:-1:-1;3614:2:1;3599:18;;;3586:32;;3402:222;-1:-1:-1;3402:222:1:o;3629:316::-;;;;3786:2;3774:9;3765:7;3761:23;3757:32;3754:2;;;3807:6;3799;3792:22;3754:2;3841:9;3835:16;3825:26;;3891:2;3880:9;3876:18;3870:25;3860:35;;3935:2;3924:9;3920:18;3914:25;3904:35;;3744:201;;;;;:::o;3950:205::-;4150:3;4141:14::o;4160:203::-;-1:-1:-1;;;;;4324:32:1;;;;4306:51;;4294:2;4279:18;;4261:102::o;4368:274::-;-1:-1:-1;;;;;4560:32:1;;;;4542:51;;4624:2;4609:18;;4602:34;4530:2;4515:18;;4497:145::o;4647:607::-;-1:-1:-1;;;;;5006:15:1;;;4988:34;;5053:2;5038:18;;5031:34;;;;5096:2;5081:18;;5074:34;;;;5139:2;5124:18;;5117:34;;;;5188:15;;;5182:3;5167:19;;5160:44;4968:3;5220:19;;5213:35;;;;4937:3;4922:19;;4904:350::o;5259:187::-;5424:14;;5417:22;5399:41;;5387:2;5372:18;;5354:92::o;5674:603::-;;5815:2;5844;5833:9;5826:21;5876:6;5870:13;5919:6;5914:2;5903:9;5899:18;5892:34;5944:4;5957:140;5971:6;5968:1;5965:13;5957:140;;;6066:14;;;6062:23;;6056:30;6032:17;;;6051:2;6028:26;6021:66;5986:10;;5957:140;;;6115:6;6112:1;6109:13;6106:2;;;6185:4;6180:2;6171:6;6160:9;6156:22;6152:31;6145:45;6106:2;-1:-1:-1;6261:2:1;6240:15;-1:-1:-1;;6236:29:1;6221:45;;;;6268:2;6217:54;;5795:482;-1:-1:-1;;;5795:482:1:o;6282:346::-;6484:2;6466:21;;;6523:2;6503:18;;;6496:30;-1:-1:-1;;;6557:2:1;6542:18;;6535:52;6619:2;6604:18;;6456:172::o;6633:399::-;6835:2;6817:21;;;6874:2;6854:18;;;6847:30;6913:34;6908:2;6893:18;;6886:62;-1:-1:-1;;;6979:2:1;6964:18;;6957:33;7022:3;7007:19;;6807:225::o;7037:353::-;7239:2;7221:21;;;7278:2;7258:18;;;7251:30;7317:31;7312:2;7297:18;;7290:59;7381:2;7366:18;;7211:179::o;7395:346::-;7597:2;7579:21;;;7636:2;7616:18;;;7609:30;-1:-1:-1;;;7670:2:1;7655:18;;7648:52;7732:2;7717:18;;7569:172::o;7746:402::-;7948:2;7930:21;;;7987:2;7967:18;;;7960:30;8026:34;8021:2;8006:18;;7999:62;-1:-1:-1;;;8092:2:1;8077:18;;8070:36;8138:3;8123:19;;7920:228::o;8153:398::-;8355:2;8337:21;;;8394:2;8374:18;;;8367:30;8433:34;8428:2;8413:18;;8406:62;-1:-1:-1;;;8499:2:1;8484:18;;8477:32;8541:3;8526:19;;8327:224::o;8556:402::-;8758:2;8740:21;;;8797:2;8777:18;;;8770:30;8836:34;8831:2;8816:18;;8809:62;-1:-1:-1;;;8902:2:1;8887:18;;8880:36;8948:3;8933:19;;8730:228::o;8963:397::-;9165:2;9147:21;;;9204:2;9184:18;;;9177:30;9243:34;9238:2;9223:18;;9216:62;-1:-1:-1;;;9309:2:1;9294:18;;9287:31;9350:3;9335:19;;9137:223::o;9365:422::-;9567:2;9549:21;;;9606:2;9586:18;;;9579:30;9645:34;9640:2;9625:18;;9618:62;9716:28;9711:2;9696:18;;9689:56;9777:3;9762:19;;9539:248::o;9792:353::-;9994:2;9976:21;;;10033:2;10013:18;;;10006:30;10072:31;10067:2;10052:18;;10045:59;10136:2;10121:18;;9966:179::o;10150:404::-;10352:2;10334:21;;;10391:2;10371:18;;;10364:30;10430:34;10425:2;10410:18;;10403:62;-1:-1:-1;;;10496:2:1;10481:18;;10474:38;10544:3;10529:19;;10324:230::o;10559:356::-;10761:2;10743:21;;;10780:18;;;10773:30;10839:34;10834:2;10819:18;;10812:62;10906:2;10891:18;;10733:182::o;10920:405::-;11122:2;11104:21;;;11161:2;11141:18;;;11134:30;11200:34;11195:2;11180:18;;11173:62;-1:-1:-1;;;11266:2:1;11251:18;;11244:39;11315:3;11300:19;;11094:231::o;11330:349::-;11532:2;11514:21;;;11571:2;11551:18;;;11544:30;11610:27;11605:2;11590:18;;11583:55;11670:2;11655:18;;11504:175::o;11684:401::-;11886:2;11868:21;;;11925:2;11905:18;;;11898:30;11964:34;11959:2;11944:18;;11937:62;-1:-1:-1;;;12030:2:1;12015:18;;12008:35;12075:3;12060:19;;11858:227::o;12090:400::-;12292:2;12274:21;;;12331:2;12311:18;;;12304:30;12370:34;12365:2;12350:18;;12343:62;-1:-1:-1;;;12436:2:1;12421:18;;12414:34;12480:3;12465:19;;12264:226::o;12495:401::-;12697:2;12679:21;;;12736:2;12716:18;;;12709:30;12775:34;12770:2;12755:18;;12748:62;-1:-1:-1;;;12841:2:1;12826:18;;12819:35;12886:3;12871:19;;12669:227::o;12901:177::-;13047:25;;;13035:2;13020:18;;13002:76::o;13083:983::-;;13393:3;13382:9;13378:19;13424:6;13413:9;13406:25;13450:2;13488:6;13483:2;13472:9;13468:18;13461:34;13531:3;13526:2;13515:9;13511:18;13504:31;13555:6;13590;13584:13;13621:6;13613;13606:22;13659:3;13648:9;13644:19;13637:26;;13698:2;13690:6;13686:15;13672:29;;13719:4;13732:195;13746:6;13743:1;13740:13;13732:195;;;13811:13;;-1:-1:-1;;;;;13807:39:1;13795:52;;13902:15;;;;13867:12;;;;13843:1;13761:9;13732:195;;;-1:-1:-1;;;;;;;13983:32:1;;;;13978:2;13963:18;;13956:60;-1:-1:-1;;;14047:3:1;14032:19;14025:35;13944:3;13354:712;-1:-1:-1;;;13354:712:1:o;14071:319::-;14273:25;;;14329:2;14314:18;;14307:34;;;;14372:2;14357:18;;14350:34;14261:2;14246:18;;14228:162::o;14395:184::-;14567:4;14555:17;;;;14537:36;;14525:2;14510:18;;14492:87::o;14584:128::-;;14655:1;14651:6;14648:1;14645:13;14642:2;;;14661:18;;:::i;:::-;-1:-1:-1;14697:9:1;;14632:80::o;14717:217::-;;14783:1;14773:2;;-1:-1:-1;;;14808:31:1;;14862:4;14859:1;14852:15;14890:4;14815:1;14880:15;14773:2;-1:-1:-1;14919:9:1;;14763:171::o;14939:168::-;;15045:1;15041;15037:6;15033:14;15030:1;15027:21;15022:1;15015:9;15008:17;15004:45;15001:2;;;15052:18;;:::i;:::-;-1:-1:-1;15092:9:1;;14991:116::o;15112:125::-;;15180:1;15177;15174:8;15171:2;;;15185:18;;:::i;:::-;-1:-1:-1;15222:9:1;;15161:76::o;15242:380::-;15327:1;15317:12;;15374:1;15364:12;;;15385:2;;15439:4;15431:6;15427:17;15417:27;;15385:2;15492;15484:6;15481:14;15461:18;15458:38;15455:2;;;15538:10;15533:3;15529:20;15526:1;15519:31;15573:4;15570:1;15563:15;15601:4;15598:1;15591:15;15455:2;;15297:325;;;:::o;15627:127::-;15688:10;15683:3;15679:20;15676:1;15669:31;15719:4;15716:1;15709:15;15743:4;15740:1;15733:15;15759:133;-1:-1:-1;;;;;15836:31:1;;15826:42;;15816:2;;15882:1;15879;15872:12;15897:120;15985:5;15978:13;15971:21;15964:5;15961:32;15951:2;;16007:1;16004;15997:12

Swarm Source

ipfs://6a83316280616fb5d68e1caa70c2b71eeed75d434cfb7707a124392d32dbca7d
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.