ETH Price: $3,287.70 (-3.60%)
Gas: 12 Gwei

Token

MUHAMMAD (MHMD)
 

Overview

Max Total Supply

100,000,000 MHMD

Holders

93

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
205,700.064219092423862575 MHMD

Value
$0.00
0x9763db9ba6eedf025e96baf51e7e0735eb0ce0ce
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:
MUHAMMAD

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-15
*/

// Telegram : https://t.me/muhammaderc
// Twitter : https://twitter.com/muhammaderc
// Website :  www.muhammadeth.com

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

pragma solidity ^0.8.19;

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract MUHAMMAD is IERC20, Ownable {

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;
    mapping(address => bool) public automatedMarketMakerPairs;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "MUHAMMAD";
    string _symbol = "MHMD";

    uint256 _totalSupply = 100_000_000 ether;
    uint256 private _maxTxAmount = _totalSupply * 30 / 1000;
    uint256 public _maxWalletAmount = _totalSupply * 30 / 1000;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public tradingActive = false;
    bool public transferDelayEnabled = false;
    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isLimitExempt;

    Fee public buyFee = Fee({reflection: 0, marketing: 1, lp: 0, buyback: 0, burn: 0, total: 1});
    Fee public sellFee = Fee({reflection: 0, marketing: 1, lp: 0, buyback: 0, burn: 0, total: 1});

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = false;
    uint256 public swapThreshold = (_totalSupply * 3) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;
        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][owner()] = type(uint256).max;

        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[owner()] = true;
        isLimitExempt[UNISWAP_V2_PAIR] = true;
        
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[owner()] = true;

        marketingFeeReceiver = 0xBC41093F4438c33832F9c158bF6f2f4ED241a774;
        lpFeeReceiver = 0xBC41093F4438c33832F9c158bF6f2f4ED241a774;
        buybackFeeReceiver = 0xBC41093F4438c33832F9c158bF6f2f4ED241a774;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

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

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

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

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        claimingFees = true;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != UNISWAP_V2_PAIR,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        _maxWalletAmount = newNum * (10**18);
        _maxTxAmount = newNum * (10**18);
    }

    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: marketingFeeBuy,
            lp: lpFeeBuy,
            buyback: buybackFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: marketingFeeSell,
            lp: lpFeeSell,
            buyback: buybackFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

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

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

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    // Set Transfer delay
    function disableTransferDelay(bool e_) external onlyOwner returns (bool) {
        transferDelayEnabled = e_;
        return true;
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled) {
            if (!tradingActive) 
            {
                require(
                    isFeeExempt[sender] || isFeeExempt[recipient],
                    "Trading is not active."
                );
            }

            //when buy
            if (automatedMarketMakerPairs[sender] && !isLimitExempt[recipient]) 
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            //when sell
            else if (automatedMarketMakerPairs[recipient] && !isLimitExempt[sender])
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            else if (!isLimitExempt[recipient]) 
            {
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
            if (transferDelayEnabled) {
                if (
                    recipient != owner() &&
                    recipient != address(UNISWAP_V2_ROUTER) &&
                    recipient != UNISWAP_V2_PAIR
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] + 1 <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per two blocks allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        if(amountToBurn > 0)
        {
            // burn
            _transferFrom(address(this), DEAD, amountToBurn);
        }

        // swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_V2_ROUTER.WETH();

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        //uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
        (tmpSuccess,) = address(marketingFeeReceiver).call{value: address(this).balance}("");
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

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":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisLimitExempt","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600860a090815267135552105353505160c21b60c05260029062000029908262000695565b506040805180820190915260048152631352135160e21b602082015260039062000054908262000695565b506a52b7d2dcc80cd2e40000006004556103e8600454601e62000078919062000761565b6200008491906200078d565b6005556103e8600454601e6200009b919062000761565b620000a791906200078d565b6006556004546008819055600a805462ffffff1916620100001790556040805160c080820183526000808352600160208085018290528486018390526060808601849052608080870185905260a0968701849052600d8054650100000001006001600160a81b0319918216811790925589519788018a528688529387018590529786018590529085018490528401929092529190920152600e805490911690911790556011805460ff60a01b191690556103e8906200016890600362000761565b6200017491906200078d565b6012553480156200018457600080fd5b5062000190336200054c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020b9190620007b0565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620007b0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003079190620007b0565b6001600160a01b0381166080529050620003238160016200059c565b306000818152600960208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d85528083529084206000199081905594845291905290620003736000546001600160a01b031690565b6001600160a01b031681526020808201929092526040908101600090812093909355308352600c9182905282208054600160ff19918216811790925561dead84527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c80549091168217905591620003f26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556080519091168152600c8352818120805485166001908117909155308252600b93849052918120805485168317905561dead81527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054909416821790935591620004936000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805460ff191694151594909417909355600f805473bc41093f4438c33832f9c158bf6f2f4ed241a7746001600160a01b0319918216811790925560108054821683179055601180549091169091179055600454328085526007845282852082905591519081529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620007e2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200061b57607f821691505b6020821081036200063c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200069057600081815260208120601f850160051c810160208610156200066b5750805b601f850160051c820191505b818110156200068c5782815560010162000677565b5050505b505050565b81516001600160401b03811115620006b157620006b1620005f0565b620006c981620006c2845462000606565b8462000642565b602080601f831160018114620007015760008415620006e85750858301515b600019600386901b1c1916600185901b1785556200068c565b600085815260208120601f198616915b82811015620007325788860151825594840194600190910190840162000711565b5085821015620007515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200078757634e487b7160e01b600052601160045260246000fd5b92915050565b600082620007ab57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007c357600080fd5b81516001600160a01b0381168114620007db57600080fd5b9392505050565b6080516125686200081a6000396000818161088601528181610ce1015281816114bf0152818161168e015261199701526125686000f3fe6080604052600436106102605760003560e01c8063658d4b7f11610144578063b62496f5116100b6578063d7c010321161007a578063d7c01032146107b9578063d85a2828146107d9578063dd62ed3e146107ee578063df20fd4914610834578063f2fde38b14610854578063f40acc3d1461087457600080fd5b8063b62496f514610710578063bbc0c74214610740578063c18bc1951461075a578063c38a31de1461077a578063c876d0b91461079a57600080fd5b80638da5cb5b116101085780638da5cb5b1461064057806395d89b41146106725780639a7a23d614610687578063a82ed9ec146106a7578063a9059cbb146106cf578063b0f7ec38146106ef57600080fd5b8063658d4b7f146105c05780636c0a24eb146105e057806370a08231146105f6578063715018a6146106165780638a8c523c1461062b57600080fd5b80632b14ca56116101dd578063364333f4116101a1578063364333f4146104d9578063404e5129146104ee57806341aea9de1461050e57806345ce53651461052e578063470624021461054e578063571ac8b0146105a057600080fd5b80632b14ca56146103c65780632d8381191461045d578063313ce5671461047d57806334b86560146104995780633582ad23146104b957600080fd5b80631780028711610224578063178002871461034457806318160ddd1461035a57806323b872dd1461036f57806324c390231461038f5780632b112e49146103b157600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102b75780630cfc15f9146102e757806316c021291461031457600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028260125481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b506102aa6108a8565b60405161028c9190612086565b3480156102c357600080fd5b506102d76102d23660046120e9565b61093a565b604051901515815260200161028c565b3480156102f357600080fd5b50610282610302366004612115565b60076020526000908152604090205481565b34801561032057600080fd5b506102d761032f366004612115565b60146020526000908152604090205460ff1681565b34801561035057600080fd5b5061028260085481565b34801561036657600080fd5b50600454610282565b34801561037b57600080fd5b506102d761038a366004612132565b6109a7565b34801561039b57600080fd5b506103af6103aa366004612183565b610ab4565b005b3480156103bd57600080fd5b50610282610ae7565b3480156103d257600080fd5b50600e546104189060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c00161028c565b34801561046957600080fd5b506102826104783660046121b8565b610b1a565b34801561048957600080fd5b506040516012815260200161028c565b3480156104a557600080fd5b506102d76104b43660046121d1565b610b37565b3480156104c557600080fd5b50600a546102d79062010000900460ff1681565b3480156104e557600080fd5b506103af610b5d565b3480156104fa57600080fd5b506103af610509366004612183565b610bbd565b34801561051a57600080fd5b506103af6105293660046121d1565b610bf0565b34801561053a57600080fd5b506102826105493660046121b8565b610c14565b34801561055a57600080fd5b50600d546104189060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b3480156105ac57600080fd5b506102d76105bb366004612115565b610c27565b3480156105cc57600080fd5b506103af6105db366004612183565b610c35565b3480156105ec57600080fd5b5061028260065481565b34801561060257600080fd5b50610282610611366004612115565b610c68565b34801561062257600080fd5b506103af610c8a565b34801561063757600080fd5b506103af610c9e565b34801561064c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561067e57600080fd5b506102aa610cc8565b34801561069357600080fd5b506103af6106a2366004612183565b610cd7565b3480156106b357600080fd5b5061065a737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106db57600080fd5b506102d76106ea3660046120e9565b610d94565b3480156106fb57600080fd5b506011546102d790600160a01b900460ff1681565b34801561071c57600080fd5b506102d761072b366004612115565b60016020526000908152604090205460ff1681565b34801561074c57600080fd5b50600a546102d79060ff1681565b34801561076657600080fd5b506103af6107753660046121b8565b610da1565b34801561078657600080fd5b506103af6107953660046121fd565b610dd6565b3480156107a657600080fd5b50600a546102d790610100900460ff1681565b3480156107c557600080fd5b506103af6107d43660046122b7565b611088565b3480156107e557600080fd5b506103af6110cf565b3480156107fa57600080fd5b50610282610809366004612302565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084057600080fd5b506103af61084f36600461233b565b6110ea565b34801561086057600080fd5b506103af61086f366004612115565b611114565b34801561088057600080fd5b5061065a7f000000000000000000000000000000000000000000000000000000000000000081565b6060600280546108b790612357565b80601f01602080910402602001604051908101604052809291908181526020018280546108e390612357565b80156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109959086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610a9f576001600160a01b0384166000908152600960209081526040808320338452909152902054821115610a4b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600960209081526040808320338452909152902054610a7a9083906123a7565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610aaa84848461118a565b90505b9392505050565b610abc611763565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610af36000610c68565b610afe61dead610c68565b600454610b0b91906123a7565b610b1591906123a7565b905090565b600060085460045483610b2d91906123ba565b6109a191906123d1565b6000610b41611763565b50600a805461ff0019166101008315150217905560015b919050565b610b65611763565b604051600090339047908381818185875af1925050503d8060008114610ba7576040519150601f19603f3d011682016040523d82523d6000602084013e610bac565b606091505b5050905080610bba57600080fd5b50565b610bc5611763565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b610bf8611763565b600a8054911515620100000262ff000019909216919091179055565b600060045460085483610b2d91906123ba565b60006109a18260001961093a565b610c3d611763565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600760205260408120546109a190610b1a565b610c92611763565b610c9c60006117bd565b565b610ca6611763565b600a805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6060600380546108b790612357565b610cdf611763565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610d865760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a42565b610d90828261180d565b5050565b6000610aad33848461118a565b610da9611763565b610dbb81670de0b6b3a76400006123ba565b600655610dd081670de0b6b3a76400006123ba565b60055550565b610dde611763565b600086888a610ded8d8f6123f3565b610df791906123f3565b610e0191906123f3565b610e0b91906123f3565b60ff1690506000828486610e1f898b6123f3565b610e2991906123f3565b610e3391906123f3565b610e3d91906123f3565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836001600160801b0316815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826001600160801b0316815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b611090611763565b600f80546001600160a01b039485166001600160a01b031991821617909155601080549385169382169390931790925560118054919093169116179055565b6110d7611763565b610bba30336110e530610c68565b61118a565b6110f2611763565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b61111c611763565b6001600160a01b0381166111815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a42565b610bba816117bd565b6001600160a01b03821660009081526014602052604081205460ff161580156111cc57506001600160a01b03841660009081526014602052604090205460ff16155b6112065760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a42565b60135460ff16156112235761121c848484611861565b9050610aad565b600a5462010000900460ff16156115b357600a5460ff166112c2576001600160a01b0384166000908152600b602052604090205460ff168061127d57506001600160a01b0383166000908152600b602052604090205460ff165b6112c25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a42565b6001600160a01b03841660009081526001602052604090205460ff16801561130357506001600160a01b0383166000908152600c602052604090205460ff16155b156113895760055482111561132a5760405162461bcd60e51b8152600401610a429061240c565b60065461133684610c68565b6113409084612454565b11156113845760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a42565b61146b565b6001600160a01b03831660009081526001602052604090205460ff1680156113ca57506001600160a01b0384166000908152600c602052604090205460ff16155b156113f1576005548211156113845760405162461bcd60e51b8152600401610a429061240c565b6001600160a01b0383166000908152600c602052604090205460ff1661146b5760065461141d84610c68565b6114279084612454565b111561146b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a42565b600a54610100900460ff16156115b3576000546001600160a01b038481169116148015906114b657506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156114f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156115b357326000908152601560205260409020544390611516906001612454565b106115a05760405162461bcd60e51b815260206004820152604e60248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260648201526d3637b1b5b99030b63637bbb2b21760911b608482015260a401610a42565b3260009081526015602052604090204390555b6115bb61198a565b156115c8576115c86119f7565b60006115d383610c14565b6001600160a01b0386166000908152600760205260409020549091508111156116355760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a42565b6001600160a01b0385166000908152600760205260409020546116599082906123a7565b6001600160a01b03861660009081526007602052604081209190915561167f8686611dcd565b61168957816116d6565b6116d67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316146116cc5760006116cf565b60015b8784611e13565b6001600160a01b0386166000908152600760205260409020549091506116fd908290612454565b6001600160a01b0380871660008181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61174684610b1a565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008061186d83610c14565b6001600160a01b0386166000908152600760205260409020549091508111156118cf5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a42565b6001600160a01b0385166000908152600760205260409020546118f39082906123a7565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611923908290612454565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119779087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906119c8575060135460ff16155b80156119dd5750601154600160a01b900460ff165b8015610b1557506012546119f030610c68565b1015905090565b60138054600160ff199091161790556040805160c081018252600e5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a08201819052601254919260009190611a8090846123ba565b611a8a91906123d1565b90506000611a9882846123a7565b9050611ab8737a250d5630b4cf539739df2c5dacb4c659f2488d8261093a565b508115611ace57611acc3061dead8461118a565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0357611b03612467565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b99919061247d565b81600181518110611bac57611bac612467565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c0490859060009086903090429060040161249a565b600060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151611c5c919061250b565b611c66919061250b565b6001600160801b03169050600081886040015160ff1684611c8791906123ba565b611c9191906123d1565b9050600082896060015160ff1685611ca991906123ba565b611cb391906123d1565b6010546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611d05576040519150601f19603f3d011682016040523d82523d6000602084013e611d0a565b606091505b50506011546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611d5a576040519150601f19603f3d011682016040523d82523d6000602084013e611d5f565b606091505b5050600f546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611daf576040519150601f19603f3d011682016040523d82523d6000602084013e611db4565b606091505b50506013805460ff191690555050505050505050505050565b6001600160a01b0382166000908152600b602052604081205460ff16158015610aad5750506001600160a01b03166000908152600b602052604090205460ff1615919050565b6040805160c08082018352600d5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600e54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611f095760648260a001516001600160801b031686611efa91906123ba565b611f0491906123d1565b611f2e565b60648360a001516001600160801b031686611f2491906123ba565b611f2e91906123d1565b90506000600188151514611f6c578260a001516001600160801b0316836000015160ff1683611f5d91906123ba565b611f6791906123d1565b611f97565b8360a001516001600160801b0316846000015160ff1683611f8d91906123ba565b611f9791906123d1565b905080600854611fa791906123a7565b6008556000611fb682846123a7565b905080156120325730600090815260076020526040902054611fd9908290612454565b306000818152600760205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61202084610b1a565b60405190815260200160405180910390a35b6008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a161207983886123a7565b9998505050505050505050565b600060208083528351808285015260005b818110156120b357858101830151858201604001528201612097565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bba57600080fd5b600080604083850312156120fc57600080fd5b8235612107816120d4565b946020939093013593505050565b60006020828403121561212757600080fd5b8135610aad816120d4565b60008060006060848603121561214757600080fd5b8335612152816120d4565b92506020840135612162816120d4565b929592945050506040919091013590565b80358015158114610b5857600080fd5b6000806040838503121561219657600080fd5b82356121a1816120d4565b91506121af60208401612173565b90509250929050565b6000602082840312156121ca57600080fd5b5035919050565b6000602082840312156121e357600080fd5b610aad82612173565b803560ff81168114610b5857600080fd5b6000806000806000806000806000806101408b8d03121561221d57600080fd5b6122268b6121ec565b995061223460208c016121ec565b985061224260408c016121ec565b975061225060608c016121ec565b965061225e60808c016121ec565b955061226c60a08c016121ec565b945061227a60c08c016121ec565b935061228860e08c016121ec565b92506122976101008c016121ec565b91506122a66101208c016121ec565b90509295989b9194979a5092959850565b6000806000606084860312156122cc57600080fd5b83356122d7816120d4565b925060208401356122e7816120d4565b915060408401356122f7816120d4565b809150509250925092565b6000806040838503121561231557600080fd5b8235612320816120d4565b91506020830135612330816120d4565b809150509250929050565b6000806040838503121561234e57600080fd5b61210783612173565b600181811c9082168061236b57607f821691505b60208210810361238b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109a1576109a1612391565b80820281158282048414176109a1576109a1612391565b6000826123ee57634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156109a1576109a1612391565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b808201808211156109a1576109a1612391565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248f57600080fd5b8151610aad816120d4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ea5784516001600160a01b0316835293830193918301916001016124c5565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b0382811682821603908082111561252b5761252b612391565b509291505056fea264697066735822122098e220569bcadfb2f4d1086d0cb56d3919daad4aa828015dc41640ab2f3195ec64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102605760003560e01c8063658d4b7f11610144578063b62496f5116100b6578063d7c010321161007a578063d7c01032146107b9578063d85a2828146107d9578063dd62ed3e146107ee578063df20fd4914610834578063f2fde38b14610854578063f40acc3d1461087457600080fd5b8063b62496f514610710578063bbc0c74214610740578063c18bc1951461075a578063c38a31de1461077a578063c876d0b91461079a57600080fd5b80638da5cb5b116101085780638da5cb5b1461064057806395d89b41146106725780639a7a23d614610687578063a82ed9ec146106a7578063a9059cbb146106cf578063b0f7ec38146106ef57600080fd5b8063658d4b7f146105c05780636c0a24eb146105e057806370a08231146105f6578063715018a6146106165780638a8c523c1461062b57600080fd5b80632b14ca56116101dd578063364333f4116101a1578063364333f4146104d9578063404e5129146104ee57806341aea9de1461050e57806345ce53651461052e578063470624021461054e578063571ac8b0146105a057600080fd5b80632b14ca56146103c65780632d8381191461045d578063313ce5671461047d57806334b86560146104995780633582ad23146104b957600080fd5b80631780028711610224578063178002871461034457806318160ddd1461035a57806323b872dd1461036f57806324c390231461038f5780632b112e49146103b157600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102b75780630cfc15f9146102e757806316c021291461031457600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028260125481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b506102aa6108a8565b60405161028c9190612086565b3480156102c357600080fd5b506102d76102d23660046120e9565b61093a565b604051901515815260200161028c565b3480156102f357600080fd5b50610282610302366004612115565b60076020526000908152604090205481565b34801561032057600080fd5b506102d761032f366004612115565b60146020526000908152604090205460ff1681565b34801561035057600080fd5b5061028260085481565b34801561036657600080fd5b50600454610282565b34801561037b57600080fd5b506102d761038a366004612132565b6109a7565b34801561039b57600080fd5b506103af6103aa366004612183565b610ab4565b005b3480156103bd57600080fd5b50610282610ae7565b3480156103d257600080fd5b50600e546104189060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c00161028c565b34801561046957600080fd5b506102826104783660046121b8565b610b1a565b34801561048957600080fd5b506040516012815260200161028c565b3480156104a557600080fd5b506102d76104b43660046121d1565b610b37565b3480156104c557600080fd5b50600a546102d79062010000900460ff1681565b3480156104e557600080fd5b506103af610b5d565b3480156104fa57600080fd5b506103af610509366004612183565b610bbd565b34801561051a57600080fd5b506103af6105293660046121d1565b610bf0565b34801561053a57600080fd5b506102826105493660046121b8565b610c14565b34801561055a57600080fd5b50600d546104189060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b3480156105ac57600080fd5b506102d76105bb366004612115565b610c27565b3480156105cc57600080fd5b506103af6105db366004612183565b610c35565b3480156105ec57600080fd5b5061028260065481565b34801561060257600080fd5b50610282610611366004612115565b610c68565b34801561062257600080fd5b506103af610c8a565b34801561063757600080fd5b506103af610c9e565b34801561064c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b34801561067e57600080fd5b506102aa610cc8565b34801561069357600080fd5b506103af6106a2366004612183565b610cd7565b3480156106b357600080fd5b5061065a737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106db57600080fd5b506102d76106ea3660046120e9565b610d94565b3480156106fb57600080fd5b506011546102d790600160a01b900460ff1681565b34801561071c57600080fd5b506102d761072b366004612115565b60016020526000908152604090205460ff1681565b34801561074c57600080fd5b50600a546102d79060ff1681565b34801561076657600080fd5b506103af6107753660046121b8565b610da1565b34801561078657600080fd5b506103af6107953660046121fd565b610dd6565b3480156107a657600080fd5b50600a546102d790610100900460ff1681565b3480156107c557600080fd5b506103af6107d43660046122b7565b611088565b3480156107e557600080fd5b506103af6110cf565b3480156107fa57600080fd5b50610282610809366004612302565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084057600080fd5b506103af61084f36600461233b565b6110ea565b34801561086057600080fd5b506103af61086f366004612115565b611114565b34801561088057600080fd5b5061065a7f000000000000000000000000c1a25b7322f4fa26ca6f4e10ae361a15845556f881565b6060600280546108b790612357565b80601f01602080910402602001604051908101604052809291908181526020018280546108e390612357565b80156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109959086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610a9f576001600160a01b0384166000908152600960209081526040808320338452909152902054821115610a4b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600960209081526040808320338452909152902054610a7a9083906123a7565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610aaa84848461118a565b90505b9392505050565b610abc611763565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610af36000610c68565b610afe61dead610c68565b600454610b0b91906123a7565b610b1591906123a7565b905090565b600060085460045483610b2d91906123ba565b6109a191906123d1565b6000610b41611763565b50600a805461ff0019166101008315150217905560015b919050565b610b65611763565b604051600090339047908381818185875af1925050503d8060008114610ba7576040519150601f19603f3d011682016040523d82523d6000602084013e610bac565b606091505b5050905080610bba57600080fd5b50565b610bc5611763565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b610bf8611763565b600a8054911515620100000262ff000019909216919091179055565b600060045460085483610b2d91906123ba565b60006109a18260001961093a565b610c3d611763565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600760205260408120546109a190610b1a565b610c92611763565b610c9c60006117bd565b565b610ca6611763565b600a805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6060600380546108b790612357565b610cdf611763565b7f000000000000000000000000c1a25b7322f4fa26ca6f4e10ae361a15845556f86001600160a01b0316826001600160a01b031603610d865760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a42565b610d90828261180d565b5050565b6000610aad33848461118a565b610da9611763565b610dbb81670de0b6b3a76400006123ba565b600655610dd081670de0b6b3a76400006123ba565b60055550565b610dde611763565b600086888a610ded8d8f6123f3565b610df791906123f3565b610e0191906123f3565b610e0b91906123f3565b60ff1690506000828486610e1f898b6123f3565b610e2991906123f3565b610e3391906123f3565b610e3d91906123f3565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836001600160801b0316815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826001600160801b0316815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b611090611763565b600f80546001600160a01b039485166001600160a01b031991821617909155601080549385169382169390931790925560118054919093169116179055565b6110d7611763565b610bba30336110e530610c68565b61118a565b6110f2611763565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b61111c611763565b6001600160a01b0381166111815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a42565b610bba816117bd565b6001600160a01b03821660009081526014602052604081205460ff161580156111cc57506001600160a01b03841660009081526014602052604090205460ff16155b6112065760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a42565b60135460ff16156112235761121c848484611861565b9050610aad565b600a5462010000900460ff16156115b357600a5460ff166112c2576001600160a01b0384166000908152600b602052604090205460ff168061127d57506001600160a01b0383166000908152600b602052604090205460ff165b6112c25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a42565b6001600160a01b03841660009081526001602052604090205460ff16801561130357506001600160a01b0383166000908152600c602052604090205460ff16155b156113895760055482111561132a5760405162461bcd60e51b8152600401610a429061240c565b60065461133684610c68565b6113409084612454565b11156113845760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a42565b61146b565b6001600160a01b03831660009081526001602052604090205460ff1680156113ca57506001600160a01b0384166000908152600c602052604090205460ff16155b156113f1576005548211156113845760405162461bcd60e51b8152600401610a429061240c565b6001600160a01b0383166000908152600c602052604090205460ff1661146b5760065461141d84610c68565b6114279084612454565b111561146b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a42565b600a54610100900460ff16156115b3576000546001600160a01b038481169116148015906114b657506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156114f457507f000000000000000000000000c1a25b7322f4fa26ca6f4e10ae361a15845556f86001600160a01b0316836001600160a01b031614155b156115b357326000908152601560205260409020544390611516906001612454565b106115a05760405162461bcd60e51b815260206004820152604e60248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260648201526d3637b1b5b99030b63637bbb2b21760911b608482015260a401610a42565b3260009081526015602052604090204390555b6115bb61198a565b156115c8576115c86119f7565b60006115d383610c14565b6001600160a01b0386166000908152600760205260409020549091508111156116355760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a42565b6001600160a01b0385166000908152600760205260409020546116599082906123a7565b6001600160a01b03861660009081526007602052604081209190915561167f8686611dcd565b61168957816116d6565b6116d67f000000000000000000000000c1a25b7322f4fa26ca6f4e10ae361a15845556f86001600160a01b0316876001600160a01b0316146116cc5760006116cf565b60015b8784611e13565b6001600160a01b0386166000908152600760205260409020549091506116fd908290612454565b6001600160a01b0380871660008181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61174684610b1a565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008061186d83610c14565b6001600160a01b0386166000908152600760205260409020549091508111156118cf5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a42565b6001600160a01b0385166000908152600760205260409020546118f39082906123a7565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611923908290612454565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119779087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f000000000000000000000000c1a25b7322f4fa26ca6f4e10ae361a15845556f816148015906119c8575060135460ff16155b80156119dd5750601154600160a01b900460ff165b8015610b1557506012546119f030610c68565b1015905090565b60138054600160ff199091161790556040805160c081018252600e5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a08201819052601254919260009190611a8090846123ba565b611a8a91906123d1565b90506000611a9882846123a7565b9050611ab8737a250d5630b4cf539739df2c5dacb4c659f2488d8261093a565b508115611ace57611acc3061dead8461118a565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0357611b03612467565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b99919061247d565b81600181518110611bac57611bac612467565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c0490859060009086903090429060040161249a565b600060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151611c5c919061250b565b611c66919061250b565b6001600160801b03169050600081886040015160ff1684611c8791906123ba565b611c9191906123d1565b9050600082896060015160ff1685611ca991906123ba565b611cb391906123d1565b6010546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611d05576040519150601f19603f3d011682016040523d82523d6000602084013e611d0a565b606091505b50506011546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611d5a576040519150601f19603f3d011682016040523d82523d6000602084013e611d5f565b606091505b5050600f546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611daf576040519150601f19603f3d011682016040523d82523d6000602084013e611db4565b606091505b50506013805460ff191690555050505050505050505050565b6001600160a01b0382166000908152600b602052604081205460ff16158015610aad5750506001600160a01b03166000908152600b602052604090205460ff1615919050565b6040805160c08082018352600d5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600e54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611f095760648260a001516001600160801b031686611efa91906123ba565b611f0491906123d1565b611f2e565b60648360a001516001600160801b031686611f2491906123ba565b611f2e91906123d1565b90506000600188151514611f6c578260a001516001600160801b0316836000015160ff1683611f5d91906123ba565b611f6791906123d1565b611f97565b8360a001516001600160801b0316846000015160ff1683611f8d91906123ba565b611f9791906123d1565b905080600854611fa791906123a7565b6008556000611fb682846123a7565b905080156120325730600090815260076020526040902054611fd9908290612454565b306000818152600760205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61202084610b1a565b60405190815260200160405180910390a35b6008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a161207983886123a7565b9998505050505050505050565b600060208083528351808285015260005b818110156120b357858101830151858201604001528201612097565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bba57600080fd5b600080604083850312156120fc57600080fd5b8235612107816120d4565b946020939093013593505050565b60006020828403121561212757600080fd5b8135610aad816120d4565b60008060006060848603121561214757600080fd5b8335612152816120d4565b92506020840135612162816120d4565b929592945050506040919091013590565b80358015158114610b5857600080fd5b6000806040838503121561219657600080fd5b82356121a1816120d4565b91506121af60208401612173565b90509250929050565b6000602082840312156121ca57600080fd5b5035919050565b6000602082840312156121e357600080fd5b610aad82612173565b803560ff81168114610b5857600080fd5b6000806000806000806000806000806101408b8d03121561221d57600080fd5b6122268b6121ec565b995061223460208c016121ec565b985061224260408c016121ec565b975061225060608c016121ec565b965061225e60808c016121ec565b955061226c60a08c016121ec565b945061227a60c08c016121ec565b935061228860e08c016121ec565b92506122976101008c016121ec565b91506122a66101208c016121ec565b90509295989b9194979a5092959850565b6000806000606084860312156122cc57600080fd5b83356122d7816120d4565b925060208401356122e7816120d4565b915060408401356122f7816120d4565b809150509250925092565b6000806040838503121561231557600080fd5b8235612320816120d4565b91506020830135612330816120d4565b809150509250929050565b6000806040838503121561234e57600080fd5b61210783612173565b600181811c9082168061236b57607f821691505b60208210810361238b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109a1576109a1612391565b80820281158282048414176109a1576109a1612391565b6000826123ee57634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156109a1576109a1612391565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b808201808211156109a1576109a1612391565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248f57600080fd5b8151610aad816120d4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ea5784516001600160a01b0316835293830193918301916001016124c5565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b0382811682821603908082111561252b5761252b612391565b509291505056fea264697066735822122098e220569bcadfb2f4d1086d0cb56d3919daad4aa828015dc41640ab2f3195ec64736f6c63430008130033

Deployed Bytecode Sourcemap

6991:14866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8904:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8904:56:0;;;;;;;;11501:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10338:216::-;;;;;;;;;;-1:-1:-1;10338:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;10338:216:0;1205:187:1;8154:42:0;;;;;;;;;;-1:-1:-1;8154:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;8985;;;;;;;;;;-1:-1:-1;8985:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8203:46;;;;;;;;;;;;;;;;11305:102;;;;;;;;;;-1:-1:-1;11387:12:0;;11305:102;;10856:441;;;;;;;;;;-1:-1:-1;10856:441:0;;;;;:::i;:::-;;:::i;14948:123::-;;;;;;;;;;-1:-1:-1;14948:123:0;;;;;:::i;:::-;;:::i;:::-;;12297:136;;;;;;;;;;;;;:::i;8641:93::-;;;;;;;;;;-1:-1:-1;8641:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8641:93:0;;-1:-1:-1;;;;;8641:93:0;;;;;;;2892:4:1;2880:17;;;2862:36;;2934:17;;;2929:2;2914:18;;2907:45;2988:17;;;2968:18;;;2961:45;;;;3042:17;;;3037:2;3022:18;;3015:45;3097:17;;;3091:3;3076:19;;3069:46;-1:-1:-1;;;;;3152:47:1;;;3146:3;3131:19;;3124:76;2849:3;2834:19;8641:93:0;2595:611:1;12140:149:0;;;;;;;;;;-1:-1:-1;12140:149:0;;;;;:::i;:::-;;:::i;11415:78::-;;;;;;;;;;-1:-1:-1;11415:78:0;;11483:2;3538:36:1;;3526:2;3511:18;11415:78:0;3396:184:1;15402:139:0;;;;;;;;;;-1:-1:-1;15402:139:0;;;;;:::i;:::-;;:::i;8413:32::-;;;;;;;;;;-1:-1:-1;8413:32:0;;;;;;;;;;;13244:170;;;;;;;;;;;;;:::i;15549:135::-;;;;;;;;;;-1:-1:-1;15549:135:0;;;;;:::i;:::-;;:::i;15276:91::-;;;;;;;;;;-1:-1:-1;15276:91:0;;;;;:::i;:::-;;:::i;11992:140::-;;;;;;;;;;-1:-1:-1;11992:140:0;;;;;:::i;:::-;;:::i;8542:92::-;;;;;;;;;;-1:-1:-1;8542:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8542:92:0;;-1:-1:-1;;;;;8542:92:0;;;10562:122;;;;;;;;;;-1:-1:-1;10562:122:0;;;;;:::i;:::-;;:::i;14821:119::-;;;;;;;;;;-1:-1:-1;14821:119:0;;;;;:::i;:::-;;:::i;7967:58::-;;;;;;;;;;;;;;;;11691:138;;;;;;;;;;-1:-1:-1;11691:138:0;;;;;:::i;:::-;;:::i;2817:103::-;;;;;;;;;;;;;:::i;12441:113::-;;;;;;;;;;;;;:::i;2169:87::-;;;;;;;;;;-1:-1:-1;2215:7:0;2242:6;-1:-1:-1;;;;;2242:6:0;2169:87;;;-1:-1:-1;;;;;3934:32:1;;;3916:51;;3904:2;3889:18;2169:87:0;3770:203:1;11594:89:0;;;;;;;;;;;;;:::i;12562:306::-;;;;;;;;;;-1:-1:-1;12562:306:0;;;;;:::i;:::-;;:::i;7380:126::-;;;;;;;;;;;;7463:42;7380:126;;10692:156;;;;;;;;;;-1:-1:-1;10692:156:0;;;;;:::i;:::-;;:::i;8865:32::-;;;;;;;;;;-1:-1:-1;8865:32:0;;;;-1:-1:-1;;;8865:32:0;;;;;;7560:57;;;;;;;;;;-1:-1:-1;7560:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8326:33;;;;;;;;;;-1:-1:-1;8326:33:0;;;;;;;;13072:164;;;;;;;;;;-1:-1:-1;13072:164:0;;;;;:::i;:::-;;:::i;13725:1088::-;;;;;;;;;;-1:-1:-1;13725:1088:0;;;;;:::i;:::-;;:::i;8366:40::-;;;;;;;;;;-1:-1:-1;8366:40:0;;;;;;;;;;;15079:189;;;;;;;;;;-1:-1:-1;15079:189:0;;;;;:::i;:::-;;:::i;13422:131::-;;;;;;;;;;;;;:::i;11837:147::-;;;;;;;;;;-1:-1:-1;11837:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;11948:19:0;;;11921:7;11948:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11837:147;13561:156;;;;;;;;;;-1:-1:-1;13561:156:0;;;;;:::i;:::-;;:::i;3075:201::-;;;;;;;;;;-1:-1:-1;3075:201:0;;;;;:::i;:::-;;:::i;7513:40::-;;;;;;;;;;;;;;;11501:85;11540:13;11573:5;11566:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11501:85;:::o;10338:216::-;10442:10;10413:4;10430:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10430:32:0;;;;;;;;;;:41;;;10487:37;10413:4;;10430:32;;10487:37;;;;10465:6;160:25:1;;148:2;133:18;;14:177;10487:37:0;;;;;;;;-1:-1:-1;10542:4:0;10338:216;;;;;:::o;10856:441::-;-1:-1:-1;;;;;10977:19:0;;10956:4;10977:19;;;:11;:19;;;;;;;;10997:10;10977:31;;;;;;;;-1:-1:-1;;10977:52:0;10973:257;;-1:-1:-1;;;;;11054:19:0;;;;;;:11;:19;;;;;;;;11074:10;11054:31;;;;;;;;:41;-1:-1:-1;11054:41:0;11046:83;;;;-1:-1:-1;;;11046:83:0;;6964:2:1;11046:83:0;;;6946:21:1;7003:2;6983:18;;;6976:30;7042:31;7022:18;;;7015:59;7091:18;;11046:83:0;;;;;;;;;-1:-1:-1;;;;;11178:19:0;;;;;;:11;:19;;;;;;;;11198:10;11178:31;;;;;;;;:40;;11212:6;;11178:40;:::i;:::-;-1:-1:-1;;;;;11144:19:0;;;;;;:11;:19;;;;;;;;11164:10;11144:31;;;;;;;:74;10973:257;11249:40;11263:6;11271:9;11282:6;11249:13;:40::i;:::-;11242:47;;10856:441;;;;;;:::o;14948:123::-;2055:13;:11;:13::i;:::-;-1:-1:-1;;;;;15033:21:0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;-1:-1:-1;;15033:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14948:123::o;12297:136::-;12350:7;12410:15;7291:42;12410:9;:15::i;:::-;12392;7218:42;12392:9;:15::i;:::-;12377:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;12370:55;;12297:136;:::o;12140:149::-;12210:7;12265:16;;12250:12;;12237:10;:25;;;;:::i;:::-;:44;;;;:::i;15402:139::-;15469:4;2055:13;:11;:13::i;:::-;-1:-1:-1;15486:20:0::1;:25:::0;;-1:-1:-1;;15486:25:0::1;;::::0;::::1;;;;::::0;;-1:-1:-1;2079:1:0::1;15402:139:::0;;;:::o;13244:170::-;2055:13;:11;:13::i;:::-;13321:58:::1;::::0;13304:12:::1;::::0;13329:10:::1;::::0;13353:21:::1;::::0;13304:12;13321:58;13304:12;13321:58;13353:21;13329:10;13321:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13303:76;;;13398:7;13390:16;;;::::0;::::1;;13292:122;13244:170::o:0;15549:135::-;2055:13;:11;:13::i;:::-;-1:-1:-1;;;;;15638:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:38;;-1:-1:-1;;15638:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15549:135::o;15276:91::-;2055:13;:11;:13::i;:::-;15341::::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;15341:18:0;;::::1;::::0;;;::::1;::::0;;15276:91::o;11992:140::-;12057:7;12112:12;;12093:16;;12084:6;:25;;;;:::i;10562:122::-;10617:4;10641:35;10649:7;-1:-1:-1;;10641:7:0;:35::i;14821:119::-;2055:13;:11;:13::i;:::-;-1:-1:-1;;;;;14904:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;14904:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14821:119::o;11691:138::-;-1:-1:-1;;;;;11804:16:0;;11757:7;11804:16;;;:7;:16;;;;;;11784:37;;:19;:37::i;2817:103::-;2055:13;:11;:13::i;:::-;2882:30:::1;2909:1;2882:18;:30::i;:::-;2817:103::o:0;12441:113::-;2055:13;:11;:13::i;:::-;12496::::1;:20:::0;;-1:-1:-1;;12496:20:0::1;12512:4;12496:20;::::0;;12527:12:::1;:19:::0;;-1:-1:-1;;;;12527:19:0::1;-1:-1:-1::0;;;12527:19:0::1;::::0;;12441:113::o;11594:89::-;11635:13;11668:7;11661:14;;;;;:::i;12562:306::-;2055:13;:11;:13::i;:::-;12706:15:::1;-1:-1:-1::0;;;;;12698:23:0::1;:4;-1:-1:-1::0;;;;;12698:23:0::1;::::0;12676:130:::1;;;::::0;-1:-1:-1;;;12676:130:0;;8192:2:1;12676:130:0::1;::::0;::::1;8174:21:1::0;8231:2;8211:18;;;8204:30;8270:34;8250:18;;;8243:62;8341:27;8321:18;;;8314:55;8386:19;;12676:130:0::1;7990:421:1::0;12676:130:0::1;12819:41;12848:4;12854:5;12819:28;:41::i;:::-;12562:306:::0;;:::o;10692:156::-;10772:4;10796:44;10810:10;10822:9;10833:6;10796:13;:44::i;13072:164::-;2055:13;:11;:13::i;:::-;13168:17:::1;:6:::0;13178::::1;13168:17;:::i;:::-;13149:16;:36:::0;13211:17:::1;:6:::0;13221::::1;13211:17;:::i;:::-;13196:12;:32:::0;-1:-1:-1;13072:164:0:o;13725:1088::-;2055:13;:11;:13::i;:::-;14081:21:::1;14169:10:::0;14153:13;14142:8;14105:34:::1;14124:15:::0;14105:16;:34:::1;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;14081:98;;::::0;-1:-1:-1;14190:22:0::1;14283:11:::0;14266:14;14254:9;14215:36:::1;14235:16:::0;14215:17;:36:::1;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14190:104;;;;14316:230;;;;;;;;14347:16;14316:230;;;;;;14389:15;14316:230;;;;;;14423:8;14316:230;;;;;;14455:13;14316:230;;;;;;14489:10;14316:230;;;;;;14521:13;-1:-1:-1::0;;;;;14316:230:0::1;;;::::0;14307:6:::1;:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14307:239:0::1;;;;;-1:-1:-1::0;;;;;14307:239:0::1;;;;;;;;;14569:236;;;;;;;;14600:17;14569:236;;;;;;14643:16;14569:236;;;;;;14678:9;14569:236;;;;;;14711:14;14569:236;;;;;;14746:11;14569:236;;;;;;14779:14;-1:-1:-1::0;;;;;14569:236:0::1;;;::::0;14559:7:::1;:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14559:246:0::1;;;;;-1:-1:-1::0;;;;;14559:246:0::1;;;;;;;;;14070:743;;13725:1088:::0;;;;;;;;;;:::o;15079:189::-;2055:13;:11;:13::i;:::-;15171:20:::1;:25:::0;;-1:-1:-1;;;;;15171:25:0;;::::1;-1:-1:-1::0;;;;;;15171:25:0;;::::1;;::::0;;;15207:13:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15237:18:::1;:23:::0;;;;;::::1;::::0;::::1;;::::0;;15079:189::o;13422:131::-;2055:13;:11;:13::i;:::-;13479:66:::1;13501:4;13508:10;13520:24;13538:4;13520:9;:24::i;:::-;13479:13;:66::i;13561:156::-:0;2055:13;:11;:13::i;:::-;13652:12:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;13652:23:0::1;-1:-1:-1::0;;;;13652:23:0;;::::1;::::0;;;::::1;::::0;;;13686:13:::1;:23:::0;13561:156::o;3075:201::-;2055:13;:11;:13::i;:::-;-1:-1:-1;;;;;3164:22:0;::::1;3156:73;;;::::0;-1:-1:-1;;;3156:73:0;;8771:2:1;3156:73:0::1;::::0;::::1;8753:21:1::0;8810:2;8790:18;;;8783:30;8849:34;8829:18;;;8822:62;-1:-1:-1;;;8900:18:1;;;8893:36;8946:19;;3156:73:0::1;8569:402:1::0;3156:73:0::1;3240:28;3259:8;3240:18;:28::i;15692:2741::-:0;-1:-1:-1;;;;;15810:21:0;;15784:4;15810:21;;;:10;:21;;;;;;;;15809:22;:45;;;;-1:-1:-1;;;;;;15836:18:0;;;;;;:10;:18;;;;;;;;15835:19;15809:45;15801:69;;;;-1:-1:-1;;;15801:69:0;;9178:2:1;15801:69:0;;;9160:21:1;9217:2;9197:18;;;9190:30;-1:-1:-1;;;9236:18:1;;;9229:41;9287:18;;15801:69:0;8976:335:1;15801:69:0;15887:6;;;;15883:87;;;15917:41;15932:6;15940:9;15951:6;15917:14;:41::i;:::-;15910:48;;;;15883:87;15986:13;;;;;;;15982:1772;;;16021:13;;;;16016:210;;-1:-1:-1;;;;;16099:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;16122:22:0;;;;;;:11;:22;;;;;;;;16099:45;16069:141;;;;-1:-1:-1;;;16069:141:0;;9518:2:1;16069:141:0;;;9500:21:1;9557:2;9537:18;;;9530:30;-1:-1:-1;;;9576:18:1;;;9569:52;9638:18;;16069:141:0;9316:346:1;16069:141:0;-1:-1:-1;;;;;16270:33:0;;;;;;:25;:33;;;;;;;;:62;;;;-1:-1:-1;;;;;;16308:24:0;;;;;;:13;:24;;;;;;;;16307:25;16270:62;16266:707;;;16385:12;;16375:6;:22;;16367:75;;;;-1:-1:-1;;;16367:75:0;;;;;;;:::i;:::-;16502:16;;16478:20;16488:9;16478;:20::i;:::-;16469:29;;:6;:29;:::i;:::-;:49;;16461:81;;;;-1:-1:-1;;;16461:81:0;;10408:2:1;16461:81:0;;;10390:21:1;10447:2;10427:18;;;10420:30;-1:-1:-1;;;10466:18:1;;;10459:49;10525:18;;16461:81:0;10206:343:1;16461:81:0;16266:707;;;-1:-1:-1;;;;;16606:36:0;;;;;;:25;:36;;;;;;;;:62;;;;-1:-1:-1;;;;;;16647:21:0;;;;;;:13;:21;;;;;;;;16646:22;16606:62;16602:371;;;16720:12;;16710:6;:22;;16702:75;;;;-1:-1:-1;;;16702:75:0;;;;;;;:::i;16602:371::-;-1:-1:-1;;;;;16817:24:0;;;;;;:13;:24;;;;;;;;16812:161;;16917:16;;16893:20;16903:9;16893;:20::i;:::-;16884:29;;:6;:29;:::i;:::-;:49;;16876:81;;;;-1:-1:-1;;;16876:81:0;;10408:2:1;16876:81:0;;;10390:21:1;10447:2;10427:18;;;10420:30;-1:-1:-1;;;10466:18:1;;;10459:49;10525:18;;16876:81:0;10206:343:1;16876:81:0;17133:20;;;;;;;17129:614;;;2215:7;2242:6;-1:-1:-1;;;;;17200:20:0;;;2242:6;;17200:20;;;;:84;;-1:-1:-1;;;;;;17245:39:0;;7463:42;17245:39;;17200:84;:137;;;;;17322:15;-1:-1:-1;;;;;17309:28:0;:9;-1:-1:-1;;;;;17309:28:0;;;17200:137;17174:554;;;17443:9;17414:39;;;;:28;:39;;;;;;17489:12;;17414:43;;17456:1;17414:43;:::i;:::-;:87;17380:251;;;;-1:-1:-1;;;17380:251:0;;10756:2:1;17380:251:0;;;10738:21:1;10795:2;10775:18;;;10768:30;10834:34;10814:18;;;10807:62;10905:34;10885:18;;;10878:62;-1:-1:-1;;;10956:19:1;;;10949:45;11011:19;;17380:251:0;10554:482:1;17380:251:0;17683:9;17654:39;;;;:28;:39;;;;;17696:12;17654:54;;17174:554;17770:17;:15;:17::i;:::-;17766:61;;;17804:11;:9;:11::i;:::-;17839:24;17866:26;17885:6;17866:18;:26::i;:::-;-1:-1:-1;;;;;17911:15:0;;;;;;:7;:15;;;;;;17839:53;;-1:-1:-1;17911:35:0;-1:-1:-1;17911:35:0;17903:68;;;;-1:-1:-1;;;17903:68:0;;11243:2:1;17903:68:0;;;11225:21:1;11282:2;11262:18;;;11255:30;-1:-1:-1;;;11301:18:1;;;11294:50;11361:18;;17903:68:0;11041:344:1;17903:68:0;-1:-1:-1;;;;;18000:15:0;;;;;;:7;:15;;;;;;:34;;18018:16;;18000:34;:::i;:::-;-1:-1:-1;;;;;17982:15:0;;;;;;:7;:15;;;;;:52;;;;18076:33;17990:6;18099:9;18076:14;:33::i;:::-;:170;;18230:16;18076:170;;;18125:89;18157:15;-1:-1:-1;;;;;18147:25:0;:6;-1:-1:-1;;;;;18147:25:0;;:40;;18182:5;18147:40;;;18175:4;18147:40;18189:6;18197:16;18125:21;:89::i;:::-;-1:-1:-1;;;;;18278:18:0;;;;;;:7;:18;;;;;;18047:199;;-1:-1:-1;18278:39:0;;18047:199;;18278:39;:::i;:::-;-1:-1:-1;;;;;18257:18:0;;;;;;;:7;:18;;;;;:60;;;;18335:68;;;18363:39;18383:18;18363:19;:39::i;:::-;18335:68;;160:25:1;;;148:2;133:18;18335:68:0;;;;;;;-1:-1:-1;18421:4:0;;15692:2741;-1:-1:-1;;;;;15692:2741:0:o;2334:132::-;2215:7;2242:6;-1:-1:-1;;;;;2242:6:0;859:10;2398:23;2390:68;;;;-1:-1:-1;;;2390:68:0;;11592:2:1;2390:68:0;;;11574:21:1;;;11611:18;;;11604:30;11670:34;11650:18;;;11643:62;11722:18;;2390:68:0;11390:356:1;3436:191:0;3510:16;3529:6;;-1:-1:-1;;;;;3546:17:0;;;-1:-1:-1;;;;;;3546:17:0;;;;;;3579:40;;3529:6;;;;;;;3579:40;;3510:16;3579:40;3499:128;3436:191;:::o;12876:188::-;-1:-1:-1;;;;;12959:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;12959:39:0;;;;;;;;;;13016:40;;12959:39;;:31;13016:40;;;12876:188;;:::o;18441:455::-;18534:4;18551:24;18578:26;18597:6;18578:18;:26::i;:::-;-1:-1:-1;;;;;18623:15:0;;;;;;:7;:15;;;;;;18551:53;;-1:-1:-1;18623:35:0;-1:-1:-1;18623:35:0;18615:68;;;;-1:-1:-1;;;18615:68:0;;11243:2:1;18615:68:0;;;11225:21:1;11282:2;11262:18;;;11255:30;-1:-1:-1;;;11301:18:1;;;11294:50;11361:18;;18615:68:0;11041:344:1;18615:68:0;-1:-1:-1;;;;;18712:15:0;;;;;;:7;:15;;;;;;:34;;18730:16;;18712:34;:::i;:::-;-1:-1:-1;;;;;18694:15:0;;;;;;;:7;:15;;;;;;:52;;;;18778:18;;;;;;;:37;;18799:16;;18778:37;:::i;:::-;-1:-1:-1;;;;;18757:18:0;;;;;;;:7;:18;;;;;;;:58;;;;18831:35;;;;;;;;;;18859:6;160:25:1;;148:2;133:18;;14:177;18831:35:0;;;;;;;;-1:-1:-1;18884:4:0;;18441:455;-1:-1:-1;;;;18441:455:0:o;20027:183::-;20077:4;20101:10;-1:-1:-1;;;;;20115:15:0;20101:29;;;;;:40;;-1:-1:-1;20135:6:0;;;;20134:7;20101:40;:56;;;;-1:-1:-1;20145:12:0;;-1:-1:-1;;;20145:12:0;;;;20101:56;:101;;;;;20189:13;;20161:24;20179:4;20161:9;:24::i;:::-;:41;;20094:108;;20027:183;:::o;20218:1467::-;9138:6;:13;;9147:4;-1:-1:-1;;9138:13:0;;;;;;20268:30:::1;::::0;;::::1;::::0;::::1;::::0;;20291:7:::1;20268:30:::0;9138:13;20268:30;;::::1;::::0;;9138:13;20268:30;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;20268:30:0;;::::1;-1:-1:-1::0;;;;;20268:30:0::1;::::0;;;;;;20337:13:::1;::::0;20268:30;;-1:-1:-1;;20268:30:0;20384:32:::1;::::0;20337:13;20384:32:::1;:::i;:::-;:50;;;;:::i;:::-;20361:73:::0;-1:-1:-1;20445:20:0::1;20468:30;20361:73:::0;20468:15;:30:::1;:::i;:::-;20445:53;;20509:49;7463:42;20545:12;20509:7;:49::i;:::-;-1:-1:-1::0;20574:16:0;;20571:126:::1;;20637:48;20659:4;7218:42;20672:12;20637:13;:48::i;:::-;;20571:126;20750:16;::::0;;20764:1:::1;20750:16:::0;;;;;::::1;::::0;;20726:21:::1;::::0;20750:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20750:16:0::1;20726:40;;20795:4;20777;20782:1;20777:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20777:23:0::1;;;-1:-1:-1::0;;;;;20777:23:0::1;;;::::0;::::1;7463:42;-1:-1:-1::0;;;;;20821:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20811:4;20816:1;20811:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20811:34:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:34;20858:147:::1;::::0;-1:-1:-1;;;20858:147:0;;7463:42:::1;::::0;20858:68:::1;::::0;:147:::1;::::0;20941:12;;20955:1:::1;::::0;20958:4;;20972::::1;::::0;20979:15:::1;::::0;20858:147:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21018:17;21038:21;21018:41;;21072:20;21136:9;:14;;;21095:55;;21113:9;:20;;;21095:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1::0;;;;;21072:78:0::1;;;21249:19;21298:12;21283:9;:12;;;21271:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;21249:61;;21321:24;21380:12;21360:9;:17;;;21348:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;21451:13;::::0;21443:51:::1;::::0;21321:71;;-1:-1:-1;21423:15:0::1;::::0;-1:-1:-1;;;;;21451:13:0;;::::1;::::0;21478:11;;21423:15;21443:51;21423:15;21443:51;21478:11;21451:13;21443:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;21529:18:0::1;::::0;21521:61:::1;::::0;21422:72;;-1:-1:-1;;;;;;21529:18:0::1;::::0;21561:16;;21521:61:::1;::::0;;;21561:16;21529:18;21521:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;21617:20:0::1;::::0;21609:68:::1;::::0;21505:77;;-1:-1:-1;;;;;;21617:20:0::1;::::0;21651:21:::1;::::0;21609:68:::1;::::0;;;21651:21;21617:20;21609:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;9174:6:0;:14;;-1:-1:-1;;9174:14:0;;;-1:-1:-1;;;;;;;;;;;20218:1467:0:o;21693:161::-;-1:-1:-1;;;;;21800:19:0;;21775:4;21800:19;;;:11;:19;;;;;;;;21799:20;:47;;;;-1:-1:-1;;;;;;;21824:22:0;;;;;:11;:22;;;;;;;;21823:23;;21693:161;-1:-1:-1;21693:161:0:o;18904:1115::-;19028:28;;;;;;;;;19050:6;19028:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;19028:28:0;;;;;;;;;;;;;;19067:30;;;;;;;19090:7;19067:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19008:7;;;19153:14;;;19028:28;19153:14;:99;;19249:3;19231:9;:15;;;-1:-1:-1;;;;;19212:34:0;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;19153:99;;;19206:3;19189:8;:14;;;-1:-1:-1;;;;;19170:33:0;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;19110:142;-1:-1:-1;19285:27:0;19325:4;19315:14;;;;:164;;19464:9;:15;;;-1:-1:-1;;;;;19419:60:0;19441:9;:20;;;19419:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;19315:164;;;19389:8;:14;;;-1:-1:-1;;;;;19345:58:0;19367:8;:19;;;19345:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;19285:194;;19530:19;19511:16;;:38;;;;:::i;:::-;19492:16;:57;19584:29;19616:41;19638:19;19616;:41;:::i;:::-;19584:73;-1:-1:-1;19672:25:0;;19668:226;;19755:4;19739:22;;;;:7;:22;;;;;;:46;;19764:21;;19739:46;:::i;:::-;19730:4;19714:22;;;;:7;:22;;;;;:71;;;;-1:-1:-1;;;;;19807:75:0;;;19839:42;19859:21;19839:19;:42::i;:::-;19807:75;;160:25:1;;;148:2;133:18;19807:75:0;;;;;;;19668:226;19938:16;;19909:46;;;13635:25:1;;;13691:2;13676:18;;13669:34;;;;19909:46:0;;13608:18:1;19909:46:0;;;;;;;19973:38;19992:19;19973:16;:38;:::i;:::-;19966:45;18904:1115;-1:-1:-1;;;;;;;;;18904:1115:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2110:160::-;2175:20;;2231:13;;2224:21;2214:32;;2204:60;;2260:1;2257;2250:12;2275:315;2340:6;2348;2401:2;2389:9;2380:7;2376:23;2372:32;2369:52;;;2417:1;2414;2407:12;2369:52;2456:9;2443:23;2475:31;2500:5;2475:31;:::i;:::-;2525:5;-1:-1:-1;2549:35:1;2580:2;2565:18;;2549:35;:::i;:::-;2539:45;;2275:315;;;;;:::o;3211:180::-;3270:6;3323:2;3311:9;3302:7;3298:23;3294:32;3291:52;;;3339:1;3336;3329:12;3291:52;-1:-1:-1;3362:23:1;;3211:180;-1:-1:-1;3211:180:1:o;3585:::-;3641:6;3694:2;3682:9;3673:7;3669:23;3665:32;3662:52;;;3710:1;3707;3700:12;3662:52;3733:26;3749:9;3733:26;:::i;4212:156::-;4278:20;;4338:4;4327:16;;4317:27;;4307:55;;4358:1;4355;4348:12;4373:819;4493:6;4501;4509;4517;4525;4533;4541;4549;4557;4565;4618:3;4606:9;4597:7;4593:23;4589:33;4586:53;;;4635:1;4632;4625:12;4586:53;4658:27;4675:9;4658:27;:::i;:::-;4648:37;;4704:36;4736:2;4725:9;4721:18;4704:36;:::i;:::-;4694:46;;4759:36;4791:2;4780:9;4776:18;4759:36;:::i;:::-;4749:46;;4814:36;4846:2;4835:9;4831:18;4814:36;:::i;:::-;4804:46;;4869:37;4901:3;4890:9;4886:19;4869:37;:::i;:::-;4859:47;;4925:37;4957:3;4946:9;4942:19;4925:37;:::i;:::-;4915:47;;4981:37;5013:3;5002:9;4998:19;4981:37;:::i;:::-;4971:47;;5037:37;5069:3;5058:9;5054:19;5037:37;:::i;:::-;5027:47;;5093:37;5125:3;5114:9;5110:19;5093:37;:::i;:::-;5083:47;;5149:37;5181:3;5170:9;5166:19;5149:37;:::i;:::-;5139:47;;4373:819;;;;;;;;;;;;;:::o;5197:529::-;5274:6;5282;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;5398:9;5385:23;5417:31;5442:5;5417:31;:::i;:::-;5467:5;-1:-1:-1;5524:2:1;5509:18;;5496:32;5537:33;5496:32;5537:33;:::i;:::-;5589:7;-1:-1:-1;5648:2:1;5633:18;;5620:32;5661:33;5620:32;5661:33;:::i;:::-;5713:7;5703:17;;;5197:529;;;;;:::o;5731:388::-;5799:6;5807;5860:2;5848:9;5839:7;5835:23;5831:32;5828:52;;;5876:1;5873;5866:12;5828:52;5915:9;5902:23;5934:31;5959:5;5934:31;:::i;:::-;5984:5;-1:-1:-1;6041:2:1;6026:18;;6013:32;6054:33;6013:32;6054:33;:::i;:::-;6106:7;6096:17;;;5731:388;;;;;:::o;6124:248::-;6189:6;6197;6250:2;6238:9;6229:7;6225:23;6221:32;6218:52;;;6266:1;6263;6256:12;6218:52;6289:26;6305:9;6289:26;:::i;6377:380::-;6456:1;6452:12;;;;6499;;;6520:61;;6574:4;6566:6;6562:17;6552:27;;6520:61;6627:2;6619:6;6616:14;6596:18;6593:38;6590:161;;6673:10;6668:3;6664:20;6661:1;6654:31;6708:4;6705:1;6698:15;6736:4;6733:1;6726:15;6590:161;;6377:380;;;:::o;7120:127::-;7181:10;7176:3;7172:20;7169:1;7162:31;7212:4;7209:1;7202:15;7236:4;7233:1;7226:15;7252:128;7319:9;;;7340:11;;;7337:37;;;7354:18;;:::i;7385:168::-;7458:9;;;7489;;7506:15;;;7500:22;;7486:37;7476:71;;7527:18;;:::i;7558:217::-;7598:1;7624;7614:132;;7668:10;7663:3;7659:20;7656:1;7649:31;7703:4;7700:1;7693:15;7731:4;7728:1;7721:15;7614:132;-1:-1:-1;7760:9:1;;7558:217::o;8416:148::-;8504:4;8483:12;;;8497;;;8479:31;;8522:13;;8519:39;;;8538:18;;:::i;9667:404::-;9869:2;9851:21;;;9908:2;9888:18;;;9881:30;9947:34;9942:2;9927:18;;9920:62;-1:-1:-1;;;10013:2:1;9998:18;;9991:38;10061:3;10046:19;;9667:404::o;10076:125::-;10141:9;;;10162:10;;;10159:36;;;10175:18;;:::i;11883:127::-;11944:10;11939:3;11935:20;11932:1;11925:31;11975:4;11972:1;11965:15;11999:4;11996:1;11989:15;12015:251;12085:6;12138:2;12126:9;12117:7;12113:23;12109:32;12106:52;;;12154:1;12151;12144:12;12106:52;12186:9;12180:16;12205:31;12230:5;12205:31;:::i;12271:980::-;12533:4;12581:3;12570:9;12566:19;12612:6;12601:9;12594:25;12638:2;12676:6;12671:2;12660:9;12656:18;12649:34;12719:3;12714:2;12703:9;12699:18;12692:31;12743:6;12778;12772:13;12809:6;12801;12794:22;12847:3;12836:9;12832:19;12825:26;;12886:2;12878:6;12874:15;12860:29;;12907:1;12917:195;12931:6;12928:1;12925:13;12917:195;;;12996:13;;-1:-1:-1;;;;;12992:39:1;12980:52;;13087:15;;;;13052:12;;;;13028:1;12946:9;12917:195;;;-1:-1:-1;;;;;;;13168:32:1;;;;13163:2;13148:18;;13141:60;-1:-1:-1;;;13232:3:1;13217:19;13210:35;13129:3;12271:980;-1:-1:-1;;;12271:980:1:o;13256:200::-;-1:-1:-1;;;;;13392:10:1;;;13380;;;13376:27;;13415:12;;;13412:38;;;13430:18;;:::i;:::-;13412:38;13256:200;;;;:::o

Swarm Source

ipfs://98e220569bcadfb2f4d1086d0cb56d3919daad4aa828015dc41640ab2f3195ec
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.