ETH Price: $3,364.52 (-2.32%)
Gas: 2 Gwei

Token

Build the Bear (BTB)
 

Overview

Max Total Supply

1,000,000 BTB

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,000 BTB

Value
$0.00
0xcce1f0dbde35e848e5dbf739305ca928d29dab5b
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:
BuildtheBear

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-21
*/

//SPDX-License-Identifier: MIT

/**
▄▄▄▄· ▄• ▄▌▪  ▄▄▌  ·▄▄▄▄      ▄▄▄▄▄ ▄ .▄▄▄▄ .    ▄▄▄▄· ▄▄▄ . ▄▄▄· ▄▄▄
▐█ ▀█▪█▪██▌██ ██•  ██▪ ██     •██  ██▪▐█▀▄.▀·    ▐█ ▀█▪▀▄.▀·▐█ ▀█ ▀▄ █·
▐█▀▀█▄█▌▐█▌▐█·██▪  ▐█· ▐█▌     ▐█.▪██▀▐█▐▀▀▪▄    ▐█▀▀█▄▐▀▀▪▄▄█▀▀█ ▐▀▀▄
██▄▪▐█▐█▄█▌▐█▌▐█▌▐▌██. ██      ▐█▌·██▌▐▀▐█▄▄▌    ██▄▪▐█▐█▄▄▌▐█ ▪▐▌▐█•█▌
·▀▀▀▀  ▀▀▀ ▀▀▀.▀▀▀ ▀▀▀▀▀•      ▀▀▀ ▀▀▀ · ▀▀▀     ·▀▀▀▀  ▀▀▀  ▀  ▀ .▀  ▀
           -... ..- .. .-.. -..    - .... .    -... . .- .-.

buildthebear.market, buildthebear.online
t.me/buildthebear, twitter.com/buildingthebear
*/

pragma solidity ^0.8.17;

/* - INTERFACES - */

// Uniswap V2 Factory
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 setFeeTo(address) external;
    function setFeeToSetter(address) external;

    function createPair(address tokenA, address tokenB) external returns (address pair);
    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);
}

// Uniswap V2 Pair
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;
}

// Uniswap V1 Router
interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);
    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut);
    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn);
    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
}

// Uniswap V2 Router
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

// ERC-20
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

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

// ERC-20 Metadata
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
}


/* - CONTRACTS - */

// ERC-20
contract ERC20 is IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    string private contractName;
    string private contractSymbol;

    uint8 private constant DECIMALS = 9;
    uint256 private constant SUPPLY = 1000000 gwei;

    constructor(string memory n, string memory s) {
        contractName = n;
        contractSymbol = s;

        _balances[msg.sender] = SUPPLY;

        emit Transfer(address(0), msg.sender, SUPPLY);
    }

    function symbol() external view virtual override returns (string memory) { return contractSymbol; }
    function name() external view virtual override returns (string memory) { return contractName; }
    function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
    function decimals() public pure virtual override returns (uint8) { return DECIMALS; }
    function totalSupply() external view virtual override returns (uint256) { return SUPPLY; }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address owner = msg.sender;

        uint256 currentAllowance = allowance(owner, spender);

        require(currentAllowance >= subtractedValue, "Allowance cannot be less than zero");

        unchecked { _approve(owner, spender, currentAllowance - subtractedValue); }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address owner = msg.sender;

        _approve(owner, spender, allowance(owner, spender) + addedValue);

        return true;
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);

        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "Insufficient allowance");

            unchecked { _approve(owner, spender, currentAllowance - amount); }
        }
    }

    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        address owner = msg.sender;

        _approve(owner, spender, amount);

        return true;
    }

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

        _allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        _transfer(msg.sender, to, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) {
        address spender = msg.sender;

        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);

        return true;
    }
}

