ETH Price: $3,390.75 (+1.54%)

Token

Conaiha (CONAIHA)
 

Overview

Max Total Supply

1,000,000,000 CONAIHA

Holders

167

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,496,677.430170167104051682 CONAIHA

Value
$0.00
0xef0e9e0921a4593926e00755cd6092ac274cce1d
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:
CONAIHA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 250 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-17
*/

/**

𝕋𝕙𝕖 𝕒𝕝𝕝𝕦𝕣𝕖 𝕠𝕗 𝕕𝕚𝕤𝕔𝕠𝕧𝕖𝕣𝕚𝕟𝕘 𝕙𝕚𝕕𝕕𝕖𝕟 𝕥𝕣𝕦𝕥𝕙𝕤 𝕚𝕤 𝕚𝕣𝕣𝕖𝕤𝕚𝕤𝕥𝕚𝕓𝕝𝕖, 
𝕪𝕖𝕥 𝕥𝕙𝕖 𝕛𝕠𝕦𝕣𝕟𝕖𝕪 𝕒𝕙𝕖𝕒𝕕 𝕚𝕤 𝕝𝕒𝕕𝕖𝕟 𝕨𝕚𝕥𝕙 𝕘𝕣𝕒𝕧𝕚𝕥𝕪 𝕒𝕟𝕕 𝕦𝕟𝕔𝕖𝕣𝕥𝕒𝕚𝕟𝕥𝕪. 
𝕊𝕠𝕠𝕟 𝕒𝕝𝕝 𝕨𝕚𝕝𝕝 𝕦𝕟𝕕𝕖𝕣𝕤𝕥𝕒𝕟𝕕 𝕙𝕖𝕣.

https://www.conaiha.ai/

*/

// SPDX-License-Identifier: NONE
pragma solidity ^0.8.20;

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

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

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

interface IRouter {
    function factory() external view returns (address);
    function WETH() external view returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
    external
    payable
    returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint
    );

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

interface IWETH is IERC20 {
    function withdraw(uint256) external;
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(owner, spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function decimals() public view virtual override returns (uint8) {return 18;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[from] = fromBalance - amount;
        _balances[to] += amount;
    }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked {
        _balances[account] += amount;
    }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

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

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract CONAIHA is ERC20, Ownable {

    modifier lockTheSwap() {
        processingFees = true;
        _;
        processingFees = false;
    }

    bool private processingFees = false;
    uint256 public maxWallet;
    uint256 public thresholdToProcessFees;

    address public treasury;
    address public dev;
    address public lpWallet;
    IRouter public router;
    address public automatedMarketMakerAddress;
    mapping(address => bool) public automatedMarketMakerPair;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public liquidityShare;
    uint256 public treasuryShare;
    uint256 public devShare;
    mapping(address => bool) excludedAddresses;

    bool public tradingEnabled = false;

    event AMMSet(address indexed pairAddress, bool isAMM);
    event TradingEnabled();
    event NewTreasuryWalletSet(address newTreasury);
    event NewDevWalletSet(address newDevWallet);
    event NewLpWalletSet(address newLpWallet);
    event ThresholdToProcessFeesSet(uint256 oldThreshold, uint256 newThreshold);
    event MaxWalletSet(uint256 oldMaxWallet, uint256 newMaxWallet);
    event FeeSet(uint256 buyFee, uint256 sellFee);
    event FeeSharesSet(
        uint256 newBurnAndLiquidityShare,
        uint256 newTreasuryShare,
        uint256 newOpsShare
    );
    event FeesProcessed();
    event ExcludedAddressSet(address indexed excludedAddress, bool isExcluded);

constructor() ERC20("Conaiha", "CONAIHA")
    {
        _mint(_msgSender(), 1000000000 * 1e18);
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        updateAutomatedMarketMaker(address(_pair), true);
        excludedAddresses[address(_msgSender())] = true;

        treasury = address(0x00Cb2EEf16307825fB536F42521Ad4c93244eAe8);
        dev = address(0x0C91F5694EA821F03Edf75445411A1A51f4ec15d);

        excludedAddresses[address(router)] = true;
        excludedAddresses[address(treasury)] = true;
        excludedAddresses[address(dev)] = true;

        buyFee = 30000;
        sellFee = 30000;
        liquidityShare = 20000;
        treasuryShare = 40000;
        devShare = 40000;

        lpWallet = address(treasury);

        maxWallet = 20000000 * 1e18;
        thresholdToProcessFees = 10000000 * 1e18;
    }

    receive() external payable {}

    function excludeWalletFromFees(address excludedAddress, bool isExcluded) public onlyOwner {
        require(excludedAddress != address(0), "(New) excluded address can not be address 0x");
        excludedAddresses[excludedAddress] = isExcluded;
        emit ExcludedAddressSet(excludedAddress, isExcluded);
    }

    function updateAutomatedMarketMaker(address ammAddress, bool isAMM) public onlyOwner {
        require(ammAddress != address(0), "(New) AMM address can not be address 0x");
        automatedMarketMakerPair[ammAddress] = isAMM;
        automatedMarketMakerAddress = ammAddress;
        emit AMMSet(ammAddress, isAMM);
    }

    function setThresholdToProcessFees(uint256 newThreshold) external onlyOwner {
        require(newThreshold >= 1000 * 1e18, "1000 is the minmum");
        uint256 _oldThreshold = thresholdToProcessFees;
        thresholdToProcessFees = newThreshold;
        emit ThresholdToProcessFeesSet(_oldThreshold, newThreshold);
    }

    function updateMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= 1000000 * 1e18, "Max wallet is less the minimum then 0,1% of totalSupply");
        uint256 _oldMaxWallet = maxWallet;
        maxWallet = newMaxWallet;
        emit MaxWalletSet(_oldMaxWallet, newMaxWallet);
    }

    function setFeePercentage(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee >= 0, "Buy fee is less than 0");
        require(newSellFee >= 0, "Sell fee is less than 0");
        require(newBuyFee != buyFee, "Buy fee is already that percentage");
        require(newSellFee != sellFee, "Sell fee is already that percentage");

        buyFee = newBuyFee;
        sellFee = newSellFee;

