ETH Price: $2,268.75 (+2.71%)

Token

Kilroy (KILROY)
 

Overview

Max Total Supply

1,000,000,000 KILROY

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
25,831.377335776368196931 KILROY

Value
$0.00
0x71d773371bee17884b9b1239f5ed5e766d32f420
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:
Kilroy

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-14
*/

/*

                ,,,              
               (o o)             
----._,----ooO--(_)--Ooo--._,----
          Kilroy was here!

    Web:    https://kilroyerc.com
    Tg:     https://t.me/kilroyerc20
    X:      https://x.com/kilroyerc20
    Medium: https://medium.com/@mirxa101/kilroy-the-legend-of-kilroy-an-unsung-tribute-now-reborn-on-the-ethereum-blockchain-66dcbbe7f40a

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    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 IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IERC20 {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

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

    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 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

        return true;
    }

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

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

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

        _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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

contract Kilroy is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketingWallet;
    address public developmentWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public limitsInEffect = true;

    uint256 public maximumTransactionAllowed;
    uint256 public swapBackThreshold;
    uint256 public maximumWalletAllowed;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludemaximumTransactionAllowed;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("Kilroy", "KILROY") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        
        marketingWallet = address(0x5806fdD84Cf1509239B185E23cF59BfC8A374D6a);
        developmentWallet = address(0x59e7164Cd7BBb6BDc93ec4265B6962C226152b3F);

        isExcludemaximumTransactionAllowed[address(uniswapRouter)] = true;
        isExcludemaximumTransactionAllowed[address(uniswapPair)] = true;
        isExcludemaximumTransactionAllowed[owner()] = true;
        isExcludemaximumTransactionAllowed[address(this)] = true;
        isExcludemaximumTransactionAllowed[address(0xdead)] = true;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 1_000_000_000 * 1e18;
        swapBackThreshold = (totalSupply * 5) / 50000; // 0.01% swap wallet

        maximumTransactionAllowed = 10_000_000 * 1e18; // 1.0% from total supply maximumTransactionAllowedTxn
        maximumWalletAllowed = 10_000_000 * 1e18; // 1.0% from total supply maximumWalletAllowed

        buyMarketFee = 15;
        buyDevFee = 5;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 30;
        sellDevFee = 10;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function openTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

    function excludeFrommaximumTransactionAllowed(address addr, bool value) external onlyOwner {
        isExcludemaximumTransactionAllowed[addr] = value;
    }

    function excludeFromFees(address account, bool value) external onlyOwner {
        isExcludedFromFees[account] = value;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updatemaximumWalletAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maximumWalletAllowed lower than 0.5%");
        maximumWalletAllowed = newNum * (10**18);
    }

    function updateswapBackThreshold(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapBackThreshold = newAmount;
        return true;
    }

    function updatemaximumTransactionAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maximumTransactionAllowed lower than 0.1%");
        maximumTransactionAllowed = newNum * (10**18);
    }

    function updateFees(uint256 newBuyMarketFee, uint256 newBuyDevFee, uint256 newSellMarketFee, uint256 newSellDevFee) external onlyOwner {
        buyMarketFee = newBuyMarketFee;
        buyDevFee = newBuyDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        sellMarketFee = newSellMarketFee;
        sellDevFee = newSellDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        isBlackList[addr] = enable;
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarket + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0)
            return;

        if (contractBalance > swapBackThreshold * 20)
            contractBalance = swapBackThreshold * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

        (success, ) = address(developmentWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{ value: address(this).balance }("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

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

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBlackList[from], "[from] black list");
        require(!isBlackList[to], "[to] black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (ammPairs[from] && !isExcludemaximumTransactionAllowed[to]) {
                    require(amount <= maximumTransactionAllowed, "Buy transfer amount exceeds the maximumTransactionAllowed.");
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludemaximumTransactionAllowed[from]) {
                    require(amount <= maximumTransactionAllowed, "Sell transfer amount exceeds the maximumTransactionAllowed.");
                }
                else if (!isExcludemaximumTransactionAllowed[to]) {
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "Max wallet exceeded");
                }
            }
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapBackThreshold;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }
        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaximumTransactionAllowed","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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaximumTransactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTransactionAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletAllowed","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMarketFee","type":"uint256"},{"internalType":"uint256","name":"newBuyDevFee","type":"uint256"},{"internalType":"uint256","name":"newSellMarketFee","type":"uint256"},{"internalType":"uint256","name":"newSellDevFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumTransactionAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumWalletAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateswapBackThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526008805462ffffff60a01b1916600160b01b17905534801562000025575f80fd5b50604051806040016040528060068152602001654b696c726f7960d01b815250604051806040016040528060068152602001654b494c524f5960d01b815250815f908162000074919062000616565b50600162000083828262000616565b505050620000a06200009a6200043a60201b60201c565b6200043e565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011a9190620006e2565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000168573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018e9190620006e2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ff9190620006e2565b600680546001600160a01b039283166001600160a01b0319918216178255600780548216735806fdd84cf1509239b185e23cf59bfc8a374d6a179055600880549091167359e7164cd7bbb6bdc93ec4265b6962c226152b3f17905560805182165f908152601760208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255620002a56005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526017909252812080548316600190811790915561dead82527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805490931681179092556016906200032c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152601684528281208054861660019081179091557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57805487168217905560065490921681526018909352912080549092161790556b033b2e3c9fd0803ce800000061c350620003cc82600562000725565b620003d8919062000745565b600a556a084595161401484a0000006009819055600b55600f600d8190556005600e819055620004089162000765565b600c55601e6010819055600a6011819055620004249162000765565b600f556200043333826200048f565b506200077b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004ea5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620004fd919062000765565b90915550506001600160a01b0382165f90815260036020526040812080548392906200052b90849062000765565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005a257607f821691505b602082108103620005c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200057457805f5260205f20601f840160051c81016020851015620005ee5750805b601f840160051c820191505b818110156200060f575f8155600101620005fa565b5050505050565b81516001600160401b0381111562000632576200063262000579565b6200064a816200064384546200058d565b84620005c7565b602080601f83116001811462000680575f8415620006685750858301515b5f19600386901b1c1916600185901b178555620006da565b5f85815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006ce57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620006f3575f80fd5b81516001600160a01b03811681146200070a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200073f576200073f62000711565b92915050565b5f826200076057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200073f576200073f62000711565b608051612554620007a95f395f818161054a01528181611fbb0152818161207201526120ae01526125545ff3fe608060405260043610610283575f3560e01c8063751039fc11610155578063bbc0c742116100be578063cff16b2f11610078578063cff16b2f14610790578063d57052a9146107a5578063d85ba063146107c4578063dd62ed3e146107d9578063e4a1b95f1461081d578063f2fde38b14610832575f80fd5b8063bbc0c742146106e0578063c024666814610700578063c04a54141461071f578063c6616ba11461073e578063c816841b1461075d578063c9567bf91461077c575f80fd5b80639fccce321161010f5780639fccce321461061c578063a0d82dc514610631578063a457c2d714610646578063a72905a214610665578063a781dc3514610693578063a9059cbb146106c1575f80fd5b8063751039fc1461058457806375f0a874146105985780638da5cb5b146105b7578063924de9b7146105d457806395d89b41146105f35780639c3b4fdc14610607575f80fd5b80634a62bb65116101f75780636ddd1713116101b15780636ddd17131461049d5780636e1b6cda146104bd57806370a08231146104d2578063715018a6146105065780637328afae1461051a578063735de9f714610539575f80fd5b80634a62bb65146103dd5780634fbee193146103fd5780636323d7cb1461042b578063655ec6391461044a57806368092bd9146104695780636a486a8e14610488575f80fd5b806323b872dd1161024857806323b872dd1461033b5780632d99d32e1461035a578063313ce5671461037957806335b5fb631461039457806337da26ca146103a957806339509351146103be575f80fd5b806306fdde031461028e578063095ea7b3146102b85780630e14852d146102e757806318160ddd146103085780631f7ea8da14610326575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610851565b6040516102af9190612127565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004612187565b6108e0565b60405190151581526020016102af565b3480156102f2575f80fd5b506103066103013660046121c0565b6108f6565b005b348015610313575f80fd5b506002545b6040519081526020016102af565b348015610331575f80fd5b5061031860125481565b348015610346575f80fd5b506102d76103553660046121f3565b610953565b348015610365575f80fd5b506103066103743660046121c0565b6109fb565b348015610384575f80fd5b50604051601281526020016102af565b34801561039f575f80fd5b5061031860105481565b3480156103b4575f80fd5b50610318600b5481565b3480156103c9575f80fd5b506102d76103d8366004612187565b610abe565b3480156103e8575f80fd5b506008546102d790600160b01b900460ff1681565b348015610408575f80fd5b506102d7610417366004612231565b60166020525f908152604090205460ff1681565b348015610436575f80fd5b5061030661044536600461224c565b610af9565b348015610455575f80fd5b50610306610464366004612283565b610d8e565b348015610474575f80fd5b506103066104833660046121c0565b610e70565b348015610493575f80fd5b50610318600f5481565b3480156104a8575f80fd5b506008546102d790600160a81b900460ff1681565b3480156104c8575f80fd5b50610318600a5481565b3480156104dd575f80fd5b506103186104ec366004612231565b6001600160a01b03165f9081526003602052604090205490565b348015610511575f80fd5b50610306610ec4565b348015610525575f80fd5b506102d7610534366004612283565b610ef9565b348015610544575f80fd5b5061056c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561058f575f80fd5b506102d761104f565b3480156105a3575f80fd5b5060075461056c906001600160a01b031681565b3480156105c2575f80fd5b506005546001600160a01b031661056c565b3480156105df575f80fd5b506103066105ee36600461229a565b61108e565b3480156105fe575f80fd5b506102a26110d6565b348015610612575f80fd5b50610318600e5481565b348015610627575f80fd5b5061031860135481565b34801561063c575f80fd5b5061031860115481565b348015610651575f80fd5b506102d7610660366004612187565b6110e5565b348015610670575f80fd5b506102d761067f366004612231565b60186020525f908152604090205460ff1681565b34801561069e575f80fd5b506102d76106ad366004612231565b60176020525f908152604090205460ff1681565b3480156106cc575f80fd5b506102d76106db366004612187565b61117d565b3480156106eb575f80fd5b506008546102d790600160a01b900460ff1681565b34801561070b575f80fd5b5061030661071a3660046121c0565b611189565b34801561072a575f80fd5b5060085461056c906001600160a01b031681565b348015610749575f80fd5b506103066107583660046122b3565b6111dd565b348015610768575f80fd5b5060065461056c906001600160a01b031681565b348015610787575f80fd5b5061030661123b565b34801561079b575f80fd5b5061031860095481565b3480156107b0575f80fd5b506103066107bf366004612283565b61127c565b3480156107cf575f80fd5b50610318600c5481565b3480156107e4575f80fd5b506103186107f33660046122e2565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610828575f80fd5b50610318600d5481565b34801561083d575f80fd5b5061030661084c366004612231565b611359565b60605f805461085f90612319565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90612319565b80156108d65780601f106108ad576101008083540402835291602001916108d6565b820191905f5260205f20905b8154815290600101906020018083116108b957829003601f168201915b5050505050905090565b5f6108ec3384846113f4565b5060015b92915050565b6005546001600160a01b031633146109295760405162461bcd60e51b815260040161092090612351565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f61095f848484611517565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156109e35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610920565b6109f085338584036113f4565b506001949350505050565b6005546001600160a01b03163314610a255760405162461bcd60e51b815260040161092090612351565b6006546001600160a01b0390811690831603610a945760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b6064820152608401610920565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108ec918590610af490869061239a565b6113f4565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f8282604051602001610c9692919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610cfe573d5f803e3d5ffd5b505050602060405103519050610d1c6005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610d705760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610920565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610db85760405162461bcd60e51b815260040161092090612351565b670de0b6b3a76400006103e8610dcd60025490565b610dd89060016123ad565b610de291906123c4565b610dec91906123c4565b811015610e585760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d6178696d756d5472616e73616374696f6e416c6c6044820152736f776564206c6f776572207468616e20302e312560601b6064820152608401610920565b610e6a81670de0b6b3a76400006123ad565b60095550565b6005546001600160a01b03163314610e9a5760405162461bcd60e51b815260040161092090612351565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610eee5760405162461bcd60e51b815260040161092090612351565b610ef75f611c5d565b565b6005545f906001600160a01b03163314610f255760405162461bcd60e51b815260040161092090612351565b620186a0610f3260025490565b610f3d9060016123ad565b610f4791906123c4565b821015610fb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610920565b6103e8610fc060025490565b610fcb9060056123ad565b610fd591906123c4565b8211156110415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610920565b50600a81905560015b919050565b6005545f906001600160a01b0316331461107b5760405162461bcd60e51b815260040161092090612351565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146110b85760405162461bcd60e51b815260040161092090612351565b60088054911515600160a81b0260ff60a81b19909216919091179055565b60606001805461085f90612319565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156111665760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610920565b61117333858584036113f4565b5060019392505050565b5f6108ec338484611517565b6005546001600160a01b031633146111b35760405162461bcd60e51b815260040161092090612351565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112075760405162461bcd60e51b815260040161092090612351565b600d849055600e83905561121b838561239a565b600c5560108290556011819055611232818361239a565b600f5550505050565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161092090612351565b6008805461ffff60a01b191661010160a01b179055565b6005546001600160a01b031633146112a65760405162461bcd60e51b815260040161092090612351565b670de0b6b3a76400006103e86112bb60025490565b6112c69060056123ad565b6112d091906123c4565b6112da91906123c4565b8110156113415760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178696d756d57616c6c6574416c6c6f7765642060448201526e6c6f776572207468616e20302e352560881b6064820152608401610920565b61135381670de0b6b3a76400006123ad565b600b5550565b6005546001600160a01b031633146113835760405162461bcd60e51b815260040161092090612351565b6001600160a01b0381166113e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610920565b6113f181611c5d565b50565b6001600160a01b0383166114565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610920565b6001600160a01b0382166114b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610920565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661153d5760405162461bcd60e51b8152600401610920906123e3565b6001600160a01b0382166115635760405162461bcd60e51b815260040161092090612428565b6001600160a01b0383165f9081526015602052604090205460ff16156115bf5760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b6044820152606401610920565b6001600160a01b0382165f9081526015602052604090205460ff16156116195760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b6044820152606401610920565b805f036116305761162b83835f611cae565b505050565b600854600160b01b900460ff16156119ae576005546001600160a01b0384811691161480159061166e57506005546001600160a01b03838116911614155b801561168257506001600160a01b03821615155b801561169957506001600160a01b03821661dead14155b80156116a8575060145460ff16155b156119ae57600854600160a01b900460ff16611740576001600160a01b0383165f9081526016602052604090205460ff16806116fb57506001600160a01b0382165f9081526016602052604090205460ff165b6117405760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610920565b6001600160a01b0383165f9081526018602052604090205460ff16801561177f57506001600160a01b0382165f9081526017602052604090205460ff16155b1561186a576009548111156117fc5760405162461bcd60e51b815260206004820152603a60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178696d756d5472616e73616374696f6e416c6c6f7765642e0000000000006064820152608401610920565b600b546001600160a01b0383165f90815260036020526040902054611821908361239a565b11156118655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610920565b6119ae565b6001600160a01b0382165f9081526018602052604090205460ff1680156118a957506001600160a01b0383165f9081526017602052604090205460ff16155b15611926576009548111156118655760405162461bcd60e51b815260206004820152603b60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178696d756d5472616e73616374696f6e416c6c6f7765642e00000000006064820152608401610920565b6001600160a01b0382165f9081526017602052604090205460ff166119ae57600b546001600160a01b0383165f9081526003602052604090205461196a908361239a565b11156119ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610920565b305f90815260036020526040902054600a54811080159081906119da5750600854600160a81b900460ff165b80156119e9575060145460ff16155b8015611a0d57506001600160a01b0385165f9081526018602052604090205460ff16155b8015611a3157506001600160a01b0385165f9081526016602052604090205460ff16155b8015611a5557506001600160a01b0384165f9081526016602052604090205460ff16155b15611a7a576014805460ff19166001179055611a6f611e01565b6014805460ff191690555b6014546001600160a01b0386165f9081526016602052604090205460ff91821615911680611abf57506001600160a01b0385165f9081526016602052604090205460ff165b15611ac757505f5b5f8115611c49576001600160a01b0386165f9081526018602052604090205460ff168015611af657505f600f54115b15611b8257611b1b6064611b15600f5488611f4990919063ffffffff16565b90611f5b565b9050600f5460115482611b2e91906123ad565b611b3891906123c4565b60135f828254611b48919061239a565b9091555050600f54601054611b5d90836123ad565b611b6791906123c4565b60125f828254611b77919061239a565b90915550611c2b9050565b6001600160a01b0387165f9081526018602052604090205460ff168015611baa57505f600c54115b15611c2b57611bc96064611b15600c5488611f4990919063ffffffff16565b9050600c54600e5482611bdc91906123ad565b611be691906123c4565b60135f828254611bf6919061239a565b9091555050600c54600d54611c0b90836123ad565b611c1591906123c4565b60125f828254611c25919061239a565b90915550505b8015611c3c57611c3c873083611cae565b611c46818661246b565b94505b611c54878787611cae565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611cd45760405162461bcd60e51b8152600401610920906123e3565b6001600160a01b038216611cfa5760405162461bcd60e51b815260040161092090612428565b6001600160a01b0383165f9081526003602052604090205481811015611d715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610920565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611da790849061239a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611df391815260200190565b60405180910390a350505050565b305f9081526003602052604081205490505f601354601254611e23919061239a565b90505f821580611e31575081155b15611e3b57505050565b600a54611e499060146123ad565b831115611e6157600a54611e5e9060146123ad565b92505b47611e6b84611f66565b5f611e76478361211c565b90505f611e9285611b1560135485611f4990919063ffffffff16565b5f601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611ee7576040519150601f19603f3d011682016040523d82523d5f602084013e611eec565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611f39576040519150601f19603f3d011682016040523d82523d5f602084013e611f3e565b606091505b505050505050505050565b5f611f5482846123ad565b9392505050565b5f611f5482846123c4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f9957611f9961247e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612015573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120399190612492565b8160018151811061204c5761204c61247e565b60200260200101906001600160a01b031690816001600160a01b031681525050612097307f0000000000000000000000000000000000000000000000000000000000000000846113f4565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120eb9085905f908690309042906004016124ad565b5f604051808303815f87803b158015612102575f80fd5b505af1158015612114573d5f803e3d5ffd5b505050505050565b5f611f54828461246b565b5f602080835283518060208501525f5b8181101561215357858101830151858201604001528201612137565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113f1575f80fd5b5f8060408385031215612198575f80fd5b82356121a381612173565b946020939093013593505050565b8035801515811461104a575f80fd5b5f80604083850312156121d1575f80fd5b82356121dc81612173565b91506121ea602084016121b1565b90509250929050565b5f805f60608486031215612205575f80fd5b833561221081612173565b9250602084013561222081612173565b929592945050506040919091013590565b5f60208284031215612241575f80fd5b8135611f5481612173565b5f805f6060848603121561225e575f80fd5b833560ff8116811461226e575f80fd5b95602085013595506040909401359392505050565b5f60208284031215612293575f80fd5b5035919050565b5f602082840312156122aa575f80fd5b611f54826121b1565b5f805f80608085870312156122c6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156122f3575f80fd5b82356122fe81612173565b9150602083013561230e81612173565b809150509250929050565b600181811c9082168061232d57607f821691505b60208210810361234b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108f0576108f0612386565b80820281158282048414176108f0576108f0612386565b5f826123de57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108f0576108f0612386565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156124a2575f80fd5b8151611f5481612173565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124fd5784516001600160a01b0316835293830193918301916001016124d8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122061c83d9a8121906e6b84cb63b8d7a6f2c694c2185ddf63e0daf89d4289e4e10964736f6c63430008180033

Deployed Bytecode

0x608060405260043610610283575f3560e01c8063751039fc11610155578063bbc0c742116100be578063cff16b2f11610078578063cff16b2f14610790578063d57052a9146107a5578063d85ba063146107c4578063dd62ed3e146107d9578063e4a1b95f1461081d578063f2fde38b14610832575f80fd5b8063bbc0c742146106e0578063c024666814610700578063c04a54141461071f578063c6616ba11461073e578063c816841b1461075d578063c9567bf91461077c575f80fd5b80639fccce321161010f5780639fccce321461061c578063a0d82dc514610631578063a457c2d714610646578063a72905a214610665578063a781dc3514610693578063a9059cbb146106c1575f80fd5b8063751039fc1461058457806375f0a874146105985780638da5cb5b146105b7578063924de9b7146105d457806395d89b41146105f35780639c3b4fdc14610607575f80fd5b80634a62bb65116101f75780636ddd1713116101b15780636ddd17131461049d5780636e1b6cda146104bd57806370a08231146104d2578063715018a6146105065780637328afae1461051a578063735de9f714610539575f80fd5b80634a62bb65146103dd5780634fbee193146103fd5780636323d7cb1461042b578063655ec6391461044a57806368092bd9146104695780636a486a8e14610488575f80fd5b806323b872dd1161024857806323b872dd1461033b5780632d99d32e1461035a578063313ce5671461037957806335b5fb631461039457806337da26ca146103a957806339509351146103be575f80fd5b806306fdde031461028e578063095ea7b3146102b85780630e14852d146102e757806318160ddd146103085780631f7ea8da14610326575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a2610851565b6040516102af9190612127565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004612187565b6108e0565b60405190151581526020016102af565b3480156102f2575f80fd5b506103066103013660046121c0565b6108f6565b005b348015610313575f80fd5b506002545b6040519081526020016102af565b348015610331575f80fd5b5061031860125481565b348015610346575f80fd5b506102d76103553660046121f3565b610953565b348015610365575f80fd5b506103066103743660046121c0565b6109fb565b348015610384575f80fd5b50604051601281526020016102af565b34801561039f575f80fd5b5061031860105481565b3480156103b4575f80fd5b50610318600b5481565b3480156103c9575f80fd5b506102d76103d8366004612187565b610abe565b3480156103e8575f80fd5b506008546102d790600160b01b900460ff1681565b348015610408575f80fd5b506102d7610417366004612231565b60166020525f908152604090205460ff1681565b348015610436575f80fd5b5061030661044536600461224c565b610af9565b348015610455575f80fd5b50610306610464366004612283565b610d8e565b348015610474575f80fd5b506103066104833660046121c0565b610e70565b348015610493575f80fd5b50610318600f5481565b3480156104a8575f80fd5b506008546102d790600160a81b900460ff1681565b3480156104c8575f80fd5b50610318600a5481565b3480156104dd575f80fd5b506103186104ec366004612231565b6001600160a01b03165f9081526003602052604090205490565b348015610511575f80fd5b50610306610ec4565b348015610525575f80fd5b506102d7610534366004612283565b610ef9565b348015610544575f80fd5b5061056c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102af565b34801561058f575f80fd5b506102d761104f565b3480156105a3575f80fd5b5060075461056c906001600160a01b031681565b3480156105c2575f80fd5b506005546001600160a01b031661056c565b3480156105df575f80fd5b506103066105ee36600461229a565b61108e565b3480156105fe575f80fd5b506102a26110d6565b348015610612575f80fd5b50610318600e5481565b348015610627575f80fd5b5061031860135481565b34801561063c575f80fd5b5061031860115481565b348015610651575f80fd5b506102d7610660366004612187565b6110e5565b348015610670575f80fd5b506102d761067f366004612231565b60186020525f908152604090205460ff1681565b34801561069e575f80fd5b506102d76106ad366004612231565b60176020525f908152604090205460ff1681565b3480156106cc575f80fd5b506102d76106db366004612187565b61117d565b3480156106eb575f80fd5b506008546102d790600160a01b900460ff1681565b34801561070b575f80fd5b5061030661071a3660046121c0565b611189565b34801561072a575f80fd5b5060085461056c906001600160a01b031681565b348015610749575f80fd5b506103066107583660046122b3565b6111dd565b348015610768575f80fd5b5060065461056c906001600160a01b031681565b348015610787575f80fd5b5061030661123b565b34801561079b575f80fd5b5061031860095481565b3480156107b0575f80fd5b506103066107bf366004612283565b61127c565b3480156107cf575f80fd5b50610318600c5481565b3480156107e4575f80fd5b506103186107f33660046122e2565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610828575f80fd5b50610318600d5481565b34801561083d575f80fd5b5061030661084c366004612231565b611359565b60605f805461085f90612319565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90612319565b80156108d65780601f106108ad576101008083540402835291602001916108d6565b820191905f5260205f20905b8154815290600101906020018083116108b957829003601f168201915b5050505050905090565b5f6108ec3384846113f4565b5060015b92915050565b6005546001600160a01b031633146109295760405162461bcd60e51b815260040161092090612351565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f61095f848484611517565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156109e35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610920565b6109f085338584036113f4565b506001949350505050565b6005546001600160a01b03163314610a255760405162461bcd60e51b815260040161092090612351565b6006546001600160a01b0390811690831603610a945760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b6064820152608401610920565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108ec918590610af490869061239a565b6113f4565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f8282604051602001610c9692919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610cfe573d5f803e3d5ffd5b505050602060405103519050610d1c6005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610d705760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610920565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610db85760405162461bcd60e51b815260040161092090612351565b670de0b6b3a76400006103e8610dcd60025490565b610dd89060016123ad565b610de291906123c4565b610dec91906123c4565b811015610e585760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d6178696d756d5472616e73616374696f6e416c6c6044820152736f776564206c6f776572207468616e20302e312560601b6064820152608401610920565b610e6a81670de0b6b3a76400006123ad565b60095550565b6005546001600160a01b03163314610e9a5760405162461bcd60e51b815260040161092090612351565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610eee5760405162461bcd60e51b815260040161092090612351565b610ef75f611c5d565b565b6005545f906001600160a01b03163314610f255760405162461bcd60e51b815260040161092090612351565b620186a0610f3260025490565b610f3d9060016123ad565b610f4791906123c4565b821015610fb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610920565b6103e8610fc060025490565b610fcb9060056123ad565b610fd591906123c4565b8211156110415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610920565b50600a81905560015b919050565b6005545f906001600160a01b0316331461107b5760405162461bcd60e51b815260040161092090612351565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146110b85760405162461bcd60e51b815260040161092090612351565b60088054911515600160a81b0260ff60a81b19909216919091179055565b60606001805461085f90612319565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156111665760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610920565b61117333858584036113f4565b5060019392505050565b5f6108ec338484611517565b6005546001600160a01b031633146111b35760405162461bcd60e51b815260040161092090612351565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112075760405162461bcd60e51b815260040161092090612351565b600d849055600e83905561121b838561239a565b600c5560108290556011819055611232818361239a565b600f5550505050565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161092090612351565b6008805461ffff60a01b191661010160a01b179055565b6005546001600160a01b031633146112a65760405162461bcd60e51b815260040161092090612351565b670de0b6b3a76400006103e86112bb60025490565b6112c69060056123ad565b6112d091906123c4565b6112da91906123c4565b8110156113415760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178696d756d57616c6c6574416c6c6f7765642060448201526e6c6f776572207468616e20302e352560881b6064820152608401610920565b61135381670de0b6b3a76400006123ad565b600b5550565b6005546001600160a01b031633146113835760405162461bcd60e51b815260040161092090612351565b6001600160a01b0381166113e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610920565b6113f181611c5d565b50565b6001600160a01b0383166114565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610920565b6001600160a01b0382166114b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610920565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661153d5760405162461bcd60e51b8152600401610920906123e3565b6001600160a01b0382166115635760405162461bcd60e51b815260040161092090612428565b6001600160a01b0383165f9081526015602052604090205460ff16156115bf5760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b6044820152606401610920565b6001600160a01b0382165f9081526015602052604090205460ff16156116195760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b6044820152606401610920565b805f036116305761162b83835f611cae565b505050565b600854600160b01b900460ff16156119ae576005546001600160a01b0384811691161480159061166e57506005546001600160a01b03838116911614155b801561168257506001600160a01b03821615155b801561169957506001600160a01b03821661dead14155b80156116a8575060145460ff16155b156119ae57600854600160a01b900460ff16611740576001600160a01b0383165f9081526016602052604090205460ff16806116fb57506001600160a01b0382165f9081526016602052604090205460ff165b6117405760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610920565b6001600160a01b0383165f9081526018602052604090205460ff16801561177f57506001600160a01b0382165f9081526017602052604090205460ff16155b1561186a576009548111156117fc5760405162461bcd60e51b815260206004820152603a60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178696d756d5472616e73616374696f6e416c6c6f7765642e0000000000006064820152608401610920565b600b546001600160a01b0383165f90815260036020526040902054611821908361239a565b11156118655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610920565b6119ae565b6001600160a01b0382165f9081526018602052604090205460ff1680156118a957506001600160a01b0383165f9081526017602052604090205460ff16155b15611926576009548111156118655760405162461bcd60e51b815260206004820152603b60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178696d756d5472616e73616374696f6e416c6c6f7765642e00000000006064820152608401610920565b6001600160a01b0382165f9081526017602052604090205460ff166119ae57600b546001600160a01b0383165f9081526003602052604090205461196a908361239a565b11156119ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610920565b305f90815260036020526040902054600a54811080159081906119da5750600854600160a81b900460ff165b80156119e9575060145460ff16155b8015611a0d57506001600160a01b0385165f9081526018602052604090205460ff16155b8015611a3157506001600160a01b0385165f9081526016602052604090205460ff16155b8015611a5557506001600160a01b0384165f9081526016602052604090205460ff16155b15611a7a576014805460ff19166001179055611a6f611e01565b6014805460ff191690555b6014546001600160a01b0386165f9081526016602052604090205460ff91821615911680611abf57506001600160a01b0385165f9081526016602052604090205460ff165b15611ac757505f5b5f8115611c49576001600160a01b0386165f9081526018602052604090205460ff168015611af657505f600f54115b15611b8257611b1b6064611b15600f5488611f4990919063ffffffff16565b90611f5b565b9050600f5460115482611b2e91906123ad565b611b3891906123c4565b60135f828254611b48919061239a565b9091555050600f54601054611b5d90836123ad565b611b6791906123c4565b60125f828254611b77919061239a565b90915550611c2b9050565b6001600160a01b0387165f9081526018602052604090205460ff168015611baa57505f600c54115b15611c2b57611bc96064611b15600c5488611f4990919063ffffffff16565b9050600c54600e5482611bdc91906123ad565b611be691906123c4565b60135f828254611bf6919061239a565b9091555050600c54600d54611c0b90836123ad565b611c1591906123c4565b60125f828254611c25919061239a565b90915550505b8015611c3c57611c3c873083611cae565b611c46818661246b565b94505b611c54878787611cae565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611cd45760405162461bcd60e51b8152600401610920906123e3565b6001600160a01b038216611cfa5760405162461bcd60e51b815260040161092090612428565b6001600160a01b0383165f9081526003602052604090205481811015611d715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610920565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611da790849061239a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611df391815260200190565b60405180910390a350505050565b305f9081526003602052604081205490505f601354601254611e23919061239a565b90505f821580611e31575081155b15611e3b57505050565b600a54611e499060146123ad565b831115611e6157600a54611e5e9060146123ad565b92505b47611e6b84611f66565b5f611e76478361211c565b90505f611e9285611b1560135485611f4990919063ffffffff16565b5f601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611ee7576040519150601f19603f3d011682016040523d82523d5f602084013e611eec565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611f39576040519150601f19603f3d011682016040523d82523d5f602084013e611f3e565b606091505b505050505050505050565b5f611f5482846123ad565b9392505050565b5f611f5482846123c4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f9957611f9961247e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612015573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120399190612492565b8160018151811061204c5761204c61247e565b60200260200101906001600160a01b031690816001600160a01b031681525050612097307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113f4565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120eb9085905f908690309042906004016124ad565b5f604051808303815f87803b158015612102575f80fd5b505af1158015612114573d5f803e3d5ffd5b505050505050565b5f611f54828461246b565b5f602080835283518060208501525f5b8181101561215357858101830151858201604001528201612137565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113f1575f80fd5b5f8060408385031215612198575f80fd5b82356121a381612173565b946020939093013593505050565b8035801515811461104a575f80fd5b5f80604083850312156121d1575f80fd5b82356121dc81612173565b91506121ea602084016121b1565b90509250929050565b5f805f60608486031215612205575f80fd5b833561221081612173565b9250602084013561222081612173565b929592945050506040919091013590565b5f60208284031215612241575f80fd5b8135611f5481612173565b5f805f6060848603121561225e575f80fd5b833560ff8116811461226e575f80fd5b95602085013595506040909401359392505050565b5f60208284031215612293575f80fd5b5035919050565b5f602082840312156122aa575f80fd5b611f54826121b1565b5f805f80608085870312156122c6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156122f3575f80fd5b82356122fe81612173565b9150602083013561230e81612173565b809150509250929050565b600181811c9082168061232d57607f821691505b60208210810361234b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108f0576108f0612386565b80820281158282048414176108f0576108f0612386565b5f826123de57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108f0576108f0612386565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156124a2575f80fd5b8151611f5481612173565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124fd5784516001600160a01b0316835293830193918301916001016124d8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122061c83d9a8121906e6b84cb63b8d7a6f2c694c2185ddf63e0daf89d4289e4e10964736f6c63430008180033

Deployed Bytecode Sourcemap

15271:10510:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10637:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11368:169;;;;;;;;;;-1:-1:-1;11368:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11368:169:0;1023:187:1;19115:158:0;;;;;;;;;;-1:-1:-1;19115:158:0;;;;;:::i;:::-;;:::i;:::-;;10958:108;;;;;;;;;;-1:-1:-1;11046:12:0;;10958:108;;;1846:25:1;;;1834:2;1819:18;10958:108:0;1700:177:1;15971:30:0;;;;;;;;;;;;;;;;11728:492;;;;;;;;;;-1:-1:-1;11728:492:0;;;;;:::i;:::-;;:::i;20983:189::-;;;;;;;;;;-1:-1:-1;20983:189:0;;;;;:::i;:::-;;:::i;10857:93::-;;;;;;;;;;-1:-1:-1;10857:93:0;;10940:2;2485:36:1;;2473:2;2458:18;10857:93:0;2343:184:1;15902:28:0;;;;;;;;;;;;;;;;15722:35;;;;;;;;;;;;;;;;12228:215;;;;;;;;;;-1:-1:-1;12228:215:0;;;;;:::i;:::-;;:::i;15594:33::-;;;;;;;;;;-1:-1:-1;15594:33:0;;;;-1:-1:-1;;;15594:33:0;;;;;;16125:50;;;;;;;;;;-1:-1:-1;16125:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18047:1060;;;;;;;;;;-1:-1:-1;18047:1060:0;;;;;:::i;:::-;;:::i;20304:261::-;;;;;;;;;;-1:-1:-1;20304:261:0;;;;;:::i;:::-;;:::i;21180:113::-;;;;;;;;;;-1:-1:-1;21180:113:0;;;;;:::i;:::-;;:::i;15867:28::-;;;;;;;;;;;;;;;;15556:31;;;;;;;;;;-1:-1:-1;15556:31:0;;;;-1:-1:-1;;;15556:31:0;;;;;;15683:32;;;;;;;;;;;;;;;;11074:127;;;;;;;;;;-1:-1:-1;11074:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11175:18:0;11148:7;11175:18;;;:9;:18;;;;;;;11074:127;1173:103;;;;;;;;;;;;;:::i;19907:389::-;;;;;;;;;;-1:-1:-1;19907:389:0;;;;;:::i;:::-;;:::i;15347:49::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3569:32:1;;;3551:51;;3539:2;3524:18;15347:49:0;3379:229:1;19416:121:0;;;;;;;;;;;;;:::i;15438:30::-;;;;;;;;;;-1:-1:-1;15438:30:0;;;;-1:-1:-1;;;;;15438:30:0;;;950:87;;;;;;;;;;-1:-1:-1;1023:6:0;;-1:-1:-1;;;;;1023:6:0;950:87;;19545:100;;;;;;;;;;-1:-1:-1;19545:100:0;;;;;:::i;:::-;;:::i;10745:104::-;;;;;;;;;;;;;:::i;15834:24::-;;;;;;;;;;;;;;;;16008:27;;;;;;;;;;;;;;;;15937:25;;;;;;;;;;;;;;;;12451:413;;;;;;;;;;-1:-1:-1;12451:413:0;;;;;:::i;:::-;;:::i;16257:40::-;;;;;;;;;;-1:-1:-1;16257:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16182:66;;;;;;;;;;-1:-1:-1;16182:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11545:175;;;;;;;;;;-1:-1:-1;11545:175:0;;;;;:::i;:::-;;:::i;15516:33::-;;;;;;;;;;-1:-1:-1;15516:33:0;;;;-1:-1:-1;;;15516:33:0;;;;;;19281:127;;;;;;;;;;-1:-1:-1;19281:127:0;;;;;:::i;:::-;;:::i;15475:32::-;;;;;;;;;;-1:-1:-1;15475:32:0;;;;-1:-1:-1;;;;;15475:32:0;;;20573:402;;;;;;;;;;-1:-1:-1;20573:402:0;;;;;:::i;:::-;;:::i;15403:26::-;;;;;;;;;;-1:-1:-1;15403:26:0;;;;-1:-1:-1;;;;;15403:26:0;;;17929:110;;;;;;;;;;;;;:::i;15636:40::-;;;;;;;;;;;;;;;;19653:246;;;;;;;;;;-1:-1:-1;19653:246:0;;;;;:::i;:::-;;:::i;15766:27::-;;;;;;;;;;;;;;;;11209:151;;;;;;;;;;-1:-1:-1;11209:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11325:18:0;;;11298:7;11325:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11209:151;15800:27;;;;;;;;;;;;;;;;1284:201;;;;;;;;;;-1:-1:-1;1284:201:0;;;;;:::i;:::-;;:::i;10637:100::-;10691:13;10724:5;10717:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10637:100;:::o;11368:169::-;11451:4;11468:39;576:10;11491:7;11500:6;11468:8;:39::i;:::-;-1:-1:-1;11525:4:0;11368:169;;;;;:::o;19115:158::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;19217:40:0;;;::::1;;::::0;;;:34:::1;:40;::::0;;;;:48;;-1:-1:-1;;19217:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19115:158::o;11728:492::-;11868:4;11885:36;11895:6;11903:9;11914:6;11885:9;:36::i;:::-;-1:-1:-1;;;;;11961:19:0;;11934:24;11961:19;;;:11;:19;;;;;;;;576:10;11961:33;;;;;;;;12013:26;;;;12005:79;;;;-1:-1:-1;;;12005:79:0;;5737:2:1;12005:79:0;;;5719:21:1;5776:2;5756:18;;;5749:30;5815:34;5795:18;;;5788:62;-1:-1:-1;;;5866:18:1;;;5859:38;5914:19;;12005:79:0;5535:404:1;12005:79:0;12120:57;12129:6;576:10;12170:6;12151:16;:25;12120:8;:57::i;:::-;-1:-1:-1;12208:4:0;;11728:492;-1:-1:-1;;;;11728:492:0:o;20983:189::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;21075:11:::1;::::0;-1:-1:-1;;;;;21075:11:0;;::::1;21067:19:::0;;::::1;::::0;21059:72:::1;;;::::0;-1:-1:-1;;;21059:72:0;;6146:2:1;21059:72:0::1;::::0;::::1;6128:21:1::0;6185:2;6165:18;;;6158:30;6224:34;6204:18;;;6197:62;-1:-1:-1;;;6275:18:1;;;6268:38;6323:19;;21059:72:0::1;5944:404:1::0;21059:72:0::1;-1:-1:-1::0;;;;;21142:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;21142:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20983:189::o;12228:215::-;576:10;12316:4;12365:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12365:34:0;;;;;;;;;;12316:4;;12333:80;;12356:7;;12365:47;;12402:10;;12365:47;:::i;:::-;12333:8;:80::i;18047:1060::-;18327:22;;;;;;;;;;;-1:-1:-1;;;18327:22:0;;;;;18379:10;;;;;;;;;;-1:-1:-1;;;18379:10:0;;;;18174:295;;18203:95;18174:295;;;6874:25:1;;;;18317:33:0;6915:18:1;;;6908:34;;;;18369:21:0;6958:18:1;;;6951:34;18409:13:0;7001:18:1;;;6994:34;18449:4:0;7044:19:1;;;7037:61;-1:-1:-1;;6846:19:1;;18174:295:0;;;;;;-1:-1:-1;;18174:295:0;;;;;;18150:330;;18174:295;18150:330;;;;18645:23;;;;;;;;-1:-1:-1;;;18645:23:0;;;;;;;18538:175;;18567:49;18538:175;;;7311:25:1;;;;18635:34:0;7352:18:1;;;7345:34;;;;-1:-1:-1;7395:18:1;;;7388:34;;;18150:330:0;;-1:-1:-1;7284:18:1;;18538:175:0;;;;;;;;;;;;18514:210;;;;;;18493:231;;18737:14;18842:10;18871;18778:134;;;;;;;;-1:-1:-1;;;7691:27:1;;7743:1;7734:11;;7727:27;;;;7779:2;7770:12;;7763:28;7816:2;7807:12;;7433:392;18778:134:0;;;;-1:-1:-1;;18778:134:0;;;;;;;;;18754:169;;18778:134;18754:169;;;;18936:14;18953:26;;;;;;;;;8057:25:1;;;8130:4;8118:17;;8098:18;;;8091:45;;;;8152:18;;;8145:34;;;8195:18;;;8188:34;;;18754:169:0;;-1:-1:-1;18936:14:0;18953:26;;8029:19:1;;18953:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18936:43;;19008:7;1023:6;;-1:-1:-1;;;;;1023:6:0;;950:87;19008:7;-1:-1:-1;;;;;18998:17:0;:6;-1:-1:-1;;;;;18998:17:0;;18990:47;;;;-1:-1:-1;;;18990:47:0;;8435:2:1;18990:47:0;;;8417:21:1;8474:2;8454:18;;;8447:30;-1:-1:-1;;;8493:18:1;;;8486:47;8550:18;;18990:47:0;8233:341:1;18990:47:0;-1:-1:-1;;19050:13:0;:20;;-1:-1:-1;;;;19081:18:0;-1:-1:-1;;;19081:18:0;;;-1:-1:-1;;;;;18047:1060:0:o;20304:261::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;20440:4:::1;20432;20411:13;11046:12:::0;;;10958:108;20411:13:::1;:17;::::0;20427:1:::1;20411:17;:::i;:::-;20410:26;;;;:::i;:::-;20409:35;;;;:::i;:::-;20399:6;:45;;20391:110;;;::::0;-1:-1:-1;;;20391:110:0;;9176:2:1;20391:110:0::1;::::0;::::1;9158:21:1::0;9215:2;9195:18;;;9188:30;9254:34;9234:18;;;9227:62;-1:-1:-1;;;9305:18:1;;;9298:50;9365:19;;20391:110:0::1;8974:416:1::0;20391:110:0::1;20540:17;:6:::0;20550::::1;20540:17;:::i;:::-;20512:25;:45:::0;-1:-1:-1;20304:261:0:o;21180:113::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21259:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:26;;-1:-1:-1;;21259:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21180:113::o;1173:103::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;1238:30:::1;1265:1;1238:18;:30::i;:::-;1173:103::o:0;19907:389::-;1023:6;;19987:4;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;20047:6:::1;20026:13;11046:12:::0;;;10958:108;20026:13:::1;:17;::::0;20042:1:::1;20026:17;:::i;:::-;20025:28;;;;:::i;:::-;20012:9;:41;;20004:107;;;::::0;-1:-1:-1;;;20004:107:0;;9597:2:1;20004:107:0::1;::::0;::::1;9579:21:1::0;9636:2;9616:18;;;9609:30;9675:34;9655:18;;;9648:62;-1:-1:-1;;;9726:18:1;;;9719:51;9787:19;;20004:107:0::1;9395:417:1::0;20004:107:0::1;20165:4;20144:13;11046:12:::0;;;10958:108;20144:13:::1;:17;::::0;20160:1:::1;20144:17;:::i;:::-;20143:26;;;;:::i;:::-;20130:9;:39;;20122:104;;;::::0;-1:-1:-1;;;20122:104:0;;10019:2:1;20122:104:0::1;::::0;::::1;10001:21:1::0;10058:2;10038:18;;;10031:30;10097:34;10077:18;;;10070:62;-1:-1:-1;;;10148:18:1;;;10141:50;10208:19;;20122:104:0::1;9817:416:1::0;20122:104:0::1;-1:-1:-1::0;20237:17:0::1;:29:::0;;;20284:4:::1;1156:1;19907:389:::0;;;:::o;19416:121::-;1023:6;;19468:4;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;-1:-1:-1;19485:14:0::1;:22:::0;;-1:-1:-1;;;;19485:22:0::1;::::0;;;19416:121;:::o;19545:100::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;19616:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;19616:21:0::1;-1:-1:-1::0;;;;19616:21:0;;::::1;::::0;;;::::1;::::0;;19545:100::o;10745:104::-;10801:13;10834:7;10827:14;;;;;:::i;12451:413::-;576:10;12544:4;12588:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12588:34:0;;;;;;;;;;12641:35;;;;12633:85;;;;-1:-1:-1;;;12633:85:0;;10440:2:1;12633:85:0;;;10422:21:1;10479:2;10459:18;;;10452:30;10518:34;10498:18;;;10491:62;-1:-1:-1;;;10569:18:1;;;10562:35;10614:19;;12633:85:0;10238:401:1;12633:85:0;12754:67;576:10;12777:7;12805:15;12786:16;:34;12754:8;:67::i;:::-;-1:-1:-1;12852:4:0;;12451:413;-1:-1:-1;;;12451:413:0:o;11545:175::-;11631:4;11648:42;576:10;11672:9;11683:6;11648:9;:42::i;19281:127::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19365:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;19365:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19281:127::o;20573:402::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;20719:12:::1;:30:::0;;;20760:9:::1;:24:::0;;;20810::::1;20772:12:::0;20734:15;20810:24:::1;:::i;:::-;20795:12;:39:::0;20845:13:::1;:32:::0;;;20888:10:::1;:26:::0;;;20941::::1;20901:13:::0;20861:16;20941:26:::1;:::i;:::-;20925:13;:42:::0;-1:-1:-1;;;;20573:402:0:o;17929:110::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;17982:13:::1;:20:::0;;-1:-1:-1;;;;18013:18:0;-1:-1:-1;;;18013:18:0;;;17929:110::o;19653:246::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;19784:4:::1;19776;19755:13;11046:12:::0;;;10958:108;19755:13:::1;:17;::::0;19771:1:::1;19755:17;:::i;:::-;19754:26;;;;:::i;:::-;19753:35;;;;:::i;:::-;19743:6;:45;;19735:105;;;::::0;-1:-1:-1;;;19735:105:0;;10846:2:1;19735:105:0::1;::::0;::::1;10828:21:1::0;10885:2;10865:18;;;10858:30;10924:34;10904:18;;;10897:62;-1:-1:-1;;;10975:18:1;;;10968:45;11030:19;;19735:105:0::1;10644:411:1::0;19735:105:0::1;19874:17;:6:::0;19884::::1;19874:17;:::i;:::-;19851:20;:40:::0;-1:-1:-1;19653:246:0:o;1284:201::-;1023:6;;-1:-1:-1;;;;;1023:6:0;576:10;1085:23;1077:68;;;;-1:-1:-1;;;1077:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1373:22:0;::::1;1365:73;;;::::0;-1:-1:-1;;;1365:73:0;;11262:2:1;1365:73:0::1;::::0;::::1;11244:21:1::0;11301:2;11281:18;;;11274:30;11340:34;11320:18;;;11313:62;-1:-1:-1;;;11391:18:1;;;11384:36;11437:19;;1365:73:0::1;11060:402:1::0;1365:73:0::1;1449:28;1468:8;1449:18;:28::i;:::-;1284:201:::0;:::o;13878:380::-;-1:-1:-1;;;;;14014:19:0;;14006:68;;;;-1:-1:-1;;;14006:68:0;;11669:2:1;14006:68:0;;;11651:21:1;11708:2;11688:18;;;11681:30;11747:34;11727:18;;;11720:62;-1:-1:-1;;;11798:18:1;;;11791:34;11842:19;;14006:68:0;11467:400:1;14006:68:0;-1:-1:-1;;;;;14093:21:0;;14085:68;;;;-1:-1:-1;;;14085:68:0;;12074:2:1;14085:68:0;;;12056:21:1;12113:2;12093:18;;;12086:30;12152:34;12132:18;;;12125:62;-1:-1:-1;;;12203:18:1;;;12196:32;12245:19;;14085:68:0;11872:398:1;14085:68:0;-1:-1:-1;;;;;14166:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14218:32;;1846:25:1;;;14218:32:0;;1819:18:1;14218:32:0;;;;;;;13878:380;;;:::o;22666:2997::-;-1:-1:-1;;;;;22764:18:0;;22756:68;;;;-1:-1:-1;;;22756:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22843:16:0;;22835:64;;;;-1:-1:-1;;;22835:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22919:17:0;;;;;;:11;:17;;;;;;;;22918:18;22910:48;;;;-1:-1:-1;;;22910:48:0;;13287:2:1;22910:48:0;;;13269:21:1;13326:2;13306:18;;;13299:30;-1:-1:-1;;;13345:18:1;;;13338:47;13402:18;;22910:48:0;13085:341:1;22910:48:0;-1:-1:-1;;;;;22978:15:0;;;;;;:11;:15;;;;;;;;22977:16;22969:44;;;;-1:-1:-1;;;22969:44:0;;13633:2:1;22969:44:0;;;13615:21:1;13672:2;13652:18;;;13645:30;-1:-1:-1;;;13691:18:1;;;13684:45;13746:18;;22969:44:0;13431:339:1;22969:44:0;23030:6;23040:1;23030:11;23026:93;;23058:28;23074:4;23080:2;23084:1;23058:15;:28::i;:::-;22666:2997;;;:::o;23026:93::-;23135:14;;-1:-1:-1;;;23135:14:0;;;;23131:1207;;;1023:6;;-1:-1:-1;;;;;23170:15:0;;;1023:6;;23170:15;;;;:49;;-1:-1:-1;1023:6:0;;-1:-1:-1;;;;;23206:13:0;;;1023:6;;23206:13;;23170:49;:86;;;;-1:-1:-1;;;;;;23240:16:0;;;;23170:86;:128;;;;-1:-1:-1;;;;;;23277:21:0;;23291:6;23277:21;;23170:128;:158;;;;-1:-1:-1;23320:8:0;;;;23319:9;23170:158;23166:1161;;;23354:13;;-1:-1:-1;;;23354:13:0;;;;23349:148;;-1:-1:-1;;;;;23400:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;23428:22:0;;;;;;:18;:22;;;;;;;;23400:50;23392:85;;;;-1:-1:-1;;;23392:85:0;;13977:2:1;23392:85:0;;;13959:21:1;14016:2;13996:18;;;13989:30;-1:-1:-1;;;14035:18:1;;;14028:52;14097:18;;23392:85:0;13775:346:1;23392:85:0;-1:-1:-1;;;;;23549:14:0;;;;;;:8;:14;;;;;;;;:57;;;;-1:-1:-1;;;;;;23568:38:0;;;;;;:34;:38;;;;;;;;23567:39;23549:57;23545:767;;;23649:25;;23639:6;:35;;23631:106;;;;-1:-1:-1;;;23631:106:0;;14328:2:1;23631:106:0;;;14310:21:1;14367:2;14347:18;;;14340:30;14406:34;14386:18;;;14379:62;14477:28;14457:18;;;14450:56;14523:19;;23631:106:0;14126:422:1;23631:106:0;23794:20;;-1:-1:-1;;;;;11175:18:0;;11148:7;11175:18;;;:9;:18;;;;;;23768:22;;:6;:22;:::i;:::-;:46;;23760:78;;;;-1:-1:-1;;;23760:78:0;;14755:2:1;23760:78:0;;;14737:21:1;14794:2;14774:18;;;14767:30;-1:-1:-1;;;14813:18:1;;;14806:49;14872:18;;23760:78:0;14553:343:1;23760:78:0;23545:767;;;-1:-1:-1;;;;;23914:12:0;;;;;;:8;:12;;;;;;;;:57;;;;-1:-1:-1;;;;;;23931:40:0;;;;;;:34;:40;;;;;;;;23930:41;23914:57;23910:402;;;24014:25;;24004:6;:35;;23996:107;;;;-1:-1:-1;;;23996:107:0;;15103:2:1;23996:107:0;;;15085:21:1;15142:2;15122:18;;;15115:30;15181:34;15161:18;;;15154:62;15252:29;15232:18;;;15225:57;15299:19;;23996:107:0;14901:423:1;23910:402:0;-1:-1:-1;;;;;24151:38:0;;;;;;:34;:38;;;;;;;;24146:166;;24248:20;;-1:-1:-1;;;;;11175:18:0;;11148:7;11175:18;;;:9;:18;;;;;;24222:22;;:6;:22;:::i;:::-;:46;;24214:78;;;;-1:-1:-1;;;24214:78:0;;14755:2:1;24214:78:0;;;14737:21:1;14794:2;14774:18;;;14767:30;-1:-1:-1;;;14813:18:1;;;14806:49;14872:18;;24214:78:0;14553:343:1;24214:78:0;24394:4;24350:23;11175:18;;;:9;:18;;;;;;24445:17;;24426:36;;;;;;;24477:35;;-1:-1:-1;24501:11:0;;-1:-1:-1;;;24501:11:0;;;;24477:35;:61;;;;-1:-1:-1;24530:8:0;;;;24529:9;24477:61;:93;;;;-1:-1:-1;;;;;;24556:14:0;;;;;;:8;:14;;;;;;;;24555:15;24477:93;:135;;;;-1:-1:-1;;;;;;24588:24:0;;;;;;:18;:24;;;;;;;;24587:25;24477:135;:175;;;;-1:-1:-1;;;;;;24630:22:0;;;;;;:18;:22;;;;;;;;24629:23;24477:175;24473:281;;;24671:8;:15;;-1:-1:-1;;24671:15:0;24682:4;24671:15;;;24701:10;:8;:10::i;:::-;24726:8;:16;;-1:-1:-1;;24726:16:0;;;24473:281;24782:8;;-1:-1:-1;;;;;24805:24:0;;24766:12;24805:24;;;:18;:24;;;;;;24782:8;;;;24781:9;;24805:24;;:50;;-1:-1:-1;;;;;;24833:22:0;;;;;;:18;:22;;;;;;;;24805:50;24801:84;;;-1:-1:-1;24880:5:0;24801:84;24898:11;24928:7;24924:688;;;-1:-1:-1;;;;;24956:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;24988:1;24972:13;;:17;24956:33;24952:531;;;25016:34;25046:3;25016:25;25027:13;;25016:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25010:40;;25106:13;;25092:10;;25086:3;:16;;;;:::i;:::-;25085:34;;;;:::i;:::-;25069:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;25181:13:0;;25164;;25158:19;;:3;:19;:::i;:::-;25157:37;;;;:::i;:::-;25138:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;24952:531:0;;-1:-1:-1;24952:531:0;;-1:-1:-1;;;;;25233:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;25266:1;25251:12;;:16;25233:34;25229:254;;;25294:33;25323:3;25294:24;25305:12;;25294:6;:10;;:24;;;;:::i;:33::-;25288:39;;25382:12;;25369:9;;25363:3;:15;;;;:::i;:::-;25362:32;;;;:::i;:::-;25346:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;25455:12:0;;25439;;25433:18;;:3;:18;:::i;:::-;25432:35;;;;:::i;:::-;25413:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;25229:254:0;25503:7;;25499:71;;25529:41;25545:4;25559;25566:3;25529:15;:41::i;:::-;25587:13;25597:3;25587:13;;:::i;:::-;;;24924:688;25622:33;25638:4;25644:2;25648:6;25622:15;:33::i;:::-;22745:2918;;;;22666:2997;;;:::o;1493:191::-;1586:6;;;-1:-1:-1;;;;;1603:17:0;;;-1:-1:-1;;;;;;1603:17:0;;;;;;;1636:40;;1586:6;;;1603:17;1586:6;;1636:40;;1567:16;;1636:40;1556:128;1493:191;:::o;14266:733::-;-1:-1:-1;;;;;14406:20:0;;14398:70;;;;-1:-1:-1;;;14398:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14487:23:0;;14479:71;;;;-1:-1:-1;;;14479:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14647:17:0;;14623:21;14647:17;;;:9;:17;;;;;;14683:23;;;;14675:74;;;;-1:-1:-1;;;14675:74:0;;15664:2:1;14675:74:0;;;15646:21:1;15703:2;15683:18;;;15676:30;15742:34;15722:18;;;15715:62;-1:-1:-1;;;15793:18:1;;;15786:36;15839:19;;14675:74:0;15462:402:1;14675:74:0;-1:-1:-1;;;;;14785:17:0;;;;;;;:9;:17;;;;;;14805:22;;;14785:42;;14849:20;;;;;;;;:30;;14821:6;;14785:17;14849:30;;14821:6;;14849:30;:::i;:::-;;;;;;;;14914:9;-1:-1:-1;;;;;14897:35:0;14906:6;-1:-1:-1;;;;;14897:35:0;;14925:6;14897:35;;;;1846:25:1;;1834:2;1819:18;;1700:177;14897:35:0;;;;;;;;14387:612;14266:733;;;:::o;21301:880::-;21384:4;21340:23;11175:18;;;:9;:18;;;;;;21340:50;;21401:25;21447:12;;21429:15;;:30;;;;:::i;:::-;21401:58;-1:-1:-1;21470:12:0;21499:20;;;:46;;-1:-1:-1;21523:22:0;;21499:46;21495:72;;;21560:7;;;21301:880::o;21495:72::-;21601:17;;:22;;21621:2;21601:22;:::i;:::-;21583:15;:40;21579:99;;;21656:17;;:22;;21676:2;21656:22;:::i;:::-;21638:40;;21579:99;21719:21;21751:33;21768:15;21751:16;:33::i;:::-;21797:18;21818:44;:21;21844:17;21818:25;:44::i;:::-;21797:65;;21873:17;21893:51;21926:17;21893:28;21908:12;;21893:10;:14;;:28;;;;:::i;:51::-;21975:1;21957:15;:19;;;21987:12;:16;;;22038:17;;22030:53;;21873:71;;-1:-1:-1;;;;;;22038:17:0;;21873:71;;22030:53;21975:1;22030:53;21873:71;22038:17;22030:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22116:15:0;;22108:65;;22016:67;;-1:-1:-1;;;;;;22116:15:0;;22146:21;;22108:65;;;;22146:21;22116:15;22108:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21301:880:0:o;3043:98::-;3101:7;3128:5;3132:1;3128;:5;:::i;:::-;3121:12;3043:98;-1:-1:-1;;;3043:98:0:o;3149:::-;3207:7;3234:5;3238:1;3234;:5;:::i;22189:469::-;22279:16;;;22293:1;22279:16;;;;;;;;22255:21;;22279:16;;;;;;;;;;-1:-1:-1;22279:16:0;22255:40;;22324:4;22306;22311:1;22306:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22306:23:0;;;-1:-1:-1;;;;;22306:23:0;;;;;22350:13;-1:-1:-1;;;;;22350:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22340:4;22345:1;22340:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;22340:30:0;;;-1:-1:-1;;;;;22340:30:0;;;;;22383:60;22400:4;22415:13;22431:11;22383:8;:60::i;:::-;22456:194;;-1:-1:-1;;;22456:194:0;;-1:-1:-1;;;;;22456:13:0;:64;;;;:194;;22535:11;;22561:1;;22577:4;;22604;;22624:15;;22456:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22244:414;22189:469;:::o;2937:98::-;2995:7;3022:5;3026:1;3022;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:160::-;1280:20;;1336:13;;1329:21;1319:32;;1309:60;;1365:1;1362;1355:12;1380:315;1445:6;1453;1506:2;1494:9;1485:7;1481:23;1477:32;1474:52;;;1522:1;1519;1512:12;1474:52;1561:9;1548:23;1580:31;1605:5;1580:31;:::i;:::-;1630:5;-1:-1:-1;1654:35:1;1685:2;1670:18;;1654:35;:::i;:::-;1644:45;;1380:315;;;;;:::o;1882:456::-;1959:6;1967;1975;2028:2;2016:9;2007:7;2003:23;1999:32;1996:52;;;2044:1;2041;2034:12;1996:52;2083:9;2070:23;2102:31;2127:5;2102:31;:::i;:::-;2152:5;-1:-1:-1;2209:2:1;2194:18;;2181:32;2222:33;2181:32;2222:33;:::i;:::-;1882:456;;2274:7;;-1:-1:-1;;;2328:2:1;2313:18;;;;2300:32;;1882:456::o;2532:247::-;2591:6;2644:2;2632:9;2623:7;2619:23;2615:32;2612:52;;;2660:1;2657;2650:12;2612:52;2699:9;2686:23;2718:31;2743:5;2718:31;:::i;2784:405::-;2859:6;2867;2875;2928:2;2916:9;2907:7;2903:23;2899:32;2896:52;;;2944:1;2941;2934:12;2896:52;2983:9;2970:23;3033:4;3026:5;3022:16;3015:5;3012:27;3002:55;;3053:1;3050;3043:12;3002:55;3076:5;3128:2;3113:18;;3100:32;;-1:-1:-1;3179:2:1;3164:18;;;3151:32;;2784:405;-1:-1:-1;;;2784:405:1:o;3194:180::-;3253:6;3306:2;3294:9;3285:7;3281:23;3277:32;3274:52;;;3322:1;3319;3312:12;3274:52;-1:-1:-1;3345:23:1;;3194:180;-1:-1:-1;3194:180:1:o;3821:::-;3877:6;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3969:26;3985:9;3969:26;:::i;4006:385::-;4092:6;4100;4108;4116;4169:3;4157:9;4148:7;4144:23;4140:33;4137:53;;;4186:1;4183;4176:12;4137:53;-1:-1:-1;;4209:23:1;;;4279:2;4264:18;;4251:32;;-1:-1:-1;4330:2:1;4315:18;;4302:32;;4381:2;4366:18;4353:32;;-1:-1:-1;4006:385:1;-1:-1:-1;4006:385:1:o;4396:388::-;4464:6;4472;4525:2;4513:9;4504:7;4500:23;4496:32;4493:52;;;4541:1;4538;4531:12;4493:52;4580:9;4567:23;4599:31;4624:5;4599:31;:::i;:::-;4649:5;-1:-1:-1;4706:2:1;4691:18;;4678:32;4719:33;4678:32;4719:33;:::i;:::-;4771:7;4761:17;;;4396:388;;;;;:::o;4789:380::-;4868:1;4864:12;;;;4911;;;4932:61;;4986:4;4978:6;4974:17;4964:27;;4932:61;5039:2;5031:6;5028:14;5008:18;5005:38;5002:161;;5085:10;5080:3;5076:20;5073:1;5066:31;5120:4;5117:1;5110:15;5148:4;5145:1;5138:15;5002:161;;4789:380;;;:::o;5174:356::-;5376:2;5358:21;;;5395:18;;;5388:30;5454:34;5449:2;5434:18;;5427:62;5521:2;5506:18;;5174:356::o;6353:127::-;6414:10;6409:3;6405:20;6402:1;6395:31;6445:4;6442:1;6435:15;6469:4;6466:1;6459:15;6485:125;6550:9;;;6571:10;;;6568:36;;;6584:18;;:::i;8579:168::-;8652:9;;;8683;;8700:15;;;8694:22;;8680:37;8670:71;;8721:18;;:::i;8752:217::-;8792:1;8818;8808:132;;8862:10;8857:3;8853:20;8850:1;8843:31;8897:4;8894:1;8887:15;8925:4;8922:1;8915:15;8808:132;-1:-1:-1;8954:9:1;;8752:217::o;12275:401::-;12477:2;12459:21;;;12516:2;12496:18;;;12489:30;12555:34;12550:2;12535:18;;12528:62;-1:-1:-1;;;12621:2:1;12606:18;;12599:35;12666:3;12651:19;;12275:401::o;12681:399::-;12883:2;12865:21;;;12922:2;12902:18;;;12895:30;12961:34;12956:2;12941:18;;12934:62;-1:-1:-1;;;13027:2:1;13012:18;;13005:33;13070:3;13055:19;;12681:399::o;15329:128::-;15396:9;;;15417:11;;;15414:37;;;15431:18;;:::i;16211:127::-;16272:10;16267:3;16263:20;16260:1;16253:31;16303:4;16300:1;16293:15;16327:4;16324:1;16317:15;16343:251;16413:6;16466:2;16454:9;16445:7;16441:23;16437:32;16434:52;;;16482:1;16479;16472:12;16434:52;16514:9;16508:16;16533:31;16558:5;16533:31;:::i;16599:980::-;16861:4;16909:3;16898:9;16894:19;16940:6;16929:9;16922:25;16966:2;17004:6;16999:2;16988:9;16984:18;16977:34;17047:3;17042:2;17031:9;17027:18;17020:31;17071:6;17106;17100:13;17137:6;17129;17122:22;17175:3;17164:9;17160:19;17153:26;;17214:2;17206:6;17202:15;17188:29;;17235:1;17245:195;17259:6;17256:1;17253:13;17245:195;;;17324:13;;-1:-1:-1;;;;;17320:39:1;17308:52;;17415:15;;;;17380:12;;;;17356:1;17274:9;17245:195;;;-1:-1:-1;;;;;;;17496:32:1;;;;17491:2;17476:18;;17469:60;-1:-1:-1;;;17560:3:1;17545:19;17538:35;17457:3;16599:980;-1:-1:-1;;;16599:980:1:o

Swarm Source

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