// ʕ •ᴥ•ʔ Build the Bear, Bring the Bull
contract BuildtheBear is ERC20 {
    IUniswapV2Router02 public immutable uniswapV2Router;

    address public owner;
    address public immutable uniswapV2Pair;

    mapping(address => bool) private isExcludedFromFee;

    // 99% tax at launch to prevent snipers, gradually lowered to 4%
    uint8 public preLaunchFee = 99;
    uint8 public swapInFee = preLaunchFee;
    uint8 public swapOutFee = preLaunchFee;
    uint256 public maximumHold = 10000 gwei;
    // Thresholds that trigger liquidity additions and contract swaps
    uint256 public thresholdForLiquidityAdd = 2000 gwei;
    uint256 public amountForLiquidityAdd = 500 gwei;
    uint256 public thresholdForETHSwap = 3000 gwei;
    uint256 public amountForETHSwap = 500 gwei;

    bool contractSwapping;

    event ContractSwappedTokens(uint256 tokensSwapped);

    modifier contractSwap() { contractSwapping = true; _; contractSwapping = false; }
    modifier onlyOwner() { require(msg.sender == owner, "Function can only be called by the contract owner"); _; }

    // Create the contract and Uniswap pair (BTB/WETH), exclude router, contract, and owner from swap fees
    constructor() ERC20("Build the Bear", "BTB") {
        owner = msg.sender;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        isExcludedFromFee[address(uniswapV2Router)] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    // On transfer of BTB tokens
    function _transfer(address from, address to, uint256 amount) internal override {
        require(balanceOf(from) >= amount, "Transfer exceeds account balance");

        uint256 transferAmount;
        uint8 swapFee = swapOutFee;

        // Determine if transferring to or from liquidity pair, calculate fee & transferAmount
        if (from == uniswapV2Pair || to == uniswapV2Pair && !contractSwapping) {
            if (from != uniswapV2Pair) {
                uint256 contractTokenBalance = balanceOf(address(this));

                swapFee = swapInFee;

                // Determine if contract's token balance exceeds the threshold for swapping tokens
                if (contractTokenBalance >= thresholdForETHSwap) {
                    contractSwapTokens();
                } else if (contractTokenBalance >= thresholdForLiquidityAdd) {
                    // Or if contract's token balance exceeds the threshold for adding liquidity
                    super._transfer(address(this), uniswapV2Pair, amountForLiquidityAdd);
                }
            }

            if (isExcludedFromFee[from] || isExcludedFromFee[to]) {
                transferAmount = amount;
            } else {
                require(amount <= maximumHold, "Transfer exceeds maximum amount");

                if (from == uniswapV2Pair) {
                    require((amount + balanceOf(to)) <= maximumHold, "Transfer exceeds maximum hold");

                    swapFee = swapOutFee;
                }

                uint256 fee;

                unchecked {
                    swapFee > 0 ? fee = ((amount * swapFee) / 100) : fee = 0;
                    transferAmount = amount - fee;
                }

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

            super._transfer(from, to, transferAmount);
        } else {
            super._transfer(from, to, amount);
        }
    }

    // Swap a portion of the contract's token balance collected from marketing and development fees
    function contractSwapTokens() private contractSwap {
        address[] memory path = new address[](2);

        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountForETHSwap, 0, path, address(this), (block.timestamp + 300)) {
            emit ContractSwappedTokens(amountForETHSwap);
        } catch {}
    }

    function updateOwner(address newOwner) external onlyOwner {
        require (newOwner != address(0), "New owner cannot be the zero address");

        owner = newOwner;
    }

    function updateMaximumHold(uint256 newMaximumHold) external onlyOwner {
        require (newMaximumHold >= 10000 gwei && newMaximumHold <= 50000 gwei, "Maximum hold must be between 1% and 5%");

        maximumHold = newMaximumHold;
    }

    function updateSwapFees(uint8 newSwapInFee, uint8 newSwapOutFee) external onlyOwner {
        require (newSwapInFee <= 25 && newSwapOutFee <= 25, "Fees cannot exceed 25%");

        swapInFee = newSwapInFee;
        swapOutFee = newSwapOutFee;
    }

    function updateContractLiquidityAdd(uint256 newThresholdForLiquidityAdd, uint256 newAmountForLiquidityAdd) external onlyOwner {
        require ((newThresholdForLiquidityAdd >= 500 gwei && newThresholdForLiquidityAdd <= 20000 gwei) &&
            newAmountForLiquidityAdd <= 10000 gwei, "newThresholdForLiquidityAdd must be between 0.05% and 2% supply");
        require (newThresholdForLiquidityAdd >= (newAmountForLiquidityAdd * 2), "newThresholdForLiquidityAdd must be at least 2x greater than newAmountForLiquidityAdd");

        thresholdForLiquidityAdd = newThresholdForLiquidityAdd;
        amountForLiquidityAdd = newAmountForLiquidityAdd;
    }

    function updateContractETHSwap(uint256 newThresholdForETHSwap, uint256 newAmountForETHSwap) external onlyOwner {
        require ((newThresholdForETHSwap > thresholdForLiquidityAdd) && newAmountForETHSwap <= 10000 gwei, "newAmountForETHSwap must be 1% supply or less");
        require (newThresholdForETHSwap >= (newAmountForETHSwap * 2), "newThresholdForETHSwap must be at least 2x greater than newAmountForETHSwap");

        thresholdForETHSwap = newThresholdForETHSwap;
        amountForETHSwap = newAmountForETHSwap;
    }

    // Allow owner to claim misdirected tokens
    function claimEther() external onlyOwner {
        payable(owner).transfer(address(this).balance);
    }

    function claimContractTokens() external onlyOwner {
        _transfer(address(this), owner, balanceOf(address(this)));
    }

    receive() external payable {}
}

/** 01000010 01110101 01101001 01101100 01100100  01110100 01101000 01100101  01000010 01100101 01100001 01110010 */

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"}],"name":"ContractSwappedTokens","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":[],"name":"amountForETHSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountForLiquidityAdd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimContractTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maximumHold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preLaunchFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapInFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapOutFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdForETHSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdForLiquidityAdd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThresholdForETHSwap","type":"uint256"},{"internalType":"uint256","name":"newAmountForETHSwap","type":"uint256"}],"name":"updateContractETHSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThresholdForLiquidityAdd","type":"uint256"},{"internalType":"uint256","name":"newAmountForLiquidityAdd","type":"uint256"}],"name":"updateContractLiquidityAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaximumHold","type":"uint256"}],"name":"updateMaximumHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"updateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newSwapInFee","type":"uint8"},{"internalType":"uint8","name":"newSwapOutFee","type":"uint8"}],"name":"updateSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526006805462ffffff1916626363631790556509184e72a0006007556501d1a94a200060085564746a52880060098190556502ba7def3000600a55600b553480156200004e57600080fd5b506040518060400160405280600e81526020016d213ab4b632103a3432902132b0b960911b81525060405180604001604052806003815260200162212a2160e91b8152508160029081620000a39190620004a8565b506003620000b28282620004a8565b503360008181526020818152604080832066038d7ea4c680009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050600480546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592818301926020928290030181865afa15801562000162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000188919062000574565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fc919062000574565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000270919062000574565b6001600160a01b0390811660a052811660808190526000818152600560205260408082208054600160ff19918216811790925530808552838520805483168417905533855292909320805490931617909155620002d091600019620002d7565b50620005a6565b6001600160a01b0383166200033f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003a25760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000336565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200042e57607f821691505b6020821081036200044f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004a357600081815260208120601f850160051c810160208610156200047e5750805b601f850160051c820191505b818110156200049f578281556001016200048a565b5050505b505050565b81516001600160401b03811115620004c457620004c462000403565b620004dc81620004d5845462000419565b8462000455565b602080601f831160018114620005145760008415620004fb5750858301515b600019600386901b1c1916600185901b1785556200049f565b600085815260208120601f198616915b82811015620005455788860151825594840194600190910190840162000524565b5085821015620005645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200058757600080fd5b81516001600160a01b03811681146200059f57600080fd5b9392505050565b60805160a051611756620005fd6000396000818161037601528181610ee401528181610f1a01528181610f6301528181610fde01526110a701526000818161025f0152818161122001526112ce01526117566000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610515578063de45d15d14610535578063f917781f14610555578063ffeb55901461057557600080fd5b8063a9059cbb146104aa578063be1518b9146104ca578063c3dc355e146104ea578063d39f6c2c1461050057600080fd5b80638da5cb5b116100d15780638da5cb5b1461043557806395d89b411461045557806398ee9f841461046a578063a457c2d71461048a57600080fd5b806370a08231146103c957806376238656146103ff578063880cdc311461041557600080fd5b80632fc834a71161016457806339f904511161013e57806339f904511461034e57806349bd5a5e1461036457806355291dbd14610398578063645966a3146103af57600080fd5b80632fc834a714610304578063313ce5671461031a578063395093511461032e57600080fd5b80631694505e116101a05780631694505e1461024d57806318160ddd14610299578063219d58fb146102b357806323b872dd146102e457600080fd5b8063065e1d65146101d257806306fdde03146101fb578063095ea7b31461021d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860075481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b50610210610595565b6040516101f29190611400565b34801561022957600080fd5b5061023d610238366004611463565b610627565b60405190151581526020016101f2565b34801561025957600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f2565b3480156102a557600080fd5b5066038d7ea4c680006101e8565b3480156102bf57600080fd5b506006546102d290610100900460ff1681565b60405160ff90911681526020016101f2565b3480156102f057600080fd5b5061023d6102ff36600461148f565b610641565b34801561031057600080fd5b506101e860085481565b34801561032657600080fd5b5060096102d2565b34801561033a57600080fd5b5061023d610349366004611463565b610665565b34801561035a57600080fd5b506101e8600b5481565b34801561037057600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b3480156103a457600080fd5b506103ad610687565b005b3480156103bb57600080fd5b506006546102d29060ff1681565b3480156103d557600080fd5b506101e86103e43660046114d0565b6001600160a01b031660009081526020819052604090205490565b34801561040b57600080fd5b506101e860095481565b34801561042157600080fd5b506103ad6104303660046114d0565b6106f6565b34801561044157600080fd5b50600454610281906001600160a01b031681565b34801561046157600080fd5b506102106107a4565b34801561047657600080fd5b506103ad6104853660046114f4565b6107b3565b34801561049657600080fd5b5061023d6104a5366004611463565b610859565b3480156104b657600080fd5b5061023d6104c5366004611463565b6108d1565b3480156104d657600080fd5b506103ad6104e5366004611523565b6108e7565b3480156104f657600080fd5b506101e8600a5481565b34801561050c57600080fd5b506103ad61099c565b34801561052157600080fd5b506101e8610530366004611556565b6109ee565b34801561054157600080fd5b506103ad61055036600461158f565b610a19565b34801561056157600080fd5b506103ad61057036600461158f565b610b8b565b34801561058157600080fd5b506006546102d29062010000900460ff1681565b6060600280546105a4906115b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105d0906115b1565b801561061d5780601f106105f25761010080835404028352916020019161061d565b820191906000526020600020905b81548152906001019060200180831161060057829003601f168201915b5050505050905090565b600033610635818585610ccd565b60019150505b92915050565b60003361064f858285610df2565b61065a858585610e65565b506001949350505050565b60003361063581858561067883836109ee565b6106829190611601565b610ccd565b6004546001600160a01b031633146106ba5760405162461bcd60e51b81526004016106b190611614565b60405180910390fd5b6004546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156106f3573d6000803e3d6000fd5b50565b6004546001600160a01b031633146107205760405162461bcd60e51b81526004016106b190611614565b6001600160a01b0381166107825760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6060600380546105a4906115b1565b6004546001600160a01b031633146107dd5760405162461bcd60e51b81526004016106b190611614565b6509184e72a00081101580156107f95750652d79883d20008111155b6108545760405162461bcd60e51b815260206004820152602660248201527f4d6178696d756d20686f6c64206d757374206265206265747765656e20312520604482015265616e6420352560d01b60648201526084016106b1565b600755565b6000338161086782866109ee565b9050838110156108c45760405162461bcd60e51b815260206004820152602260248201527f416c6c6f77616e63652063616e6e6f74206265206c657373207468616e207a65604482015261726f60f01b60648201526084016106b1565b61065a8286868403610ccd565b60006108de338484610e65565b50600192915050565b6004546001600160a01b031633146109115760405162461bcd60e51b81526004016106b190611614565b60198260ff1611158015610929575060198160ff1611155b61096e5760405162461bcd60e51b8152602060048201526016602482015275466565732063616e6e6f74206578636565642032352560501b60448201526064016106b1565b6006805462ffff00191661010060ff9485160262ff0000191617620100009290931691909102919091179055565b6004546001600160a01b031633146109c65760405162461bcd60e51b81526004016106b190611614565b600454306000818152602081905260409020546109ec926001600160a01b031690610e65565b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6004546001600160a01b03163314610a435760405162461bcd60e51b81526004016106b190611614565b64746a5288008210158015610a5e57506512309ce540008211155b8015610a7057506509184e72a0008111155b610ae25760405162461bcd60e51b815260206004820152603f60248201527f6e65775468726573686f6c64466f724c6971756964697479416464206d75737460448201527f206265206265747765656e20302e30352520616e6420322520737570706c790060648201526084016106b1565b610aed816002611665565b821015610b805760405162461bcd60e51b815260206004820152605560248201527f6e65775468726573686f6c64466f724c6971756964697479416464206d75737460448201527f206265206174206c656173742032782067726561746572207468616e206e6577606482015274105b5bdd5b9d119bdc931a5c5d5a591a5d1e505919605a1b608482015260a4016106b1565b600891909155600955565b6004546001600160a01b03163314610bb55760405162461bcd60e51b81526004016106b190611614565b60085482118015610bcc57506509184e72a0008111155b610c2e5760405162461bcd60e51b815260206004820152602d60248201527f6e6577416d6f756e74466f7245544853776170206d757374206265203125207360448201526c7570706c79206f72206c65737360981b60648201526084016106b1565b610c39816002611665565b821015610cc25760405162461bcd60e51b815260206004820152604b60248201527f6e65775468726573686f6c64466f7245544853776170206d757374206265206160448201527f74206c656173742032782067726561746572207468616e206e6577416d6f756e60648201526a074466f72455448537761760ac1b608482015260a4016106b1565b600a91909155600b55565b6001600160a01b038316610d2f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6001600160a01b038216610d905760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610dfe84846109ee565b90506000198114610e5f5781811015610e525760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064016106b1565b610e5f8484848403610ccd565b50505050565b80610e85846001600160a01b031660009081526020819052604090205490565b1015610ed35760405162461bcd60e51b815260206004820181905260248201527f5472616e736665722065786365656473206163636f756e742062616c616e636560448201526064016106b1565b60065460009062010000900460ff167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169086161480610f5c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015610f5c5750600c5460ff16155b156111aa577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611007575030600090815260208190526040902054600654600a5461010090910460ff1691908110610fcf57610fca6111bc565b611005565b600854811061100557611005307f00000000000000000000000000000000000000000000000000000000000000006009546113a0565b505b6001600160a01b03851660009081526005602052604090205460ff168061104657506001600160a01b03841660009081526005602052604090205460ff165b156110535782915061119a565b6007548311156110a55760405162461bcd60e51b815260206004820152601f60248201527f5472616e736665722065786365656473206d6178696d756d20616d6f756e740060448201526064016106b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611160576007546001600160a01b0385166000908152602081905260409020546111049085611601565b11156111525760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722065786365656473206d6178696d756d20686f6c6400000060448201526064016106b1565b5060065462010000900460ff165b6000808260ff16116111755750600080611181565b50606460ff8216840204805b5080840392508015611198576111988630836113a0565b505b6111a58585846113a0565b6111b5565b6111b58585856113a0565b5050505050565b600c805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111fe576111fe61167c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611692565b816001815181106112b3576112b361167c565b6001600160a01b039283166020918202929092010152600b547f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790600084306113074261012c611601565b6040518663ffffffff1660e01b81526004016113279594939291906116af565b600060405180830381600087803b15801561134157600080fd5b505af1925050508015611352575060015b15611393577f492e1b723f3e8facf9b67a4a59d76c74581eee370bee8c4a7031f720a4e0efc4600b5460405161138a91815260200190565b60405180910390a15b50600c805460ff19169055565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610de5565b600060208083528351808285015260005b8181101561142d57858101830151858201604001528201611411565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106f357600080fd5b6000806040838503121561147657600080fd5b82356114818161144e565b946020939093013593505050565b6000806000606084860312156114a457600080fd5b83356114af8161144e565b925060208401356114bf8161144e565b929592945050506040919091013590565b6000602082840312156114e257600080fd5b81356114ed8161144e565b9392505050565b60006020828403121561150657600080fd5b5035919050565b803560ff8116811461151e57600080fd5b919050565b6000806040838503121561153657600080fd5b61153f8361150d565b915061154d6020840161150d565b90509250929050565b6000806040838503121561156957600080fd5b82356115748161144e565b915060208301356115848161144e565b809150509250929050565b600080604083850312156115a257600080fd5b50508035926020909101359150565b600181811c908216806115c557607f821691505b6020821081036115e557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063b5761063b6115eb565b60208082526031908201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460408201527034329031b7b73a3930b1ba1037bbb732b960791b606082015260800190565b808202811582820484141761063b5761063b6115eb565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116a457600080fd5b81516114ed8161144e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116ff5784516001600160a01b0316835293830193918301916001016116da565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220949872e8f8f3fe2c7cc802c69ca1efc2ff025a53fcde8e8543e73d571b927c4564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610515578063de45d15d14610535578063f917781f14610555578063ffeb55901461057557600080fd5b8063a9059cbb146104aa578063be1518b9146104ca578063c3dc355e146104ea578063d39f6c2c1461050057600080fd5b80638da5cb5b116100d15780638da5cb5b1461043557806395d89b411461045557806398ee9f841461046a578063a457c2d71461048a57600080fd5b806370a08231146103c957806376238656146103ff578063880cdc311461041557600080fd5b80632fc834a71161016457806339f904511161013e57806339f904511461034e57806349bd5a5e1461036457806355291dbd14610398578063645966a3146103af57600080fd5b80632fc834a714610304578063313ce5671461031a578063395093511461032e57600080fd5b80631694505e116101a05780631694505e1461024d57806318160ddd14610299578063219d58fb146102b357806323b872dd146102e457600080fd5b8063065e1d65146101d257806306fdde03146101fb578063095ea7b31461021d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860075481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b50610210610595565b6040516101f29190611400565b34801561022957600080fd5b5061023d610238366004611463565b610627565b60405190151581526020016101f2565b34801561025957600080fd5b506102817f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101f2565b3480156102a557600080fd5b5066038d7ea4c680006101e8565b3480156102bf57600080fd5b506006546102d290610100900460ff1681565b60405160ff90911681526020016101f2565b3480156102f057600080fd5b5061023d6102ff36600461148f565b610641565b34801561031057600080fd5b506101e860085481565b34801561032657600080fd5b5060096102d2565b34801561033a57600080fd5b5061023d610349366004611463565b610665565b34801561035a57600080fd5b506101e8600b5481565b34801561037057600080fd5b506102817f000000000000000000000000b936c943341776832c76b9ad66320ec419f9346681565b3480156103a457600080fd5b506103ad610687565b005b3480156103bb57600080fd5b506006546102d29060ff1681565b3480156103d557600080fd5b506101e86103e43660046114d0565b6001600160a01b031660009081526020819052604090205490565b34801561040b57600080fd5b506101e860095481565b34801561042157600080fd5b506103ad6104303660046114d0565b6106f6565b34801561044157600080fd5b50600454610281906001600160a01b031681565b34801561046157600080fd5b506102106107a4565b34801561047657600080fd5b506103ad6104853660046114f4565b6107b3565b34801561049657600080fd5b5061023d6104a5366004611463565b610859565b3480156104b657600080fd5b5061023d6104c5366004611463565b6108d1565b3480156104d657600080fd5b506103ad6104e5366004611523565b6108e7565b3480156104f657600080fd5b506101e8600a5481565b34801561050c57600080fd5b506103ad61099c565b34801561052157600080fd5b506101e8610530366004611556565b6109ee565b34801561054157600080fd5b506103ad61055036600461158f565b610a19565b34801561056157600080fd5b506103ad61057036600461158f565b610b8b565b34801561058157600080fd5b506006546102d29062010000900460ff1681565b6060600280546105a4906115b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105d0906115b1565b801561061d5780601f106105f25761010080835404028352916020019161061d565b820191906000526020600020905b81548152906001019060200180831161060057829003601f168201915b5050505050905090565b600033610635818585610ccd565b60019150505b92915050565b60003361064f858285610df2565b61065a858585610e65565b506001949350505050565b60003361063581858561067883836109ee565b6106829190611601565b610ccd565b6004546001600160a01b031633146106ba5760405162461bcd60e51b81526004016106b190611614565b60405180910390fd5b6004546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156106f3573d6000803e3d6000fd5b50565b6004546001600160a01b031633146107205760405162461bcd60e51b81526004016106b190611614565b6001600160a01b0381166107825760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6060600380546105a4906115b1565b6004546001600160a01b031633146107dd5760405162461bcd60e51b81526004016106b190611614565b6509184e72a00081101580156107f95750652d79883d20008111155b6108545760405162461bcd60e51b815260206004820152602660248201527f4d6178696d756d20686f6c64206d757374206265206265747765656e20312520604482015265616e6420352560d01b60648201526084016106b1565b600755565b6000338161086782866109ee565b9050838110156108c45760405162461bcd60e51b815260206004820152602260248201527f416c6c6f77616e63652063616e6e6f74206265206c657373207468616e207a65604482015261726f60f01b60648201526084016106b1565b61065a8286868403610ccd565b60006108de338484610e65565b50600192915050565b6004546001600160a01b031633146109115760405162461bcd60e51b81526004016106b190611614565b60198260ff1611158015610929575060198160ff1611155b61096e5760405162461bcd60e51b8152602060048201526016602482015275466565732063616e6e6f74206578636565642032352560501b60448201526064016106b1565b6006805462ffff00191661010060ff9485160262ff0000191617620100009290931691909102919091179055565b6004546001600160a01b031633146109c65760405162461bcd60e51b81526004016106b190611614565b600454306000818152602081905260409020546109ec926001600160a01b031690610e65565b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6004546001600160a01b03163314610a435760405162461bcd60e51b81526004016106b190611614565b64746a5288008210158015610a5e57506512309ce540008211155b8015610a7057506509184e72a0008111155b610ae25760405162461bcd60e51b815260206004820152603f60248201527f6e65775468726573686f6c64466f724c6971756964697479416464206d75737460448201527f206265206265747765656e20302e30352520616e6420322520737570706c790060648201526084016106b1565b610aed816002611665565b821015610b805760405162461bcd60e51b815260206004820152605560248201527f6e65775468726573686f6c64466f724c6971756964697479416464206d75737460448201527f206265206174206c656173742032782067726561746572207468616e206e6577606482015274105b5bdd5b9d119bdc931a5c5d5a591a5d1e505919605a1b608482015260a4016106b1565b600891909155600955565b6004546001600160a01b03163314610bb55760405162461bcd60e51b81526004016106b190611614565b60085482118015610bcc57506509184e72a0008111155b610c2e5760405162461bcd60e51b815260206004820152602d60248201527f6e6577416d6f756e74466f7245544853776170206d757374206265203125207360448201526c7570706c79206f72206c65737360981b60648201526084016106b1565b610c39816002611665565b821015610cc25760405162461bcd60e51b815260206004820152604b60248201527f6e65775468726573686f6c64466f7245544853776170206d757374206265206160448201527f74206c656173742032782067726561746572207468616e206e6577416d6f756e60648201526a074466f72455448537761760ac1b608482015260a4016106b1565b600a91909155600b55565b6001600160a01b038316610d2f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6001600160a01b038216610d905760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610dfe84846109ee565b90506000198114610e5f5781811015610e525760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064016106b1565b610e5f8484848403610ccd565b50505050565b80610e85846001600160a01b031660009081526020819052604090205490565b1015610ed35760405162461bcd60e51b815260206004820181905260248201527f5472616e736665722065786365656473206163636f756e742062616c616e636560448201526064016106b1565b60065460009062010000900460ff167f000000000000000000000000b936c943341776832c76b9ad66320ec419f934666001600160a01b039081169086161480610f5c57507f000000000000000000000000b936c943341776832c76b9ad66320ec419f934666001600160a01b0316846001600160a01b0316148015610f5c5750600c5460ff16155b156111aa577f000000000000000000000000b936c943341776832c76b9ad66320ec419f934666001600160a01b0316856001600160a01b031614611007575030600090815260208190526040902054600654600a5461010090910460ff1691908110610fcf57610fca6111bc565b611005565b600854811061100557611005307f000000000000000000000000b936c943341776832c76b9ad66320ec419f934666009546113a0565b505b6001600160a01b03851660009081526005602052604090205460ff168061104657506001600160a01b03841660009081526005602052604090205460ff165b156110535782915061119a565b6007548311156110a55760405162461bcd60e51b815260206004820152601f60248201527f5472616e736665722065786365656473206d6178696d756d20616d6f756e740060448201526064016106b1565b7f000000000000000000000000b936c943341776832c76b9ad66320ec419f934666001600160a01b0316856001600160a01b031603611160576007546001600160a01b0385166000908152602081905260409020546111049085611601565b11156111525760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722065786365656473206d6178696d756d20686f6c6400000060448201526064016106b1565b5060065462010000900460ff165b6000808260ff16116111755750600080611181565b50606460ff8216840204805b5080840392508015611198576111988630836113a0565b505b6111a58585846113a0565b6111b5565b6111b58585856113a0565b5050505050565b600c805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111fe576111fe61167c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611692565b816001815181106112b3576112b361167c565b6001600160a01b039283166020918202929092010152600b547f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790600084306113074261012c611601565b6040518663ffffffff1660e01b81526004016113279594939291906116af565b600060405180830381600087803b15801561134157600080fd5b505af1925050508015611352575060015b15611393577f492e1b723f3e8facf9b67a4a59d76c74581eee370bee8c4a7031f720a4e0efc4600b5460405161138a91815260200190565b60405180910390a15b50600c805460ff19169055565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610de5565b600060208083528351808285015260005b8181101561142d57858101830151858201604001528201611411565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106f357600080fd5b6000806040838503121561147657600080fd5b82356114818161144e565b946020939093013593505050565b6000806000606084860312156114a457600080fd5b83356114af8161144e565b925060208401356114bf8161144e565b929592945050506040919091013590565b6000602082840312156114e257600080fd5b81356114ed8161144e565b9392505050565b60006020828403121561150657600080fd5b5035919050565b803560ff8116811461151e57600080fd5b919050565b6000806040838503121561153657600080fd5b61153f8361150d565b915061154d6020840161150d565b90509250929050565b6000806040838503121561156957600080fd5b82356115748161144e565b915060208301356115848161144e565b809150509250929050565b600080604083850312156115a257600080fd5b50508035926020909101359150565b600181811c908216806115c557607f821691505b6020821081036115e557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063b5761063b6115eb565b60208082526031908201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279207460408201527034329031b7b73a3930b1ba1037bbb732b960791b606082015260800190565b808202811582820484141761063b5761063b6115eb565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116a457600080fd5b81516114ed8161144e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116ff5784516001600160a01b0316835293830193918301916001016116da565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220949872e8f8f3fe2c7cc802c69ca1efc2ff025a53fcde8e8543e73d571b927c4564736f6c63430008110033