        emit FeeSet(buyFee, sellFee);
    }

    function setFeeDistributions(uint256 newLiquidityShare, uint256 newTreasuryShare, uint256 newDevShare) external onlyOwner {
        require(newLiquidityShare + newTreasuryShare + newDevShare == 100000,
            "Summed fee shares are not 100% (100000)!"
        );

        liquidityShare = newLiquidityShare;
        treasuryShare = newTreasuryShare;
        devShare = newDevShare;

        emit FeeSharesSet(
            newLiquidityShare,
            newTreasuryShare,
            newDevShare
        );
    }

    function updateTreasuryWallet(address newTreasury) public onlyOwner {
        require(newTreasury != address(0), "New treasury can not be address 0x");
        excludedAddresses[address(treasury)] = false;
        treasury = newTreasury;
        excludedAddresses[address(newTreasury)] = true;
        emit NewTreasuryWalletSet(newTreasury);
    }

    function updateDevWallet(address newDevWallet) public onlyOwner {
        require(newDevWallet != address(0), "New operations wallet can not be address 0x");
        excludedAddresses[address(dev)] = false;
        dev = newDevWallet;
        excludedAddresses[address(newDevWallet)] = true;
        emit NewDevWalletSet(newDevWallet);
    }

    function setLiquidityFeeReceiver(address newLpWallet) public onlyOwner {
        lpWallet = newLpWallet;
        emit NewLpWalletSet(newLpWallet);
    }

    function startTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        emit TradingEnabled();
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(tradingEnabled || from == owner(), "Trading will enable when AMM is set");

        if (excludedAddresses[from] || excludedAddresses[to]) {
            super._transfer(from, to, amount);
            return;
        }

        uint256 _transferAmount = amount;

        if (automatedMarketMakerPair[from] || automatedMarketMakerPair[to]) {
            uint256 _txnFee;

            if (automatedMarketMakerPair[from]) {
                _txnFee = (_transferAmount * buyFee) / 100000;
            }

            if (automatedMarketMakerPair[to]) {
                _txnFee = (_transferAmount * sellFee) / 100000;

                if (!processingFees && balanceOf(address(this)) >= thresholdToProcessFees) {
                    processFees();
                }
            }

            _transferAmount = _transferAmount - _txnFee;

            if (automatedMarketMakerPair[from]) {
                require(balanceOf(automatedMarketMakerPair[from] ? to : from) + _transferAmount <= maxWallet,
                    "transaction exceeds max wallet");
            }

            super._transfer(from, address(this), _txnFee);
        }

        if (automatedMarketMakerPair[to] && !processingFees
        && balanceOf(address(this)) >= thresholdToProcessFees
        ) {
            processFees();
        }

        super._transfer(from, to, _transferAmount);
    }

    function processFees() public lockTheSwap {
        uint256 _contractBalance = balanceOf(address(this));
        require(_contractBalance != 0, "Token balance cannot be 0");
        uint256 _liquidityTokens = 0;
        uint256 _swapAmount = _contractBalance;

        if (liquidityShare != 0) {
            _liquidityTokens = (_contractBalance * (liquidityShare / 2)) / 100000;
            _swapAmount = _contractBalance - _liquidityTokens;
        }

        _swapTokensForEth(_swapAmount);

        uint256 _balance = address(this).balance;

        require(_balance != 0, "ETH balance cannot be 0");

        if (liquidityShare != 0) {
            uint256 _ethForLiquidity = (_balance * (liquidityShare / 2)) / 100000;

            _addLiquidityETH(
                address(this),
                _liquidityTokens,
                _ethForLiquidity
            );
        }

        if (treasuryShare != 0) {
            uint256 _ethForTreasury = (_balance * treasuryShare) / 100000;
            (bool treasurySendSuccess,) = treasury.call{value : _ethForTreasury}("");
            require(treasurySendSuccess, "Transfer to treasury failed.");
        }

        if (devShare != 0) {
            uint256 _ethForDev = (_balance * devShare) / 100000;
            (bool devWalletSendSuccess,) = dev.call{value : _ethForDev}("");
            require(devWalletSendSuccess, "Transfer to dev failed.");
        }

        emit FeesProcessed();
    }

    function _swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidityETH(address token, uint256 tokenAmount, uint256 ethAmount) internal {
        IERC20(token).approve(address(router), tokenAmount);
        router.addLiquidityETH{value : ethAmount}(
            token,
            tokenAmount,
            0,
            0,
            address(lpWallet),
            block.timestamp
        );
    }

    function rescueWETH() external onlyOwner {
        address wethAddress = router.WETH();
        IWETH(wethAddress).withdraw(
            IERC20(wethAddress).balanceOf(address(this))
        );
    }

    function rescueETH() external onlyOwner {
        uint256 _balance = address(this).balance;
        require(_balance > 0, "No ETH to withdraw");

        (bool success,) = dev.call{value : _balance}("");
        require(success, "ETH transfer failed");
    }

    function rescueTokens(address tokenAddress) external onlyOwner {
        IERC20 tokenContract = IERC20(tokenAddress);
        tokenContract.transfer(address(dev), tokenContract.balanceOf(address(this)));
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pairAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isAMM","type":"bool"}],"name":"AMMSet","type":"event"},{"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":"excludedAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBurnAndLiquidityShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTreasuryShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newOpsShare","type":"uint256"}],"name":"FeeSharesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"MaxWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newDevWallet","type":"address"}],"name":"NewDevWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpWallet","type":"address"}],"name":"NewLpWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"NewTreasuryWalletSet","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":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"ThresholdToProcessFeesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"automatedMarketMakerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPair","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":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeWalletFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newTreasuryShare","type":"uint256"},{"internalType":"uint256","name":"newDevShare","type":"uint256"}],"name":"setFeeDistributions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLiquidityFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setThresholdToProcessFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdToProcessFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ammAddress","type":"address"},{"internalType":"bool","name":"isAMM","type":"bool"}],"name":"updateAutomatedMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff60a01b191690556014805460ff1916905534801562000027575f80fd5b5060405180604001604052806007815260200166436f6e6169686160c81b81525060405180604001604052806007815260200166434f4e4149484160c81b81525081600390816200007991906200063d565b5060046200008882826200063d565b505050620000a56200009f6200033f60201b60201c565b62000343565b620000bd336b033b2e3c9fd0803ce800000062000394565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b815290515f929163c45a01559160048083019260209291908290030181865afa15801562000122573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000148919062000705565b6001600160a01b031663c9c6539630600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000705565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000219573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023f919062000705565b90506200024e81600162000459565b50335f908152601360205260408082208054600160ff199182168117909255600880546001600160a01b031990811672cb2eef16307825fb536f42521ad4c93244eae8178255600980548216730c91f5694ea821f03edf75445411a1a51f4ec15d178155600b546001600160a01b039081168852868820805486168717905583548116885286882080548616871790559054811687529490952080549092169092179055617530600e819055600f55614e20601055619c40601181905560125554600a805490931691161790556a108b2a2c280290940000006006556a084595161401484a0000006007556200075a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003f05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f82825462000403919062000734565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6200046362000540565b6001600160a01b038216620004cb5760405162461bcd60e51b815260206004820152602760248201527f284e65772920414d4d20616464726573732063616e206e6f74206265206164646044820152660e4cae6e64060f60cb1b6064820152608401620003e7565b6001600160a01b0382165f818152600d6020908152604091829020805460ff1916851515908117909155600c80546001600160a01b0319168517905591519182527f52f7750de642e169ff687a199cc8453a96d938130a797c0a11ea42a4d1659d87910160405180910390a25050565b505050565b6005546001600160a01b031633146200059c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003e7565b565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005c757607f821691505b602082108103620005e657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200053b575f81815260208120601f850160051c81016020861015620006145750805b601f850160051c820191505b81811015620006355782815560010162000620565b505050505050565b81516001600160401b038111156200065957620006596200059e565b62000671816200066a8454620005b2565b84620005ec565b602080601f831160018114620006a7575f84156200068f5750858301515b5f19600386901b1c1916600185901b17855562000635565b5f85815260208120601f198616915b82811015620006d757888601518255948401946001909101908401620006b6565b5085821015620006f557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000716575f80fd5b81516001600160a01b03811681146200072d575f80fd5b9392505050565b808201808211156200075457634e487b7160e01b5f52601160045260245ffd5b92915050565b61241180620007685f395ff3fe60806040526004361061024b575f3560e01c806365c5570f11610134578063a457c2d7116100b3578063c38ec0b611610078578063c38ec0b614610699578063d368371e146106ad578063dd62ed3e146106c2578063f2fde38b146106e1578063f887ea4014610700578063f8b45b051461071f575f80fd5b8063a457c2d714610613578063a9059cbb14610632578063aed04fae14610651578063ba69ebed14610666578063c18bc1951461067a575f80fd5b80638da5cb5b116100f95780638da5cb5b1461057657806390aa2ea61461059357806391cca3db146105c157806393e60845146105e057806395d89b41146105ff575f80fd5b806365c5570f146104db57806370a08231146104fa578063715018a61461052e5780637796ff3714610542578063809d458d14610557575f80fd5b8063293230b8116101cb578063470624021161019057806347062402146104315780634ada218b1461044657806350b9a9f51461045f57806358c9b0471461047e57806361d027b31461049d5780636303516c146104bc575f80fd5b8063293230b8146103af5780632b14ca56146103c3578063313ce567146103d85780633190bb8a146103f35780633950935114610412575f80fd5b806318160ddd1161021157806318160ddd1461032a5780631816467f1461033e5780631fd0d9a51461035d57806320800a001461037c57806323b872dd14610390575f80fd5b8062ae3bf81461025657806306fdde0314610277578063095ea7b3146102a15780630ac249d5146102d057806315291cd414610307575f80fd5b3661025257005b5f80fd5b348015610261575f80fd5b50610275610270366004612093565b610734565b005b348015610282575f80fd5b5061028b610826565b60405161029891906120b5565b60405180910390f35b3480156102ac575f80fd5b506102c06102bb366004612100565b6108b6565b6040519015158152602001610298565b3480156102db575f80fd5b50600c546102ef906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b348015610312575f80fd5b5061031c60105481565b604051908152602001610298565b348015610335575f80fd5b5060025461031c565b348015610349575f80fd5b50610275610358366004612093565b6108cf565b348015610368575f80fd5b50610275610377366004612137565b6109ca565b348015610387575f80fd5b50610275610aa9565b34801561039b575f80fd5b506102c06103aa36600461216e565b610b8e565b3480156103ba575f80fd5b50610275610bb1565b3480156103ce575f80fd5b5061031c600f5481565b3480156103e3575f80fd5b5060405160128152602001610298565b3480156103fe575f80fd5b5061027561040d366004612093565b610c43565b34801561041d575f80fd5b506102c061042c366004612100565b610c99565b34801561043c575f80fd5b5061031c600e5481565b348015610451575f80fd5b506014546102c09060ff1681565b34801561046a575f80fd5b506102756104793660046121ac565b610cba565b348015610489575f80fd5b506102756104983660046121c3565b610d56565b3480156104a8575f80fd5b506008546102ef906001600160a01b031681565b3480156104c7575f80fd5b50600a546102ef906001600160a01b031681565b3480156104e6575f80fd5b506102756104f5366004612137565b610e2a565b348015610505575f80fd5b5061031c610514366004612093565b6001600160a01b03165f9081526020819052604090205490565b348015610539575f80fd5b50610275610ef4565b34801561054d575f80fd5b5061031c60115481565b348015610562575f80fd5b50610275610571366004612093565b610f07565b348015610581575f80fd5b506005546001600160a01b03166102ef565b34801561059e575f80fd5b506102c06105ad366004612093565b600d6020525f908152604090205460ff1681565b3480156105cc575f80fd5b506009546102ef906001600160a01b031681565b3480156105eb575f80fd5b506102756105fa3660046121ec565b610fed565b34801561060a575f80fd5b5061028b6110ee565b34801561061e575f80fd5b506102c061062d366004612100565b6110fd565b34801561063d575f80fd5b506102c061064c366004612100565b611177565b34801561065c575f80fd5b5061031c60125481565b348015610671575f80fd5b50610275611184565b348015610685575f80fd5b506102756106943660046121ac565b6114a7565b3480156106a4575f80fd5b5061027561156d565b3480156106b8575f80fd5b5061031c60075481565b3480156106cd575f80fd5b5061031c6106dc36600461220c565b61169f565b3480156106ec575f80fd5b506102756106fb366004612093565b6116c9565b34801561070b575f80fd5b50600b546102ef906001600160a01b031681565b34801561072a575f80fd5b5061031c60065481565b61073c611742565b6009546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015610791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b59190612238565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156107fd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610821919061224f565b505050565b6060600380546108359061226a565b80601f01602080910402602001604051908101604052809291908181526020018280546108619061226a565b80156108ac5780601f10610883576101008083540402835291602001916108ac565b820191905f5260205f20905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b5f336108c381858561179c565b60019150505b92915050565b6108d7611742565b6001600160a01b0381166109465760405162461bcd60e51b815260206004820152602b60248201527f4e6577206f7065726174696f6e732077616c6c65742063616e206e6f7420626560448201526a040c2c8c8e4cae6e64060f60ab1b60648201526084015b60405180910390fd5b600980546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915585546001600160a01b031916948716948517909555838352918290208054909416600117909355519081527f51482c4aa4bc4e2beea6780677baa5397a7654163858238af5593173c347d9b791015b60405180910390a150565b6109d2611742565b6001600160a01b038216610a385760405162461bcd60e51b815260206004820152602760248201527f284e65772920414d4d20616464726573732063616e206e6f74206265206164646044820152660e4cae6e64060f60cb1b606482015260840161093d565b6001600160a01b0382165f818152600d6020908152604091829020805460ff1916851515908117909155600c80546001600160a01b0319168517905591519182527f52f7750de642e169ff687a199cc8453a96d938130a797c0a11ea42a4d1659d8791015b60405180910390a25050565b610ab1611742565b4780610af45760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b604482015260640161093d565b6009546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610b3e576040519150601f19603f3d011682016040523d82523d5f602084013e610b43565b606091505b5050905080610b8a5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161093d565b5050565b5f33610b9b8582856118bf565b610ba6858585611937565b506001949350505050565b610bb9611742565b60145460ff1615610c0c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161093d565b6014805460ff191660011790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b610c4b611742565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e77f14f2f2fd349500bebec446fdae4cbdafd5f17d18997a7382d3cb8e8c53b906020016109bf565b5f336108c3818585610cab838361169f565b610cb591906122b6565b61179c565b610cc2611742565b683635c9adc5dea00000811015610d105760405162461bcd60e51b81526020600482015260126024820152713130303020697320746865206d696e6d756d60701b604482015260640161093d565b600780549082905560408051828152602081018490527f046078a3b350ab7ef8b49720ee84ad777c5172459d33cff8e353c3b9b04757ea91015b60405180910390a15050565b610d5e611742565b80610d6983856122b6565b610d7391906122b6565b620186a014610dd55760405162461bcd60e51b815260206004820152602860248201527f53756d6d6564206665652073686172657320617265206e6f7420313030252028604482015267313030303030292160c01b606482015260840161093d565b60108390556011829055601281905560408051848152602081018490529081018290527f192b126d6d86e50716742827858f2c3edda14906a341f1fc234c27fc1e4c8f8b9060600160405180910390a1505050565b610e32611742565b6001600160a01b038216610e9d5760405162461bcd60e51b815260206004820152602c60248201527f284e657729206578636c7564656420616464726573732063616e206e6f74206260448201526b0ca40c2c8c8e4cae6e64060f60a31b606482015260840161093d565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f33e99dbd8a2fdf021abaf8531c98838a37f8e85fd3cbf0e897047074f9c4ecf49101610a9d565b610efc611742565b610f055f611c33565b565b610f0f611742565b6001600160a01b038116610f705760405162461bcd60e51b815260206004820152602260248201527f4e65772074726561737572792063616e206e6f74206265206164647265737320604482015261060f60f31b606482015260840161093d565b600880546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915585546001600160a01b031916948716948517909555838352918290208054909416600117909355519081527f302f069e87193d33e629b90572b0aff2bdb294f6ec0967d7881bbc314feb3ac191016109bf565b610ff5611742565b600e5482036110515760405162461bcd60e51b815260206004820152602260248201527f4275792066656520697320616c726561647920746861742070657263656e7461604482015261676560f01b606482015260840161093d565b600f5481036110ae5760405162461bcd60e51b815260206004820152602360248201527f53656c6c2066656520697320616c726561647920746861742070657263656e7460448201526261676560e81b606482015260840161093d565b600e829055600f81905560408051838152602081018390527f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e379101610d4a565b6060600480546108359061226a565b5f338161110a828661169f565b90508381101561116a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161093d565b610ba6828686840361179c565b5f336108c3818585611937565b6005805460ff60a01b1916600160a01b179055305f908152602081905260408120549050805f036111f75760405162461bcd60e51b815260206004820152601960248201527f546f6b656e2062616c616e63652063616e6e6f74206265203000000000000000604482015260640161093d565b6010545f9082901561123957620186a0600260105461121691906122c9565b61122090856122e8565b61122a91906122c9565b915061123682846122ff565b90505b61124281611c84565b475f8190036112935760405162461bcd60e51b815260206004820152601760248201527f4554482062616c616e63652063616e6e6f742062652030000000000000000000604482015260640161093d565b601054156112d2575f620186a060026010546112af91906122c9565b6112b990846122e8565b6112c391906122c9565b90506112d0308583611dd4565b505b6011541561139f575f620186a0601154836112ed91906122e8565b6112f791906122c9565b6008546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611346576040519150601f19603f3d011682016040523d82523d5f602084013e61134b565b606091505b505090508061139c5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f207472656173757279206661696c65642e00000000604482015260640161093d565b50505b6012541561146c575f620186a0601254836113ba91906122e8565b6113c491906122c9565b6009546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611413576040519150601f19603f3d011682016040523d82523d5f602084013e611418565b606091505b50509050806114695760405162461bcd60e51b815260206004820152601760248201527f5472616e7366657220746f20646576206661696c65642e000000000000000000604482015260640161093d565b50505b6040517f073f67f6b2a495a773c8f33582c762d9c1a89fec310d1e2ce2808b4ff65d8290905f90a150506005805460ff60a01b191690555050565b6114af611742565b69d3c21bcecceda100000081101561152f5760405162461bcd60e51b815260206004820152603760248201527f4d61782077616c6c6574206973206c65737320746865206d696e696d756d207460448201527f68656e20302c3125206f6620746f74616c537570706c79000000000000000000606482015260840161093d565b600680549082905560408051828152602081018490527f35f2577625659032d553fbc001320996b756a5dae410a0b74e931934e020464b9101610d4a565b611575611742565b600b54604080516315ab88c960e31b815290515f926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e09190612312565b6040516370a0823160e01b81523060048201529091506001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190612238565b6040518263ffffffff1660e01b815260040161166f91815260200190565b5f604051808303815f87803b158015611686575f80fd5b505af1158015611698573d5f803e3d5ffd5b5050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6116d1611742565b6001600160a01b0381166117365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b61173f81611c33565b50565b6005546001600160a01b03163314610f055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b6001600160a01b0383166117fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093d565b6001600160a01b03821661185f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6118ca848461169f565b90505f19811461193157818110156119245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161093d565b611931848484840361179c565b50505050565b60145460ff168061195557506005546001600160a01b038481169116145b6119ad5760405162461bcd60e51b815260206004820152602360248201527f54726164696e672077696c6c20656e61626c65207768656e20414d4d206973206044820152621cd95d60ea1b606482015260840161093d565b6001600160a01b0383165f9081526013602052604090205460ff16806119ea57506001600160a01b0382165f9081526013602052604090205460ff165b156119fa57610821838383611edd565b6001600160a01b0383165f908152600d6020526040902054819060ff1680611a3957506001600160a01b0383165f908152600d602052604090205460ff165b15611bce576001600160a01b0384165f908152600d602052604081205460ff1615611a7d57620186a0600e5483611a7091906122e8565b611a7a91906122c9565b90505b6001600160a01b0384165f908152600d602052604090205460ff1615611af357620186a0600f5483611aaf91906122e8565b611ab991906122c9565b600554909150600160a01b900460ff16158015611ae65750600754305f9081526020819052604090205410155b15611af357611af3611184565b611afd81836122ff565b6001600160a01b0386165f908152600d602052604090205490925060ff1615611bc1576006546001600160a01b0386165f908152600d60205260409020548390611b699060ff16611b4e5787610514565b866001600160a01b03165f9081526020819052604090205490565b611b7391906122b6565b1115611bc15760405162461bcd60e51b815260206004820152601e60248201527f7472616e73616374696f6e2065786365656473206d61782077616c6c65740000604482015260640161093d565b611bcc853083611edd565b505b6001600160a01b0383165f908152600d602052604090205460ff168015611bff5750600554600160a01b900460ff16155b8015611c1b5750600754305f9081526020819052604090205410155b15611c2857611c28611184565b611931848483611edd565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611cb757611cb761232d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d329190612312565b81600181518110611d4557611d4561232d565b6001600160a01b039283166020918202929092010152600b54611d6b913091168461179c565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611da39085905f90869030904290600401612341565b5f604051808303815f87803b158015611dba575f80fd5b505af1158015611dcc573d5f803e3d5ffd5b505050505050565b600b5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303815f875af1158015611e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e48919061224f565b50600b54600a5460405163f305d71960e01b81526001600160a01b038681166004830152602482018690525f60448301819052606483015291821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611eb8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dcc91906123b0565b6001600160a01b038316611f415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161093d565b6001600160a01b038216611fa35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161093d565b6001600160a01b0383165f908152602081905260409020548181101561201a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161093d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611931565b6001600160a01b038116811461173f575f80fd5b5f602082840312156120a3575f80fd5b81356120ae8161207f565b9392505050565b5f6020808352835180828501525f5b818110156120e0578581018301518582016040015282016120c4565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215612111575f80fd5b823561211c8161207f565b946020939093013593505050565b801515811461173f575f80fd5b5f8060408385031215612148575f80fd5b82356121538161207f565b915060208301356121638161212a565b809150509250929050565b5f805f60608486031215612180575f80fd5b833561218b8161207f565b9250602084013561219b8161207f565b929592945050506040919091013590565b5f602082840312156121bc575f80fd5b5035919050565b5f805f606084860312156121d5575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156121fd575f80fd5b50508035926020909101359150565b5f806040838503121561221d575f80fd5b82356122288161207f565b915060208301356121638161207f565b5f60208284031215612248575f80fd5b5051919050565b5f6020828403121561225f575f80fd5b81516120ae8161212a565b600181811c9082168061227e57607f821691505b60208210810361229c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108c9576108c96122a2565b5f826122e357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108c9576108c96122a2565b818103818111156108c9576108c96122a2565b5f60208284031215612322575f80fd5b81516120ae8161207f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561238f5784516001600160a01b03168352938301939183019160010161236a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123c2575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f13b347f72d9bf2c98c55ade703f9835cd8a7d0ff47818ca4d248a82187d2df964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061024b575f3560e01c806365c5570f11610134578063a457c2d7116100b3578063c38ec0b611610078578063c38ec0b614610699578063d368371e146106ad578063dd62ed3e146106c2578063f2fde38b146106e1578063f887ea4014610700578063f8b45b051461071f575f80fd5b8063a457c2d714610613578063a9059cbb14610632578063aed04fae14610651578063ba69ebed14610666578063c18bc1951461067a575f80fd5b80638da5cb5b116100f95780638da5cb5b1461057657806390aa2ea61461059357806391cca3db146105c157806393e60845146105e057806395d89b41146105ff575f80fd5b806365c5570f146104db57806370a08231146104fa578063715018a61461052e5780637796ff3714610542578063809d458d14610557575f80fd5b8063293230b8116101cb578063470624021161019057806347062402146104315780634ada218b1461044657806350b9a9f51461045f57806358c9b0471461047e57806361d027b31461049d5780636303516c146104bc575f80fd5b8063293230b8146103af5780632b14ca56146103c3578063313ce567146103d85780633190bb8a146103f35780633950935114610412575f80fd5b806318160ddd1161021157806318160ddd1461032a5780631816467f1461033e5780631fd0d9a51461035d57806320800a001461037c57806323b872dd14610390575f80fd5b8062ae3bf81461025657806306fdde0314610277578063095ea7b3146102a15780630ac249d5146102d057806315291cd414610307575f80fd5b3661025257005b5f80fd5b348015610261575f80fd5b50610275610270366004612093565b610734565b005b348015610282575f80fd5b5061028b610826565b60405161029891906120b5565b60405180910390f35b3480156102ac575f80fd5b506102c06102bb366004612100565b6108b6565b6040519015158152602001610298565b3480156102db575f80fd5b50600c546102ef906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b348015610312575f80fd5b5061031c60105481565b604051908152602001610298565b348015610335575f80fd5b5060025461031c565b348015610349575f80fd5b50610275610358366004612093565b6108cf565b348015610368575f80fd5b50610275610377366004612137565b6109ca565b348015610387575f80fd5b50610275610aa9565b34801561039b575f80fd5b506102c06103aa36600461216e565b610b8e565b3480156103ba575f80fd5b50610275610bb1565b3480156103ce575f80fd5b5061031c600f5481565b3480156103e3575f80fd5b5060405160128152602001610298565b3480156103fe575f80fd5b5061027561040d366004612093565b610c43565b34801561041d575f80fd5b506102c061042c366004612100565b610c99565b34801561043c575f80fd5b5061031c600e5481565b348015610451575f80fd5b506014546102c09060ff1681565b34801561046a575f80fd5b506102756104793660046121ac565b610cba565b348015610489575f80fd5b506102756104983660046121c3565b610d56565b3480156104a8575f80fd5b506008546102ef906001600160a01b031681565b3480156104c7575f80fd5b50600a546102ef906001600160a01b031681565b3480156104e6575f80fd5b506102756104f5366004612137565b610e2a565b348015610505575f80fd5b5061031c610514366004612093565b6001600160a01b03165f9081526020819052604090205490565b348015610539575f80fd5b50610275610ef4565b34801561054d575f80fd5b5061031c60115481565b348015610562575f80fd5b50610275610571366004612093565b610f07565b348015610581575f80fd5b506005546001600160a01b03166102ef565b34801561059e575f80fd5b506102c06105ad366004612093565b600d6020525f908152604090205460ff1681565b3480156105cc575f80fd5b506009546102ef906001600160a01b031681565b3480156105eb575f80fd5b506102756105fa3660046121ec565b610fed565b34801561060a575f80fd5b5061028b6110ee565b34801561061e575f80fd5b506102c061062d366004612100565b6110fd565b34801561063d575f80fd5b506102c061064c366004612100565b611177565b34801561065c575f80fd5b5061031c60125481565b348015610671575f80fd5b50610275611184565b348015610685575f80fd5b506102756106943660046121ac565b6114a7565b3480156106a4575f80fd5b5061027561156d565b3480156106b8575f80fd5b5061031c60075481565b3480156106cd575f80fd5b5061031c6106dc36600461220c565b61169f565b3480156106ec575f80fd5b506102756106fb366004612093565b6116c9565b34801561070b575f80fd5b50600b546102ef906001600160a01b031681565b34801561072a575f80fd5b5061031c60065481565b61073c611742565b6009546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015610791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b59190612238565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156107fd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610821919061224f565b505050565b6060600380546108359061226a565b80601f01602080910402602001604051908101604052809291908181526020018280546108619061226a565b80156108ac5780601f10610883576101008083540402835291602001916108ac565b820191905f5260205f20905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b5f336108c381858561179c565b60019150505b92915050565b6108d7611742565b6001600160a01b0381166109465760405162461bcd60e51b815260206004820152602b60248201527f4e6577206f7065726174696f6e732077616c6c65742063616e206e6f7420626560448201526a040c2c8c8e4cae6e64060f60ab1b60648201526084015b60405180910390fd5b600980546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915585546001600160a01b031916948716948517909555838352918290208054909416600117909355519081527f51482c4aa4bc4e2beea6780677baa5397a7654163858238af5593173c347d9b791015b60405180910390a150565b6109d2611742565b6001600160a01b038216610a385760405162461bcd60e51b815260206004820152602760248201527f284e65772920414d4d20616464726573732063616e206e6f74206265206164646044820152660e4cae6e64060f60cb1b606482015260840161093d565b6001600160a01b0382165f818152600d6020908152604091829020805460ff1916851515908117909155600c80546001600160a01b0319168517905591519182527f52f7750de642e169ff687a199cc8453a96d938130a797c0a11ea42a4d1659d8791015b60405180910390a25050565b610ab1611742565b4780610af45760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b604482015260640161093d565b6009546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610b3e576040519150601f19603f3d011682016040523d82523d5f602084013e610b43565b606091505b5050905080610b8a5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161093d565b5050565b5f33610b9b8582856118bf565b610ba6858585611937565b506001949350505050565b610bb9611742565b60145460ff1615610c0c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161093d565b6014805460ff191660011790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b610c4b611742565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e77f14f2f2fd349500bebec446fdae4cbdafd5f17d18997a7382d3cb8e8c53b906020016109bf565b5f336108c3818585610cab838361169f565b610cb591906122b6565b61179c565b610cc2611742565b683635c9adc5dea00000811015610d105760405162461bcd60e51b81526020600482015260126024820152713130303020697320746865206d696e6d756d60701b604482015260640161093d565b600780549082905560408051828152602081018490527f046078a3b350ab7ef8b49720ee84ad777c5172459d33cff8e353c3b9b04757ea91015b60405180910390a15050565b610d5e611742565b80610d6983856122b6565b610d7391906122b6565b620186a014610dd55760405162461bcd60e51b815260206004820152602860248201527f53756d6d6564206665652073686172657320617265206e6f7420313030252028604482015267313030303030292160c01b606482015260840161093d565b60108390556011829055601281905560408051848152602081018490529081018290527f192b126d6d86e50716742827858f2c3edda14906a341f1fc234c27fc1e4c8f8b9060600160405180910390a1505050565b610e32611742565b6001600160a01b038216610e9d5760405162461bcd60e51b815260206004820152602c60248201527f284e657729206578636c7564656420616464726573732063616e206e6f74206260448201526b0ca40c2c8c8e4cae6e64060f60a31b606482015260840161093d565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f33e99dbd8a2fdf021abaf8531c98838a37f8e85fd3cbf0e897047074f9c4ecf49101610a9d565b610efc611742565b610f055f611c33565b565b610f0f611742565b6001600160a01b038116610f705760405162461bcd60e51b815260206004820152602260248201527f4e65772074726561737572792063616e206e6f74206265206164647265737320604482015261060f60f31b606482015260840161093d565b600880546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915585546001600160a01b031916948716948517909555838352918290208054909416600117909355519081527f302f069e87193d33e629b90572b0aff2bdb294f6ec0967d7881bbc314feb3ac191016109bf565b610ff5611742565b600e5482036110515760405162461bcd60e51b815260206004820152602260248201527f4275792066656520697320616c726561647920746861742070657263656e7461604482015261676560f01b606482015260840161093d565b600f5481036110ae5760405162461bcd60e51b815260206004820152602360248201527f53656c6c2066656520697320616c726561647920746861742070657263656e7460448201526261676560e81b606482015260840161093d565b600e829055600f81905560408051838152602081018390527f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e379101610d4a565b6060600480546108359061226a565b5f338161110a828661169f565b90508381101561116a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161093d565b610ba6828686840361179c565b5f336108c3818585611937565b6005805460ff60a01b1916600160a01b179055305f908152602081905260408120549050805f036111f75760405162461bcd60e51b815260206004820152601960248201527f546f6b656e2062616c616e63652063616e6e6f74206265203000000000000000604482015260640161093d565b6010545f9082901561123957620186a0600260105461121691906122c9565b61122090856122e8565b61122a91906122c9565b915061123682846122ff565b90505b61124281611c84565b475f8190036112935760405162461bcd60e51b815260206004820152601760248201527f4554482062616c616e63652063616e6e6f742062652030000000000000000000604482015260640161093d565b601054156112d2575f620186a060026010546112af91906122c9565b6112b990846122e8565b6112c391906122c9565b90506112d0308583611dd4565b505b6011541561139f575f620186a0601154836112ed91906122e8565b6112f791906122c9565b6008546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611346576040519150601f19603f3d011682016040523d82523d5f602084013e61134b565b606091505b505090508061139c5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f207472656173757279206661696c65642e00000000604482015260640161093d565b50505b6012541561146c575f620186a0601254836113ba91906122e8565b6113c491906122c9565b6009546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611413576040519150601f19603f3d011682016040523d82523d5f602084013e611418565b606091505b50509050806114695760405162461bcd60e51b815260206004820152601760248201527f5472616e7366657220746f20646576206661696c65642e000000000000000000604482015260640161093d565b50505b6040517f073f67f6b2a495a773c8f33582c762d9c1a89fec310d1e2ce2808b4ff65d8290905f90a150506005805460ff60a01b191690555050565b6114af611742565b69d3c21bcecceda100000081101561152f5760405162461bcd60e51b815260206004820152603760248201527f4d61782077616c6c6574206973206c65737320746865206d696e696d756d207460448201527f68656e20302c3125206f6620746f74616c537570706c79000000000000000000606482015260840161093d565b600680549082905560408051828152602081018490527f35f2577625659032d553fbc001320996b756a5dae410a0b74e931934e020464b9101610d4a565b611575611742565b600b54604080516315ab88c960e31b815290515f926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e09190612312565b6040516370a0823160e01b81523060048201529091506001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa15801561162d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190612238565b6040518263ffffffff1660e01b815260040161166f91815260200190565b5f604051808303815f87803b158015611686575f80fd5b505af1158015611698573d5f803e3d5ffd5b5050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6116d1611742565b6001600160a01b0381166117365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b61173f81611c33565b50565b6005546001600160a01b03163314610f055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b6001600160a01b0383166117fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093d565b6001600160a01b03821661185f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6118ca848461169f565b90505f19811461193157818110156119245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161093d565b611931848484840361179c565b50505050565b60145460ff168061195557506005546001600160a01b038481169116145b6119ad5760405162461bcd60e51b815260206004820152602360248201527f54726164696e672077696c6c20656e61626c65207768656e20414d4d206973206044820152621cd95d60ea1b606482015260840161093d565b6001600160a01b0383165f9081526013602052604090205460ff16806119ea57506001600160a01b0382165f9081526013602052604090205460ff165b156119fa57610821838383611edd565b6001600160a01b0383165f908152600d6020526040902054819060ff1680611a3957506001600160a01b0383165f908152600d602052604090205460ff165b15611bce576001600160a01b0384165f908152600d602052604081205460ff1615611a7d57620186a0600e5483611a7091906122e8565b611a7a91906122c9565b90505b6001600160a01b0384165f908152600d602052604090205460ff1615611af357620186a0600f5483611aaf91906122e8565b611ab991906122c9565b600554909150600160a01b900460ff16158015611ae65750600754305f9081526020819052604090205410155b15611af357611af3611184565b611afd81836122ff565b6001600160a01b0386165f908152600d602052604090205490925060ff1615611bc1576006546001600160a01b0386165f908152600d60205260409020548390611b699060ff16611b4e5787610514565b866001600160a01b03165f9081526020819052604090205490565b611b7391906122b6565b1115611bc15760405162461bcd60e51b815260206004820152601e60248201527f7472616e73616374696f6e2065786365656473206d61782077616c6c65740000604482015260640161093d565b611bcc853083611edd565b505b6001600160a01b0383165f908152600d602052604090205460ff168015611bff5750600554600160a01b900460ff16155b8015611c1b5750600754305f9081526020819052604090205410155b15611c2857611c28611184565b611931848483611edd565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611cb757611cb761232d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d329190612312565b81600181518110611d4557611d4561232d565b6001600160a01b039283166020918202929092010152600b54611d6b913091168461179c565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611da39085905f90869030904290600401612341565b5f604051808303815f87803b158015611dba575f80fd5b505af1158015611dcc573d5f803e3d5ffd5b505050505050565b600b5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303815f875af1158015611e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e48919061224f565b50600b54600a5460405163f305d71960e01b81526001600160a01b038681166004830152602482018690525f60448301819052606483015291821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611eb8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dcc91906123b0565b6001600160a01b038316611f415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161093d565b6001600160a01b038216611fa35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161093d565b6001600160a01b0383165f908152602081905260409020548181101561201a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161093d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611931565b6001600160a01b038116811461173f575f80fd5b5f602082840312156120a3575f80fd5b81356120ae8161207f565b9392505050565b5f6020808352835180828501525f5b818110156120e0578581018301518582016040015282016120c4565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215612111575f80fd5b823561211c8161207f565b946020939093013593505050565b801515811461173f575f80fd5b5f8060408385031215612148575f80fd5b82356121538161207f565b915060208301356121638161212a565b809150509250929050565b5f805f60608486031215612180575f80fd5b833561218b8161207f565b9250602084013561219b8161207f565b929592945050506040919091013590565b5f602082840312156121bc575f80fd5b5035919050565b5f805f606084860312156121d5575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156121fd575f80fd5b50508035926020909101359150565b5f806040838503121561221d575f80fd5b82356122288161207f565b915060208301356121638161207f565b5f60208284031215612248575f80fd5b5051919050565b5f6020828403121561225f575f80fd5b81516120ae8161212a565b600181811c9082168061227e57607f821691505b60208210810361229c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108c9576108c96122a2565b5f826122e357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108c9576108c96122a2565b818103818111156108c9576108c96122a2565b5f60208284031215612322575f80fd5b81516120ae8161207f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561238f5784516001600160a01b03168352938301939183019160010161236a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123c2575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f13b347f72d9bf2c98c55ade703f9835cd8a7d0ff47818ca4d248a82187d2df964736f6c63430008140033