Deployed Bytecode Sourcemap

14234:6549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:39;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14661:39:0;;;;;;;;11287:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12924:205::-;;;;;;;;;;-1:-1:-1;12924:205:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;12924:205:0;1205:187:1;14272:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;14272:51:0;1397:229:1;11598:90:0;;;;;;;;;;-1:-1:-1;10942:12:0;11598:90;;14572:37;;;;;;;;;;-1:-1:-1;14572:37:0;;;;;;;;;;;;;;1803:4:1;1791:17;;;1773:36;;1761:2;1746:18;14572:37:0;1631:184:1;13912:265:0;;;;;;;;;;-1:-1:-1;13912:265:0;;;;;:::i;:::-;;:::i;14778:51::-;;;;;;;;;;;;;;;;11507:85;;;;;;;;;;-1:-1:-1;10900:1:0;11507:85;;12280:242;;;;;;;;;;-1:-1:-1;12280:242:0;;;;;:::i;:::-;;:::i;14943:42::-;;;;;;;;;;;;;;;;14359:38;;;;;;;;;;;;;;;20503:106;;;;;;;;;;;;;:::i;:::-;;14535:30;;;;;;;;;;-1:-1:-1;14535:30:0;;;;;;;;11388:113;;;;;;;;;;-1:-1:-1;11388:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;11480:18:0;11462:7;11480:18;;;;;;;;;;;;11388:113;14836:47;;;;;;;;;;;;;;;;18547:178;;;;;;;;;;-1:-1:-1;18547:178:0;;;;;:::i;:::-;;:::i;14332:20::-;;;;;;;;;;-1:-1:-1;14332:20:0;;;;-1:-1:-1;;;;;14332:20:0;;;11182:99;;;;;;;;;;;;;:::i;18733:242::-;;;;;;;;;;-1:-1:-1;18733:242:0;;;;;:::i;:::-;;:::i;11855:417::-;;;;;;;;;;-1:-1:-1;11855:417:0;;;;;:::i;:::-;;:::i;13493:163::-;;;;;;;;;;-1:-1:-1;13493:163:0;;;;;:::i;:::-;;:::i;18983:254::-;;;;;;;;;;-1:-1:-1;18983:254:0;;;;;:::i;:::-;;:::i;14890:46::-;;;;;;;;;;;;;;;;20617:126;;;;;;;;;;;;;:::i;11696:151::-;;;;;;;;;;-1:-1:-1;11696:151:0;;;;;:::i;:::-;;:::i;19245:660::-;;;;;;;;;;-1:-1:-1;19245:660:0;;;;;:::i;:::-;;:::i;19913:534::-;;;;;;;;;;-1:-1:-1;19913:534:0;;;;;:::i;:::-;;:::i;14616:38::-;;;;;;;;;;-1:-1:-1;14616:38:0;;;;;;;;;;;11287:95;11343:13;11367:12;11360:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11287:95;:::o;12924:205::-;13009:4;13042:10;13065:32;13042:10;13081:7;13090:6;13065:8;:32::i;:::-;13117:4;13110:11;;;12924:205;;;;;:::o;13912:265::-;14011:4;14046:10;14069:38;14085:4;14046:10;14100:6;14069:15;:38::i;:::-;14118:27;14128:4;14134:2;14138:6;14118:9;:27::i;:::-;-1:-1:-1;14165:4:0;;13912:265;-1:-1:-1;;;;13912:265:0:o;12280:242::-;12370:4;12403:10;12426:64;12403:10;12442:7;12479:10;12451:25;12403:10;12442:7;12451:9;:25::i;:::-;:38;;;;:::i;:::-;12426:8;:64::i;20503:106::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;;;;;;;;;20563:5:::1;::::0;20555:46:::1;::::0;-1:-1:-1;;;;;20563:5:0;;::::1;::::0;20579:21:::1;20555:46:::0;::::1;;;::::0;20563:5:::1;20555:46:::0;20563:5;20555:46;20579:21;20563:5;20555:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20503:106::o:0;18547:178::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18625:22:0;::::1;18616:72;;;::::0;-1:-1:-1;;;18616:72:0;;5257:2:1;18616:72:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:34;5315:18;;;5308:62;-1:-1:-1;;;5386:18:1;;;5379:34;5430:19;;18616:72:0::1;5055:400:1::0;18616:72:0::1;18701:5;:16:::0;;-1:-1:-1;;;;;;18701:16:0::1;-1:-1:-1::0;;;;;18701:16:0;;;::::1;::::0;;;::::1;::::0;;18547:178::o;11182:99::-;11240:13;11264:14;11257:21;;;;;:::i;18733:242::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;18841:10:::1;18823:14;:28;;:60;;;;;18873:10;18855:14;:28;;18823:60;18814:112;;;::::0;-1:-1:-1;;;18814:112:0;;5662:2:1;18814:112:0::1;::::0;::::1;5644:21:1::0;5701:2;5681:18;;;5674:30;5740:34;5720:18;;;5713:62;-1:-1:-1;;;5791:18:1;;;5784:36;5837:19;;18814:112:0::1;5460:402:1::0;18814:112:0::1;18939:11;:28:::0;18733:242::o;11855:417::-;11950:4;11983:10;11950:4;12033:25;11983:10;12050:7;12033:9;:25::i;:::-;12006:52;;12099:15;12079:16;:35;;12071:82;;;;-1:-1:-1;;;12071:82:0;;6069:2:1;12071:82:0;;;6051:21:1;6108:2;6088:18;;;6081:30;6147:34;6127:18;;;6120:62;-1:-1:-1;;;6198:18:1;;;6191:32;6240:19;;12071:82:0;5867:398:1;12071:82:0;12178:60;12187:5;12194:7;12222:15;12203:16;:34;12178:8;:60::i;13493:163::-;13574:4;13591:33;13601:10;13613:2;13617:6;13591:9;:33::i;:::-;-1:-1:-1;13644:4:0;13493:163;;;;:::o;18983:254::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;19103:2:::1;19087:12;:18;;;;:41;;;;;19126:2;19109:13;:19;;;;19087:41;19078:77;;;::::0;-1:-1:-1;;;19078:77:0;;6472:2:1;19078:77:0::1;::::0;::::1;6454:21:1::0;6511:2;6491:18;;;6484:30;-1:-1:-1;;;6530:18:1;;;6523:52;6592:18;;19078:77:0::1;6270:346:1::0;19078:77:0::1;19168:9;:24:::0;;-1:-1:-1;;19203:26:0;19168:24:::1;;::::0;;::::1;;-1:-1:-1::0;;19203:26:0;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18983:254::o;20617:126::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;20703:5:::1;::::0;20696:4:::1;11462:7:::0;11480:18;;;;;;;;;;;20678:57:::1;::::0;-1:-1:-1;;;;;20703:5:0::1;::::0;20678:9:::1;:57::i;:::-;20617:126::o:0;11696:151::-;-1:-1:-1;;;;;11812:18:0;;;11785:7;11812:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11696:151::o;19245:660::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;19423:8:::1;19392:27;:39;;:84;;;;;19466:10;19435:27;:41;;19392:84;19391:141;;;;;19522:10;19494:24;:38;;19391:141;19382:218;;;::::0;-1:-1:-1;;;19382:218:0;;6823:2:1;19382:218:0::1;::::0;::::1;6805:21:1::0;6862:2;6842:18;;;6835:30;6901:34;6881:18;;;6874:62;6972:33;6952:18;;;6945:61;7023:19;;19382:218:0::1;6621:427:1::0;19382:218:0::1;19652:28;:24:::0;19679:1:::1;19652:28;:::i;:::-;19620:27;:61;;19611:160;;;::::0;-1:-1:-1;;;19611:160:0;;7428:2:1;19611:160:0::1;::::0;::::1;7410:21:1::0;7467:2;7447:18;;;7440:30;7506:34;7486:18;;;7479:62;7577:34;7557:18;;;7550:62;-1:-1:-1;;;7628:19:1;;;7621:52;7690:19;;19611:160:0::1;7226:489:1::0;19611:160:0::1;19784:24;:54:::0;;;;19849:21:::1;:48:::0;19245:660::o;19913:534::-;15215:5;;-1:-1:-1;;;;;15215:5:0;15201:10;:19;15193:81;;;;-1:-1:-1;;;15193:81:0;;;;;;;:::i;:::-;20070:24:::1;;20045:22;:49;20044:88;;;;;20122:10;20099:19;:33;;20044:88;20035:147;;;::::0;-1:-1:-1;;;20035:147:0;;7922:2:1;20035:147:0::1;::::0;::::1;7904:21:1::0;7961:2;7941:18;;;7934:30;8000:34;7980:18;;;7973:62;-1:-1:-1;;;8051:18:1;;;8044:43;8104:19;;20035:147:0::1;7720:409:1::0;20035:147:0::1;20229:23;:19:::0;20251:1:::1;20229:23;:::i;:::-;20202:22;:51;;20193:140;;;::::0;-1:-1:-1;;;20193:140:0;;8336:2:1;20193:140:0::1;::::0;::::1;8318:21:1::0;8375:2;8355:18;;;8348:30;8414:34;8394:18;;;8387:62;8485:34;8465:18;;;8458:62;-1:-1:-1;;;8536:19:1;;;8529:42;8588:19;;20193:140:0::1;8134:479:1::0;20193:140:0::1;20346:19;:44:::0;;;;20401:16:::1;:38:::0;19913:534::o;13137:348::-;-1:-1:-1;;;;;13239:19:0;;13231:68;;;;-1:-1:-1;;;13231:68:0;;8820:2:1;13231:68:0;;;8802:21:1;8859:2;8839:18;;;8832:30;8898:34;8878:18;;;8871:62;-1:-1:-1;;;8949:18:1;;;8942:34;8993:19;;13231:68:0;8618:400:1;13231:68:0;-1:-1:-1;;;;;13318:21:0;;13310:68;;;;-1:-1:-1;;;13310:68:0;;9225:2:1;13310:68:0;;;9207:21:1;9264:2;9244:18;;;9237:30;9303:34;9283:18;;;9276:62;-1:-1:-1;;;9354:18:1;;;9347:32;9396:19;;13310:68:0;9023:398:1;13310:68:0;-1:-1:-1;;;;;13391:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13445:32;;160:25:1;;;13445:32:0;;133:18:1;13445:32:0;;;;;;;;13137:348;;;:::o;12530:386::-;12631:24;12658:25;12668:5;12675:7;12658:9;:25::i;:::-;12631:52;;-1:-1:-1;;12700:16:0;:37;12696:213;;12782:6;12762:16;:26;;12754:61;;;;-1:-1:-1;;;12754:61:0;;9628:2:1;12754:61:0;;;9610:21:1;9667:2;9647:18;;;9640:30;-1:-1:-1;;;9686:18:1;;;9679:52;9748:18;;12754:61:0;9426:346:1;12754:61:0;12844:51;12853:5;12860:7;12888:6;12869:16;:25;12844:8;:51::i;:::-;12620:296;12530:386;;;:::o;16042:1969::-;16159:6;16140:15;16150:4;-1:-1:-1;;;;;11480:18:0;11462:7;11480:18;;;;;;;;;;;;11388:113;16140:15;:25;;16132:70;;;;-1:-1:-1;;;16132:70:0;;9979:2:1;16132:70:0;;;9961:21:1;;;9998:18;;;9991:30;10057:34;10037:18;;;10030:62;10109:18;;16132:70:0;9777:356:1;16132:70:0;16264:10;;16215:22;;16264:10;;;;;16395:13;-1:-1:-1;;;;;16387:21:0;;;;;;;;:65;;;16418:13;-1:-1:-1;;;;;16412:19:0;:2;-1:-1:-1;;;;;16412:19:0;;:40;;;;-1:-1:-1;16436:16:0;;;;16435:17;16412:40;16383:1621;;;16481:13;-1:-1:-1;;;;;16473:21:0;:4;-1:-1:-1;;;;;16473:21:0;;16469:658;;-1:-1:-1;16564:4:0;16515:28;11480:18;;;;;;;;;;;16601:9;;16759:19;;16601:9;;;;;;;11480:18;16735:43;;16731:381;;16803:20;:18;:20::i;:::-;16731:381;;;16877:24;;16853:20;:48;16849:263;;17024:68;17048:4;17055:13;17070:21;;17024:15;:68::i;:::-;16496:631;16469:658;-1:-1:-1;;;;;17147:23:0;;;;;;:17;:23;;;;;;;;;:48;;-1:-1:-1;;;;;;17174:21:0;;;;;;:17;:21;;;;;;;;17147:48;17143:726;;;17233:6;17216:23;;17143:726;;;17298:11;;17288:6;:21;;17280:65;;;;-1:-1:-1;;;17280:65:0;;10340:2:1;17280:65:0;;;10322:21:1;10379:2;10359:18;;;10352:30;10418:33;10398:18;;;10391:61;10469:18;;17280:65:0;10138:355:1;17280:65:0;17378:13;-1:-1:-1;;;;;17370:21:0;:4;-1:-1:-1;;;;;17370:21:0;;17366:196;;17452:11;;-1:-1:-1;;;;;11480:18:0;;11462:7;11480:18;;;;;;;;;;;17425:22;;:6;:22;:::i;:::-;17424:39;;17416:81;;;;-1:-1:-1;;;17416:81:0;;10700:2:1;17416:81:0;;;10682:21:1;10739:2;10719:18;;;10712:30;10778:31;10758:18;;;10751:59;10827:18;;17416:81:0;10498:353:1;17416:81:0;-1:-1:-1;17532:10:0;;;;;;;17366:196;17582:11;17657:1;17647:7;:11;;;:56;;-1:-1:-1;17702:1:0;;17647:56;;;-1:-1:-1;17689:3:0;17669:16;;;;;17668:24;;17647:56;-1:-1:-1;17743:12:0;;;;-1:-1:-1;17799:7:0;;17795:59;;17810:41;17826:4;17840;17847:3;17810:15;:41::i;:::-;17261:608;17143:726;17885:41;17901:4;17907:2;17911:14;17885:15;:41::i;:::-;16383:1621;;;17959:33;17975:4;17981:2;17985:6;17959:15;:33::i;:::-;16121:1890;;16042:1969;;;:::o;18120:419::-;15109:16;:23;;-1:-1:-1;;15109:23:0;15128:4;15109:23;;;18206:16:::1;::::0;;18220:1:::1;18206:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18206:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18206:16:0::1;18182:40;;18253:4;18235;18240:1;18235:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18235:23:0::1;;;-1:-1:-1::0;;;;;18235:23:0::1;;;::::0;::::1;18279:15;-1:-1:-1::0;;;;;18279:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18269:4;18274:1;18269:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18269:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;18385:16:::1;::::0;18318:15:::1;:66:::0;;::::1;::::0;::::1;::::0;18403:1:::1;18406:4:::0;18420::::1;18428:21;:15;18446:3;18428:21;:::i;:::-;18318:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;18314:218:::0;::::1;;18472:39;18494:16;;18472:39;;;;160:25:1::0;;148:2;133:18;;14:177;18472:39:0::1;;;;;;;;18314:218;-1:-1:-1::0;15137:16:0;:24;;-1:-1:-1;;15137:24:0;;;18120:419::o;13664:240::-;-1:-1:-1;;;;;13778:15:0;;;:9;:15;;;;;;;;;;;:25;;;;;;;13818:13;;;;;;;;;;:23;;;;;;13870:26;;160:25:1;;;13818:13:0;;13870:26;;133:18:1;13870:26:0;14:177:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1820:456::-;1897:6;1905;1913;1966:2;1954:9;1945:7;1941:23;1937:32;1934:52;;;1982:1;1979;1972:12;1934:52;2021:9;2008:23;2040:31;2065:5;2040:31;:::i;:::-;2090:5;-1:-1:-1;2147:2:1;2132:18;;2119:32;2160:33;2119:32;2160:33;:::i;:::-;1820:456;;2212:7;;-1:-1:-1;;;2266:2:1;2251:18;;;;2238:32;;1820:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;:::-;2725:5;2489:247;-1:-1:-1;;;2489:247:1:o;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:156::-;2992:20;;3052:4;3041:16;;3031:27;;3021:55;;3072:1;3069;3062:12;3021:55;2926:156;;;:::o;3087:252::-;3151:6;3159;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;3251:27;3268:9;3251:27;:::i;:::-;3241:37;;3297:36;3329:2;3318:9;3314:18;3297:36;:::i;:::-;3287:46;;3087:252;;;;;:::o;3344:388::-;3412:6;3420;3473:2;3461:9;3452:7;3448:23;3444:32;3441:52;;;3489:1;3486;3479:12;3441:52;3528:9;3515:23;3547:31;3572:5;3547:31;:::i;:::-;3597:5;-1:-1:-1;3654:2:1;3639:18;;3626:32;3667:33;3626:32;3667:33;:::i;:::-;3719:7;3709:17;;;3344:388;;;;;:::o;3737:248::-;3805:6;3813;3866:2;3854:9;3845:7;3841:23;3837:32;3834:52;;;3882:1;3879;3872:12;3834:52;-1:-1:-1;;3905:23:1;;;3975:2;3960:18;;;3947:32;;-1:-1:-1;3737:248:1:o;3990:380::-;4069:1;4065:12;;;;4112;;;4133:61;;4187:4;4179:6;4175:17;4165:27;;4133:61;4240:2;4232:6;4229:14;4209:18;4206:38;4203:161;;4286:10;4281:3;4277:20;4274:1;4267:31;4321:4;4318:1;4311:15;4349:4;4346:1;4339:15;4203:161;;3990:380;;;:::o;4375:127::-;4436:10;4431:3;4427:20;4424:1;4417:31;4467:4;4464:1;4457:15;4491:4;4488:1;4481:15;4507:125;4572:9;;;4593:10;;;4590:36;;;4606:18;;:::i;4637:413::-;4839:2;4821:21;;;4878:2;4858:18;;;4851:30;4917:34;4912:2;4897:18;;4890:62;-1:-1:-1;;;4983:2:1;4968:18;;4961:47;5040:3;5025:19;;4637:413::o;7053:168::-;7126:9;;;7157;;7174:15;;;7168:22;;7154:37;7144:71;;7195:18;;:::i;11120:127::-;11181:10;11176:3;11172:20;11169:1;11162:31;11212:4;11209:1;11202:15;11236:4;11233:1;11226:15;11252:251;11322:6;11375:2;11363:9;11354:7;11350:23;11346:32;11343:52;;;11391:1;11388;11381:12;11343:52;11423:9;11417:16;11442:31;11467:5;11442:31;:::i;11508:980::-;11770:4;11818:3;11807:9;11803:19;11849:6;11838:9;11831:25;11875:2;11913:6;11908:2;11897:9;11893:18;11886:34;11956:3;11951:2;11940:9;11936:18;11929:31;11980:6;12015;12009:13;12046:6;12038;12031:22;12084:3;12073:9;12069:19;12062:26;;12123:2;12115:6;12111:15;12097:29;;12144:1;12154:195;12168:6;12165:1;12162:13;12154:195;;;12233:13;;-1:-1:-1;;;;;12229:39:1;12217:52;;12324:15;;;;12289:12;;;;12265:1;12183:9;12154:195;;;-1:-1:-1;;;;;;;12405:32:1;;;;12400:2;12385:18;;12378:60;-1:-1:-1;;;12469:3:1;12454:19;12447:35;12366:3;11508:980;-1:-1:-1;;;11508:980:1:o

Swarm Source

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