Deployed Bytecode Sourcemap

9061:10397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19241:212;;;;;;;;;;-1:-1:-1;19241:212:0;;;;;:::i;:::-;;:::i;:::-;;4340:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5182:201;;;;;;;;;;-1:-1:-1;5182:201:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;5182:201:0;1298:187:1;9453:42:0;;;;;;;;;;-1:-1:-1;9453:42:0;;;;-1:-1:-1;;;;;9453:42:0;;;;;;-1:-1:-1;;;;;1654:55:1;;;1636:74;;1624:2;1609:18;9453:42:0;1490:226:1;9624:29:0;;;;;;;;;;;;;;;;;;;1867:25:1;;;1855:2;1840:18;9624:29:0;1721:177:1;4607:92:0;;;;;;;;;;-1:-1:-1;4685:12:0;;4607:92;;14227:347;;;;;;;;;;-1:-1:-1;14227:347:0;;;;;:::i;:::-;;:::i;11842:327::-;;;;;;;;;;-1:-1:-1;11842:327:0;;;;;:::i;:::-;;:::i;18969:264::-;;;;;;;;;;;;;:::i;3393:261::-;;;;;;;;;;-1:-1:-1;3393:261:0;;;;;:::i;:::-;;:::i;14745:180::-;;;;;;;;;;;;;:::i;9595:22::-;;;;;;;;;;;;;;;;4524:77;;;;;;;;;;-1:-1:-1;4524:77:0;;4597:2;3016:36:1;;3004:2;2989:18;4524:77:0;2874:184:1;14582:155:0;;;;;;;;;;-1:-1:-1;14582:155:0;;;;;:::i;:::-;;:::i;3662:238::-;;;;;;;;;;-1:-1:-1;3662:238:0;;;;;:::i;:::-;;:::i;9567:21::-;;;;;;;;;;;;;;;;9776:34;;;;;;;;;;-1:-1:-1;9776:34:0;;;;;;;;12177:328;;;;;;;;;;-1:-1:-1;12177:328:0;;;;;:::i;:::-;;:::i;13328:530::-;;;;;;;;;;-1:-1:-1;13328:530:0;;;;;:::i;:::-;;:::i;9340:23::-;;;;;;;;;;-1:-1:-1;9340:23:0;;;;-1:-1:-1;;;;;9340:23:0;;;9395;;;;;;;;;;-1:-1:-1;9395:23:0;;;;-1:-1:-1;;;;;9395:23:0;;;11518:316;;;;;;;;;;-1:-1:-1;11518:316:0;;;;;:::i;:::-;;:::i;4705:111::-;;;;;;;;;;-1:-1:-1;4705:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;4796:18:0;4779:7;4796:18;;;;;;;;;;;;4705:111;8308:103;;;;;;;;;;;;;:::i;9660:28::-;;;;;;;;;;;;;;;;13866:353;;;;;;;;;;-1:-1:-1;13866:353:0;;;;;:::i;:::-;;:::i;8628:87::-;;;;;;;;;;-1:-1:-1;8701:6:0;;-1:-1:-1;;;;;8701:6:0;8628:87;;9502:56;;;;;;;;;;-1:-1:-1;9502:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9370:18;;;;;;;;;;-1:-1:-1;9370:18:0;;;;-1:-1:-1;;;;;9370:18:0;;;12846:474;;;;;;;;;;-1:-1:-1;12846:474:0;;;;;:::i;:::-;;:::i;4430:88::-;;;;;;;;;;;;;:::i;3908:424::-;;;;;;;;;;-1:-1:-1;3908:424:0;;;;;:::i;:::-;;:::i;4822:193::-;;;;;;;;;;-1:-1:-1;4822:193:0;;;;;:::i;:::-;;:::i;9695:23::-;;;;;;;;;;;;;;;;16438:1485;;;;;;;;;;;;;:::i;12513:325::-;;;;;;;;;;-1:-1:-1;12513:325:0;;;;;:::i;:::-;;:::i;18758:203::-;;;;;;;;;;;;;:::i;9294:37::-;;;;;;;;;;;;;;;;5023:151;;;;;;;;;;-1:-1:-1;5023:151:0;;;;;:::i;:::-;;:::i;8419:201::-;;;;;;;;;;-1:-1:-1;8419:201:0;;;;;:::i;:::-;;:::i;9425:21::-;;;;;;;;;;-1:-1:-1;9425:21:0;;;;-1:-1:-1;;;;;9425:21:0;;;9263:24;;;;;;;;;;;;;;;;19241:212;8267:13;:11;:13::i;:::-;19400:3:::1;::::0;19406:38:::1;::::0;-1:-1:-1;;;19406:38:0;;19438:4:::1;19406:38;::::0;::::1;1636:74:1::0;19345:12:0;;-1:-1:-1;;;;;19369:22:0;;::::1;::::0;::::1;::::0;19400:3;;;::::1;::::0;19369:22;;19406:23:::1;::::0;1609:18:1;;19406:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19369:76;::::0;-1:-1:-1;;;;;;19369:76:0::1;::::0;;;;;;-1:-1:-1;;;;;4842:55:1;;;19369:76:0::1;::::0;::::1;4824:74:1::0;4914:18;;;4907:34;4797:18;;19369:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19304:149;19241:212:::0;:::o;4340:84::-;4394:13;4417:5;4410:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4340:84;:::o;5182:201::-;5265:4;736:10;5321:32;736:10;5337:7;5346:6;5321:8;:32::i;:::-;5371:4;5364:11;;;5182:201;;;;;:::o;14227:347::-;8267:13;:11;:13::i;:::-;-1:-1:-1;;;;;14310:26:0;::::1;14302:82;;;::::0;-1:-1:-1;;;14302:82:0;;5789:2:1;14302:82:0::1;::::0;::::1;5771:21:1::0;5828:2;5808:18;;;5801:30;5867:34;5847:18;;;5840:62;-1:-1:-1;;;5918:18:1;;;5911:41;5969:19;;14302:82:0::1;;;;;;;;;14421:3;::::0;;-1:-1:-1;;;;;14421:3:0;;::::1;14429:5;14395:31:::0;;;:17:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;14395:39:0;;::::1;::::0;;;14445:18;;-1:-1:-1;;;;;;14445:18:0::1;::::0;;::::1;::::0;;::::1;::::0;;;14474:40;;;;;;;:47;;;;::::1;-1:-1:-1::0;14474:47:0::1;::::0;;;14537:29;1636:74:1;;;14537:29:0::1;::::0;1609:18:1;14537:29:0::1;;;;;;;;14227:347:::0;:::o;11842:327::-;8267:13;:11;:13::i;:::-;-1:-1:-1;;;;;11946:24:0;::::1;11938:76;;;::::0;-1:-1:-1;;;11938:76:0;;6201:2:1;11938:76:0::1;::::0;::::1;6183:21:1::0;6240:2;6220:18;;;6213:30;6279:34;6259:18;;;6252:62;-1:-1:-1;;;6330:18:1;;;6323:37;6377:19;;11938:76:0::1;5999:403:1::0;11938:76:0::1;-1:-1:-1::0;;;;;12025:36:0;::::1;;::::0;;;:24:::1;:36;::::0;;;;;;;;:44;;-1:-1:-1;;12025:44:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12080:27:::1;:40:::0;;-1:-1:-1;;;;;;12080:40:0::1;::::0;::::1;::::0;;12136:25;;1438:41:1;;;12136:25:0::1;::::0;1411:18:1;12136:25:0::1;;;;;;;;11842:327:::0;;:::o;18969:264::-;8267:13;:11;:13::i;:::-;19039:21:::1;19079:12:::0;19071:43:::1;;;::::0;-1:-1:-1;;;19071:43:0;;6609:2:1;19071:43:0::1;::::0;::::1;6591:21:1::0;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:1;;;6660:48;6725:18;;19071:43:0::1;6407:342:1::0;19071:43:0::1;19145:3;::::0;:30:::1;::::0;19128:12:::1;::::0;-1:-1:-1;;;;;19145:3:0::1;::::0;19162:8;;19128:12;19145:30;19128:12;19145:30;19162:8;19145:3;:30:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19127:48;;;19194:7;19186:39;;;::::0;-1:-1:-1;;;19186:39:0;;7166:2:1;19186:39:0::1;::::0;::::1;7148:21:1::0;7205:2;7185:18;;;7178:30;-1:-1:-1;;;7224:18:1;;;7217:49;7283:18;;19186:39:0::1;6964:343:1::0;19186:39:0::1;19009:224;;18969:264::o:0;3393:261::-;3490:4;736:10;3548:38;3564:4;736:10;3579:6;3548:15;:38::i;:::-;3597:27;3607:4;3613:2;3617:6;3597:9;:27::i;:::-;-1:-1:-1;3642:4:0;;3393:261;-1:-1:-1;;;;3393:261:0:o;14745:180::-;8267:13;:11;:13::i;:::-;14808:14:::1;::::0;::::1;;14807:15;14799:54;;;::::0;-1:-1:-1;;;14799:54:0;;7514:2:1;14799:54:0::1;::::0;::::1;7496:21:1::0;7553:2;7533:18;;;7526:30;7592:28;7572:18;;;7565:56;7638:18;;14799:54:0::1;7312:350:1::0;14799:54:0::1;14864:14;:21:::0;;-1:-1:-1;;14864:21:0::1;14881:4;14864:21;::::0;;14901:16:::1;::::0;::::1;::::0;14864:14:::1;::::0;14901:16:::1;14745:180::o:0;14582:155::-;8267:13;:11;:13::i;:::-;14664:8:::1;:22:::0;;-1:-1:-1;;;;;;14664:22:0::1;-1:-1:-1::0;;;;;14664:22:0;::::1;::::0;;::::1;::::0;;;14702:27:::1;::::0;1636:74:1;;;14702:27:0::1;::::0;1624:2:1;1609:18;14702:27:0::1;1490:226:1::0;3662:238:0;3750:4;736:10;3806:64;736:10;3822:7;3859:10;3831:25;736:10;3822:7;3831:9;:25::i;:::-;:38;;;;:::i;:::-;3806:8;:64::i;12177:328::-;8267:13;:11;:13::i;:::-;12288:11:::1;12272:12;:27;;12264:58;;;::::0;-1:-1:-1;;;12264:58:0;;8131:2:1;12264:58:0::1;::::0;::::1;8113:21:1::0;8170:2;8150:18;;;8143:30;-1:-1:-1;;;8189:18:1;;;8182:48;8247:18;;12264:58:0::1;7929:342:1::0;12264:58:0::1;12357:22;::::0;;12390:37;;;;12443:54:::1;::::0;;8450:25:1;;;8506:2;8491:18;;8484:34;;;12443:54:0::1;::::0;8423:18:1;12443:54:0::1;;;;;;;;12253:252;12177:328:::0;:::o;13328:530::-;8267:13;:11;:13::i;:::-;13508:11;13469:36:::1;13489:16:::0;13469:17;:36:::1;:::i;:::-;:50;;;;:::i;:::-;13523:6;13469:60;13461:136;;;::::0;-1:-1:-1;;;13461:136:0;;8731:2:1;13461:136:0::1;::::0;::::1;8713:21:1::0;8770:2;8750:18;;;8743:30;8809:34;8789:18;;;8782:62;-1:-1:-1;;;8860:18:1;;;8853:38;8908:19;;13461:136:0::1;8529:404:1::0;13461:136:0::1;13610:14;:34:::0;;;13655:13:::1;:32:::0;;;13698:8:::1;:22:::0;;;13738:112:::1;::::0;;9140:25:1;;;9196:2;9181:18;;9174:34;;;9224:18;;;9217:34;;;13738:112:0::1;::::0;9128:2:1;9113:18;13738:112:0::1;;;;;;;13328:530:::0;;;:::o;11518:316::-;8267:13;:11;:13::i;:::-;-1:-1:-1;;;;;11627:29:0;::::1;11619:86;;;::::0;-1:-1:-1;;;11619:86:0;;9464:2:1;11619:86:0::1;::::0;::::1;9446:21:1::0;9503:2;9483:18;;;9476:30;9542:34;9522:18;;;9515:62;-1:-1:-1;;;9593:18:1;;;9586:42;9645:19;;11619:86:0::1;9262:408:1::0;11619:86:0::1;-1:-1:-1::0;;;;;11716:34:0;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;;:47;;-1:-1:-1;;11716:47:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11779;;1438:41:1;;;11779:47:0::1;::::0;1411:18:1;11779:47:0::1;1298:187:1::0;8308:103:0;8267:13;:11;:13::i;:::-;8373:30:::1;8400:1;8373:18;:30::i;:::-;8308:103::o:0;13866:353::-;8267:13;:11;:13::i;:::-;-1:-1:-1;;;;;13953:25:0;::::1;13945:72;;;::::0;-1:-1:-1;;;13945:72:0;;9877:2:1;13945:72:0::1;::::0;::::1;9859:21:1::0;9916:2;9896:18;;;9889:30;9955:34;9935:18;;;9928:62;-1:-1:-1;;;10006:18:1;;;9999:32;10048:19;;13945:72:0::1;9675:398:1::0;13945:72:0::1;14054:8;::::0;;-1:-1:-1;;;;;14054:8:0;;::::1;14067:5;14028:36:::0;;;:17:::1;:36;::::0;;;;;;;:44;;-1:-1:-1;;14028:44:0;;::::1;::::0;;;14083:22;;-1:-1:-1;;;;;;14083:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;14116:39;;;;;;;:46;;;;::::1;-1:-1:-1::0;14116:46:0::1;::::0;;;14178:33;1636:74:1;;;14178:33:0::1;::::0;1609:18:1;14178:33:0::1;1490:226:1::0;12846:474:0;8267:13;:11;:13::i;:::-;13084:6:::1;;13071:9;:19:::0;13063:66:::1;;;::::0;-1:-1:-1;;;13063:66:0;;10983:2:1;13063:66:0::1;::::0;::::1;10965:21:1::0;11022:2;11002:18;;;10995:30;11061:34;11041:18;;;11034:62;-1:-1:-1;;;11112:18:1;;;11105:32;11154:19;;13063:66:0::1;10781:398:1::0;13063:66:0::1;13162:7;;13148:10;:21:::0;13140:69:::1;;;::::0;-1:-1:-1;;;13140:69:0;;11386:2:1;13140:69:0::1;::::0;::::1;11368:21:1::0;11425:2;11405:18;;;11398:30;11464:34;11444:18;;;11437:62;-1:-1:-1;;;11515:18:1;;;11508:33;11558:19;;13140:69:0::1;11184:399:1::0;13140:69:0::1;13222:6;:18:::0;;;13251:7:::1;:20:::0;;;13289:23:::1;::::0;;8450:25:1;;;8506:2;8491:18;;8484:34;;;13289:23:0::1;::::0;8423:18:1;13289:23:0::1;8276:248:1::0;4430:88:0;4486:13;4509:7;4502:14;;;;;:::i;3908:424::-;4001:4;736:10;4001:4;4084:25;736:10;4101:7;4084:9;:25::i;:::-;4057:52;;4148:15;4128:16;:35;;4120:85;;;;-1:-1:-1;;;4120:85:0;;11790:2:1;4120:85:0;;;11772:21:1;11829:2;11809:18;;;11802:30;11868:34;11848:18;;;11841:62;-1:-1:-1;;;11919:18:1;;;11912:35;11964:19;;4120:85:0;11588:401:1;4120:85:0;4233:60;4242:5;4249:7;4277:15;4258:16;:34;4233:8;:60::i;4822:193::-;4901:4;736:10;4957:28;736:10;4974:2;4978:6;4957:9;:28::i;16438:1485::-;9139:14;:21;;-1:-1:-1;;;;9139:21:0;-1:-1:-1;;;9139:21:0;;;16536:4:::1;-1:-1:-1::0;4796:18:0;;;;;;;;;;;16491:51:::1;;16561:16;16581:1;16561:21:::0;16553:59:::1;;;::::0;-1:-1:-1;;;16553:59:0;;12196:2:1;16553:59:0::1;::::0;::::1;12178:21:1::0;12235:2;12215:18;;;12208:30;12274:27;12254:18;;;12247:55;12319:18;;16553:59:0::1;11994:349:1::0;16553:59:0::1;16717:14;::::0;16623:24:::1;::::0;16684:16;;16717:19;16713:185:::1;;16816:6;16810:1;16793:14;;:18;;;;:::i;:::-;16773:39;::::0;:16;:39:::1;:::i;:::-;16772:50;;;;:::i;:::-;16753:69:::0;-1:-1:-1;16851:35:0::1;16753:69:::0;16851:16;:35:::1;:::i;:::-;16837:49;;16713:185;16910:30;16928:11;16910:17;:30::i;:::-;16972:21;16953:16;17014:13:::0;;;17006:49:::1;;;::::0;-1:-1:-1;;;17006:49:0;;13078:2:1;17006:49:0::1;::::0;::::1;13060:21:1::0;13117:2;13097:18;;;13090:30;13156:25;13136:18;;;13129:53;13199:18;;17006:49:0::1;12876:347:1::0;17006:49:0::1;17072:14;::::0;:19;17068:271:::1;;17108:24;17171:6;17165:1;17148:14;;:18;;;;:::i;:::-;17136:31;::::0;:8;:31:::1;:::i;:::-;17135:42;;;;:::i;:::-;17108:69;;17194:133;17237:4;17261:16;17296;17194;:133::i;:::-;17093:246;17068:271;17355:13;::::0;:18;17351:274:::1;;17390:23;17445:6;17428:13;;17417:8;:24;;;;:::i;:::-;17416:35;;;;:::i;:::-;17496:8;::::0;:42:::1;::::0;17390:61;;-1:-1:-1;17467:24:0::1;::::0;-1:-1:-1;;;;;17496:8:0;;::::1;::::0;17390:61;;17467:24;17496:42;17467:24;17496:42;17390:61;17496:8;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17466:72;;;17561:19;17553:60;;;::::0;-1:-1:-1;;;17553:60:0;;13430:2:1;17553:60:0::1;::::0;::::1;13412:21:1::0;13469:2;13449:18;;;13442:30;13508;13488:18;;;13481:58;13556:18;;17553:60:0::1;13228:352:1::0;17553:60:0::1;17375:250;;17351:274;17641:8;::::0;:13;17637:246:::1;;17671:18;17716:6;17704:8;;17693;:19;;;;:::i;:::-;17692:30;;;;:::i;:::-;17768:3;::::0;:32:::1;::::0;17671:51;;-1:-1:-1;17738:25:0::1;::::0;-1:-1:-1;;;;;17768:3:0;;::::1;::::0;17671:51;;17738:25;17768:32;17738:25;17768:32;17671:51;17768:3;:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17737:63;;;17823:20;17815:56;;;::::0;-1:-1:-1;;;17815:56:0;;13787:2:1;17815:56:0::1;::::0;::::1;13769:21:1::0;13826:2;13806:18;;;13799:30;13865:25;13845:18;;;13838:53;13908:18;;17815:56:0::1;13585:347:1::0;17815:56:0::1;17656:227;;17637:246;17900:15;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;9183:14:0;:22;;-1:-1:-1;;;;9183:22:0;;;-1:-1:-1;;16438:1485:0:o;12513:325::-;8267:13;:11;:13::i;:::-;12620:14:::1;12604:12;:30;;12596:98;;;::::0;-1:-1:-1;;;12596:98:0;;14139:2:1;12596:98:0::1;::::0;::::1;14121:21:1::0;14178:2;14158:18;;;14151:30;14217:34;14197:18;;;14190:62;14288:25;14268:18;;;14261:53;14331:19;;12596:98:0::1;13937:419:1::0;12596:98:0::1;12729:9;::::0;;12749:24;;;;12789:41:::1;::::0;;8450:25:1;;;8506:2;8491:18;;8484:34;;;12789:41:0::1;::::0;8423:18:1;12789:41:0::1;8276:248:1::0;18758:203:0;8267:13;:11;:13::i;:::-;18832:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18832:13:0;;;;18810:19:::1;::::0;-1:-1:-1;;;;;18832:6:0::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18898:44;::::0;-1:-1:-1;;;18898:44:0;;18936:4:::1;18898:44;::::0;::::1;1636:74:1::0;18810:35:0;;-1:-1:-1;;;;;;18856:27:0;::::1;::::0;::::1;::::0;;;18898:29:::1;::::0;1609:18:1;;18898:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18856:97;;;;;;;;;;;;;1867:25:1::0;;1855:2;1840:18;;1721:177;18856:97:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18799:162;18758:203::o:0;5023:151::-;-1:-1:-1;;;;;5139:18:0;;;5112:7;5139:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5023:151::o;8419:201::-;8267:13;:11;:13::i;:::-;-1:-1:-1;;;;;8508:22:0;::::1;8500:73;;;::::0;-1:-1:-1;;;8500:73:0;;14819:2:1;8500:73:0::1;::::0;::::1;14801:21:1::0;14858:2;14838:18;;;14831:30;14897:34;14877:18;;;14870:62;-1:-1:-1;;;14948:18:1;;;14941:36;14994:19;;8500:73:0::1;14617:402:1::0;8500:73:0::1;8584:28;8603:8;8584:18;:28::i;:::-;8419:201:::0;:::o;8723:132::-;8701:6;;-1:-1:-1;;;;;8701:6:0;736:10;8787:23;8779:68;;;;-1:-1:-1;;;8779:68:0;;15226:2:1;8779:68:0;;;15208:21:1;;;15245:18;;;15238:30;15304:34;15284:18;;;15277:62;15356:18;;8779:68:0;15024:356:1;7032:346:0;-1:-1:-1;;;;;7134:19:0;;7126:68;;;;-1:-1:-1;;;7126:68:0;;15587:2:1;7126:68:0;;;15569:21:1;15626:2;15606:18;;;15599:30;15665:34;15645:18;;;15638:62;-1:-1:-1;;;15716:18:1;;;15709:34;15760:19;;7126:68:0;15385:400:1;7126:68:0;-1:-1:-1;;;;;7213:21:0;;7205:68;;;;-1:-1:-1;;;7205:68:0;;15992:2:1;7205:68:0;;;15974:21:1;16031:2;16011:18;;;16004:30;16070:34;16050:18;;;16043:62;-1:-1:-1;;;16121:18:1;;;16114:32;16163:19;;7205:68:0;15790:398:1;7205:68:0;-1:-1:-1;;;;;7286:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7338:32;;1867:25:1;;;7338:32:0;;1840:18:1;7338:32:0;;;;;;;7032:346;;;:::o;7386:407::-;7487:24;7514:25;7524:5;7531:7;7514:9;:25::i;:::-;7487:52;;-1:-1:-1;;7554:16:0;:37;7550:236;;7636:6;7616:16;:26;;7608:68;;;;-1:-1:-1;;;7608:68:0;;16395:2:1;7608:68:0;;;16377:21:1;16434:2;16414:18;;;16407:30;16473:31;16453:18;;;16446:59;16522:18;;7608:68:0;16193:353:1;7608:68:0;7712:51;7721:5;7728:7;7756:6;7737:16;:25;7712:8;:51::i;:::-;7476:317;7386:407;;;:::o;14933:1497::-;15031:14;;;;;:33;;-1:-1:-1;8701:6:0;;-1:-1:-1;;;;;15049:15:0;;;8701:6;;15049:15;15031:33;15023:81;;;;-1:-1:-1;;;15023:81:0;;16753:2:1;15023:81:0;;;16735:21:1;16792:2;16772:18;;;16765:30;16831:34;16811:18;;;16804:62;-1:-1:-1;;;16882:18:1;;;16875:33;16925:19;;15023:81:0;16551:399:1;15023:81:0;-1:-1:-1;;;;;15121:23:0;;;;;;:17;:23;;;;;;;;;:48;;-1:-1:-1;;;;;;15148:21:0;;;;;;:17;:21;;;;;;;;15121:48;15117:135;;;15186:33;15202:4;15208:2;15212:6;15186:15;:33::i;15117:135::-;-1:-1:-1;;;;;15313:30:0;;15264:23;15313:30;;;:24;:30;;;;;;15290:6;;15313:30;;;:62;;-1:-1:-1;;;;;;15347:28:0;;;;;;:24;:28;;;;;;;;15313:62;15309:881;;;-1:-1:-1;;;;;15428:30:0;;15392:15;15428:30;;;:24;:30;;;;;;;;15424:116;;;15518:6;15508;;15490:15;:24;;;;:::i;:::-;15489:35;;;;:::i;:::-;15479:45;;15424:116;-1:-1:-1;;;;;15560:28:0;;;;;;:24;:28;;;;;;;;15556:266;;;15649:6;15638:7;;15620:15;:25;;;;:::i;:::-;15619:36;;;;:::i;:::-;15681:14;;15609:46;;-1:-1:-1;;;;15681:14:0;;;;15680:15;:69;;;;-1:-1:-1;15727:22:0;;15717:4;4779:7;4796:18;;;;;;;;;;;15699:50;;15680:69;15676:131;;;15774:13;:11;:13::i;:::-;15856:25;15874:7;15856:15;:25;:::i;:::-;-1:-1:-1;;;;;15902:30:0;;;;;;:24;:30;;;;;;15838:43;;-1:-1:-1;15902:30:0;;15898:219;;;16036:9;;-1:-1:-1;;;;;15971:30:0;;;;;;:24;:30;;;;;;16017:15;;15961:53;;15971:30;;:42;;16009:4;4705:111;:::i;15971:42::-;16004:2;-1:-1:-1;;;;;4796:18:0;4779:7;4796:18;;;;;;;;;;;;4705:111;15961:53;:71;;;;:::i;:::-;:84;;15953:148;;;;-1:-1:-1;;;15953:148:0;;17157:2:1;15953:148:0;;;17139:21:1;17196:2;17176:18;;;17169:30;17235:32;17215:18;;;17208:60;17285:18;;15953:148:0;16955:354:1;15953:148:0;16133:45;16149:4;16163;16170:7;16133:15;:45::i;:::-;15377:813;15309:881;-1:-1:-1;;;;;16206:28:0;;;;;;:24;:28;;;;;;;;:47;;;;-1:-1:-1;16239:14:0;;-1:-1:-1;;;16239:14:0;;;;16238:15;16206:47;:110;;;;-1:-1:-1;16294:22:0;;16284:4;4779:7;4796:18;;;;;;;;;;;16266:50;;16206:110;16202:166;;;16343:13;:11;:13::i;:::-;16380:42;16396:4;16402:2;16406:15;16380;:42::i;8863:191::-;8956:6;;;-1:-1:-1;;;;;8973:17:0;;;-1:-1:-1;;;;;;8973:17:0;;;;;;;9006:40;;8956:6;;;8973:17;8956:6;;9006:40;;8937:16;;9006:40;8926:128;8863:191;:::o;17931:448::-;18023:16;;;18037:1;18023:16;;;;;;;;17999:21;;18023:16;;;;;;;;;;-1:-1:-1;18023:16:0;17999:40;;18068:4;18050;18055:1;18050:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18050:23:0;;;:7;;;;;;;;;;:23;;;;18094:6;;:13;;;-1:-1:-1;;;18094:13:0;;;;:6;;;;;:11;;:13;;;;;18050:7;;18094:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18084:4;18089:1;18084:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18084:23:0;;;:7;;;;;;;;;:23;18152:6;;18120:53;;18137:4;;18152:6;18161:11;18120:8;:53::i;:::-;18184:6;;:187;;-1:-1:-1;;;18184:187:0;;-1:-1:-1;;;;;18184:6:0;;;;:57;;:187;;18256:11;;18184:6;;18298:4;;18325;;18345:15;;18184:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17988:391;17931:448;:::o;18387:363::-;18518:6;;18488:51;;-1:-1:-1;;;18488:51:0;;-1:-1:-1;;;;;18518:6:0;;;18488:51;;;4824:74:1;4914:18;;;4907:34;;;18488:21:0;;;;;;4797:18:1;;18488:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18550:6:0;;18692:8;;18550:192;;-1:-1:-1;;;18550:192:0;;-1:-1:-1;;;;;18991:15:1;;;18550:192:0;;;18973:34:1;19023:18;;;19016:34;;;18550:6:0;19066:18:1;;;19059:34;;;19109:18;;;19102:34;18692:8:0;;;19152:19:1;;;19145:44;18716:15:0;19205:19:1;;;19198:35;18550:6:0;;;:22;;18581:9;;18884:19:1;;18550:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5391:617::-;-1:-1:-1;;;;;5488:18:0;;5480:68;;;;-1:-1:-1;;;5480:68:0;;19757:2:1;5480:68:0;;;19739:21:1;19796:2;19776:18;;;19769:30;19835:34;19815:18;;;19808:62;-1:-1:-1;;;19886:18:1;;;19879:35;19931:19;;5480:68:0;19555:401:1;5480:68:0;-1:-1:-1;;;;;5567:16:0;;5559:64;;;;-1:-1:-1;;;5559:64:0;;20163:2:1;5559:64:0;;;20145:21:1;20202:2;20182:18;;;20175:30;20241:34;20221:18;;;20214:62;-1:-1:-1;;;20292:18:1;;;20285:33;20335:19;;5559:64:0;19961:399:1;5559:64:0;-1:-1:-1;;;;;5705:15:0;;5683:19;5705:15;;;;;;;;;;;5739:21;;;;5731:72;;;;-1:-1:-1;;;5731:72:0;;20567:2:1;5731:72:0;;;20549:21:1;20606:2;20586:18;;;20579:30;20645:34;20625:18;;;20618:62;-1:-1:-1;;;20696:18:1;;;20689:36;20742:19;;5731:72:0;20365:402:1;5731:72:0;-1:-1:-1;;;;;5831:15:0;;;:9;:15;;;;;;;;;;;5849:20;;;5831:38;;5880:13;;;;;;;;;;:23;;;;;;5926:26;;1867:25:1;;;5880:13:0;;5926:26;;1840:18:1;5926:26:0;;;;;;;5963:37;19241:212;14:154:1;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;:::-;409:5;173:247;-1:-1:-1;;;173:247:1:o;425:548::-;537:4;566:2;595;584:9;577:21;627:6;621:13;670:6;665:2;654:9;650:18;643:34;695:1;705:140;719:6;716:1;713:13;705:140;;;814:14;;;810:23;;804:30;780:17;;;799:2;776:26;769:66;734:10;;705:140;;;709:3;894:1;889:2;880:6;869:9;865:22;861:31;854:42;964:2;957;953:7;948:2;940:6;936:15;932:29;921:9;917:45;913:54;905:62;;;;425:548;;;;:::o;978:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1162:9;1149:23;1181:31;1206:5;1181:31;:::i;:::-;1231:5;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;978:315:1:o;1903:118::-;1989:5;1982:13;1975:21;1968:5;1965:32;1955:60;;2011:1;2008;2001:12;2026:382;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;-1:-1:-1;2333:2:1;2318:18;;2305:32;2346:30;2305:32;2346:30;:::i;:::-;2395:7;2385:17;;;2026:382;;;;;:::o;2413:456::-;2490:6;2498;2506;2559:2;2547:9;2538:7;2534:23;2530:32;2527:52;;;2575:1;2572;2565:12;2527:52;2614:9;2601:23;2633:31;2658:5;2633:31;:::i;:::-;2683:5;-1:-1:-1;2740:2:1;2725:18;;2712:32;2753:33;2712:32;2753:33;:::i;:::-;2413:456;;2805:7;;-1:-1:-1;;;2859:2:1;2844:18;;;;2831:32;;2413:456::o;3063:180::-;3122:6;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;-1:-1:-1;3214:23:1;;3063:180;-1:-1:-1;3063:180:1:o;3248:316::-;3325:6;3333;3341;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;-1:-1:-1;;3433:23:1;;;3503:2;3488:18;;3475:32;;-1:-1:-1;3554:2:1;3539:18;;;3526:32;;3248:316;-1:-1:-1;3248:316:1:o;3569:248::-;3637:6;3645;3698:2;3686:9;3677:7;3673:23;3669:32;3666:52;;;3714:1;3711;3704:12;3666:52;-1:-1:-1;;3737:23:1;;;3807:2;3792:18;;;3779:32;;-1:-1:-1;3569:248:1:o;3822:388::-;3890:6;3898;3951:2;3939:9;3930:7;3926:23;3922:32;3919:52;;;3967:1;3964;3957:12;3919:52;4006:9;3993:23;4025:31;4050:5;4025:31;:::i;:::-;4075:5;-1:-1:-1;4132:2:1;4117:18;;4104:32;4145:33;4104:32;4145:33;:::i;4461:184::-;4531:6;4584:2;4572:9;4563:7;4559:23;4555:32;4552:52;;;4600:1;4597;4590:12;4552:52;-1:-1:-1;4623:16:1;;4461:184;-1:-1:-1;4461:184:1:o;4952:245::-;5019:6;5072:2;5060:9;5051:7;5047:23;5043:32;5040:52;;;5088:1;5085;5078:12;5040:52;5120:9;5114:16;5139:28;5161:5;5139:28;:::i;5202:380::-;5281:1;5277:12;;;;5324;;;5345:61;;5399:4;5391:6;5387:17;5377:27;;5345:61;5452:2;5444:6;5441:14;5421:18;5418:38;5415:161;;5498:10;5493:3;5489:20;5486:1;5479:31;5533:4;5530:1;5523:15;5561:4;5558:1;5551:15;5415:161;;5202:380;;;:::o;7667:127::-;7728:10;7723:3;7719:20;7716:1;7709:31;7759:4;7756:1;7749:15;7783:4;7780:1;7773:15;7799:125;7864:9;;;7885:10;;;7882:36;;;7898:18;;:::i;12348:217::-;12388:1;12414;12404:132;;12458:10;12453:3;12449:20;12446:1;12439:31;12493:4;12490:1;12483:15;12521:4;12518:1;12511:15;12404:132;-1:-1:-1;12550:9:1;;12348:217::o;12570:168::-;12643:9;;;12674;;12691:15;;;12685:22;;12671:37;12661:71;;12712:18;;:::i;12743:128::-;12810:9;;;12831:11;;;12828:37;;;12845:18;;:::i;14361:251::-;14431:6;14484:2;14472:9;14463:7;14459:23;14455:32;14452:52;;;14500:1;14497;14490:12;14452:52;14532:9;14526:16;14551:31;14576:5;14551:31;:::i;17446:127::-;17507:10;17502:3;17498:20;17495:1;17488:31;17538:4;17535:1;17528:15;17562:4;17559:1;17552:15;17578:1026;17840:4;17888:3;17877:9;17873:19;17919:6;17908:9;17901:25;17945:2;17983:6;17978:2;17967:9;17963:18;17956:34;18026:3;18021:2;18010:9;18006:18;17999:31;18050:6;18085;18079:13;18116:6;18108;18101:22;18154:3;18143:9;18139:19;18132:26;;18193:2;18185:6;18181:15;18167:29;;18214:1;18224:218;18238:6;18235:1;18232:13;18224:218;;;18303:13;;-1:-1:-1;;;;;18299:62:1;18287:75;;18417:15;;;;18382:12;;;;18260:1;18253:9;18224:218;;;-1:-1:-1;;;;;;;18498:55:1;;;;18493:2;18478:18;;18471:83;-1:-1:-1;;;18585:3:1;18570:19;18563:35;18459:3;17578:1026;-1:-1:-1;;;17578:1026:1:o;19244:306::-;19332:6;19340;19348;19401:2;19389:9;19380:7;19376:23;19372:32;19369:52;;;19417:1;19414;19407:12;19369:52;19446:9;19440:16;19430:26;;19496:2;19485:9;19481:18;19475:25;19465:35;;19540:2;19529:9;19525:18;19519:25;19509:35;;19244:306;;;;;:::o

Swarm Source

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