ETH Price: $2,596.89 (-2.50%)

Token

Forever United Crypto Kings (FUCK)
 

Overview

Max Total Supply

1,000,000,000 FUCK

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,917,110.882189259 FUCK

Value
$0.00
0x7f1b452815697DE246e9E4F86f3006200990B77c
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:
Fuck

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 8: Fuck.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "./Erc20.sol";
import "./IUniswapV2Router02.sol";
import "./IUniswapV2Factory.sol";
import "./Ownable.sol";

contract PoolableErc20 is ERC20 {
    uint256 immutable _liquidityCreateCount;
    IUniswapV2Router02 constant uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address internal pair;
    uint256 internal _startTime;
    bool internal _inSwap;

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 liquidityCreateCount_
    ) ERC20(name_, symbol_) {
        _liquidityCreateCount = liquidityCreateCount_;
    }

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

    function createPair() external payable lockTheSwap {
        pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _mint(address(this), _liquidityCreateCount);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _liquidityCreateCount,
            0,
            0,
            msg.sender,
            block.timestamp
        );
        _startTime = block.timestamp;
    }

    function _swapTokensForEth(
        uint256 tokenAmount,
        address to
    ) internal lockTheSwap {
        if (tokenAmount == 0) return;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // make the swap
        uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            to,
            block.timestamp
        );
    }
}

contract Fuck is Ownable, PoolableErc20 {
    uint256 constant startTotalSupply = 1e9 * (10 ** _decimals);
    uint256 constant _startMaxBuyCount = (startTotalSupply * 50) / 10000;
    uint256 constant _addMaxBuyPercentPerSec = 5; // 100%=_addMaxBuyPrecesion add 0.005%/second
    uint256 constant _addMaxBuyPrecesion = 100000;
    uint256 public taxShare = 200; // 100%=taxPrecesion
    uint256 constant taxPrecesion = 1000;
    address public factory;

    constructor() PoolableErc20("Forever United Crypto Kings", "FUCK", startTotalSupply) {
        factory = msg.sender;
    }

    modifier maxBuyLimit(uint256 amount) {
        require(amount <= maximumBuyCount(), "max buy transaction limit");
        _;
    }

    function taxShareChange(uint256 newShare) external onlyOwner {
        require(newShare <= taxShare);
        taxShare = newShare;
    }

    function setFactory(address factoryAddress) external onlyOwner {
        factory = factoryAddress;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (_inSwap) {
            super._transfer(from, to, amount);
            return;
        }

        if (to == address(0)) {
            _burn(from, amount);
            return;
        }

        if (from == pair) {
            buy(to, amount);
            return;
        }

        if (to == pair) {
            sell(from, amount);
            return;
        }

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

    function buy(address to, uint256 amount) private maxBuyLimit(amount) {
        uint256 tax = (amount * taxShare) / taxPrecesion;
        if (tax > 0) super._transfer(pair, address(this), tax);
        super._transfer(pair, to, amount - tax);
    }

    function sell(address from, uint256 amount) private {
        uint256 tax = (amount * taxShare) / taxPrecesion;
        uint256 swapCount = balanceOf(address(this));
        if (swapCount > 2 * amount) swapCount = 2 * amount;
        _swapTokensForEth(swapCount, address(factory));
        if (tax > 0) super._transfer(from, address(this), tax);
        super._transfer(from, pair, amount - tax);
    }

    function burned() public view returns (uint256) {
        return startTotalSupply - totalSupply();
    }

    function maximumBuyCount() public view returns (uint256) {
        if (pair == address(0)) return startTotalSupply;
        uint256 count = _startMaxBuyCount +
            (startTotalSupply *
                (block.timestamp - _startTime) *
                _addMaxBuyPercentPerSec) /
            _addMaxBuyPrecesion;
        if (count > startTotalSupply) count = startTotalSupply;
        return count;
    }

    function maximumBuyCountWithoutDecimals() public view returns (uint256) {
        return maximumBuyCount() / (10 ** _decimals);
    }
}

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

pragma solidity ^0.8.0;

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

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

File 2 of 8: Erc20.sol
// Telegram: https://t.me/christmascola

pragma solidity ^0.8.23;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 internal _totalSupply;
    uint8 internal constant _decimals = 9;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}

File 4 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 5 of 8: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 6 of 8: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

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

File 7 of 8: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

interface IUniswapV2Router02 {
    function swapExactTokensForETH(
        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;

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    function getReserves(
        address factory,
        address tokenA,
        address tokenB
    ) external view returns (uint reserveA, uint reserveB);

    function getAmountsIn(
        uint amountOut,
        address[] memory path
    ) external view returns (uint[] memory amounts);

    function getAmountsOut(
        uint amountIn,
        address[] memory path
    ) external view returns (uint[] memory amounts);
}

File 8 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

contract Ownable {
    address _owner;

    event RenounceOwnership();

    constructor() {
        _owner = msg.sender;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "only owner");
        _;
    }

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

    function ownerRenounce() external onlyOwner {
        _owner = address(0);
        emit RenounceOwnership();
    }
}

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":[],"name":"RenounceOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"payable","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":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maximumBuyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumBuyCountWithoutDecimals","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":"ownerRenounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factoryAddress","type":"address"}],"name":"setFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newShare","type":"uint256"}],"name":"taxShareChange","outputs":[],"stateMutability":"nonpayable","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"}]

60a060405260c860095534801562000015575f80fd5b506040518060400160405280601b81526020017f466f726576657220556e697465642043727970746f204b696e67730000000000815250604051806040016040528060048152602001634655434b60e01b8152506009600a620000799190620001e8565b6200008990633b9aca00620001ff565b5f80546001600160a01b0319163317905582826004620000aa8382620002b7565b506005620000b98282620002b7565b5050506080525050600a80546001600160a01b0319163317905562000383565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200012d57815f1904821115620001115762000111620000d9565b808516156200011f57918102915b93841c9390800290620000f2565b509250929050565b5f826200014557506001620001e2565b816200015357505f620001e2565b81600181146200016c5760028114620001775762000197565b6001915050620001e2565b60ff8411156200018b576200018b620000d9565b50506001821b620001e2565b5060208310610133831016604e8410600b8410161715620001bc575081810a620001e2565b620001c88383620000ed565b805f1904821115620001de57620001de620000d9565b0290505b92915050565b5f620001f860ff84168362000135565b9392505050565b8082028115828204841417620001e257620001e2620000d9565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200024257607f821691505b6020821081036200026157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002b257805f5260205f20601f840160051c810160208510156200028e5750805b601f840160051c820191505b81811015620002af575f81556001016200029a565b50505b505050565b81516001600160401b03811115620002d357620002d362000219565b620002eb81620002e484546200022d565b8462000267565b602080601f83116001811462000321575f8415620003095750858301515b5f19600386901b1c1916600185901b1785556200037b565b5f85815260208120601f198616915b82811015620003515788860151825594840194600190910190840162000330565b50858210156200036f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805161162d620003a35f395f8181610715015261076e015261162d5ff3fe608060405260043610610126575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb14610301578063af58c64714610320578063c45a015514610334578063dc04ab5714610353578063dd62ed3e14610368578063e2a2617a14610387575f80fd5b80638da5cb5b1461027757806395d89b41146102a75780639e78fb4f146102bb578063a457c2d7146102c3578063a5628796146102e2575f80fd5b8063333a0072116100ee578063333a0072146101db57806339509351146101f15780635bb478081461021057806370a082311461022f57806373f4256114610263575f80fd5b806306fdde031461012a578063095ea7b31461015457806318160ddd1461018357806323b872dd146101a1578063313ce567146101c0575b5f80fd5b348015610135575f80fd5b5061013e61039b565b60405161014b9190611237565b60405180910390f35b34801561015f575f80fd5b5061017361016e36600461129a565b61042b565b604051901515815260200161014b565b34801561018e575f80fd5b506003545b60405190815260200161014b565b3480156101ac575f80fd5b506101736101bb3660046112c4565b610444565b3480156101cb575f80fd5b506040516009815260200161014b565b3480156101e6575f80fd5b506101ef610467565b005b3480156101fc575f80fd5b5061017361020b36600461129a565b6104d1565b34801561021b575f80fd5b506101ef61022a366004611302565b6104f2565b34801561023a575f80fd5b50610193610249366004611302565b6001600160a01b03165f9081526001602052604090205490565b34801561026e575f80fd5b5061019361053d565b348015610282575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161014b565b3480156102b2575f80fd5b5061013e610570565b6101ef61057f565b3480156102ce575f80fd5b506101736102dd36600461129a565b610820565b3480156102ed575f80fd5b506101ef6102fc366004611324565b61089a565b34801561030c575f80fd5b5061017361031b36600461129a565b6108d6565b34801561032b575f80fd5b506101936108e3565b34801561033f575f80fd5b50600a5461028f906001600160a01b031681565b34801561035e575f80fd5b5061019360095481565b348015610373575f80fd5b5061019361038236600461133b565b610902565b348015610392575f80fd5b5061019361092c565b6060600480546103aa90611372565b80601f01602080910402602001604051908101604052809291908181526020018280546103d690611372565b80156104215780601f106103f857610100808354040283529160200191610421565b820191905f5260205f20905b81548152906001019060200180831161040457829003601f168201915b5050505050905090565b5f33610438818585610a26565b60019150505b92915050565b5f33610451858285610b4a565b61045c858585610bc2565b506001949350505050565b5f546001600160a01b031633146104995760405162461bcd60e51b8152600401610490906113aa565b60405180910390fd5b5f80546001600160a01b03191681556040517f6e4ee811a17215345b89e3506064ff2d62f4feedff3566e9d09219cda7e8cadb9190a1565b5f336104388185856104e38383610902565b6104ed91906113e2565b610a26565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610490906113aa565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61054760035490565b6105536009600a6114d5565b61056190633b9aca006114e3565b61056b91906114fa565b905090565b6060600580546103aa90611372565b6008805460ff191660011790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa1580156105da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fe919061150d565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610681919061150d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef919061150d565b600680546001600160a01b0319166001600160a01b0392909216919091179055610739307f0000000000000000000000000000000000000000000000000000000000000000610c40565b61075930737a250d5630b4cf539739df2c5dacb4c659f2488d5f19610a26565b60405163f305d71960e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156107e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061080d9190611528565b505042600755506008805460ff19169055565b5f338161082d8286610902565b90508381101561088d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610490565b61045c8286868403610a26565b5f546001600160a01b031633146108c35760405162461bcd60e51b8152600401610490906113aa565b6009548111156108d1575f80fd5b600955565b5f33610438818585610bc2565b5f6108f06009600a6114d5565b6108f861092c565b61056b9190611553565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6006545f906001600160a01b03166109585761094a6009600a6114d5565b61056b90633b9aca006114e3565b5f620186a060056007544261096d91906114fa565b6109796009600a6114d5565b61098790633b9aca006114e3565b61099191906114e3565b61099b91906114e3565b6109a59190611553565b6127106109b46009600a6114d5565b6109c290633b9aca006114e3565b6109cd9060326114e3565b6109d79190611553565b6109e191906113e2565b90506109ef6009600a6114d5565b6109fd90633b9aca006114e3565b811115610a2157610a106009600a6114d5565b610a1e90633b9aca006114e3565b90505b919050565b6001600160a01b038316610a885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610490565b6001600160a01b038216610ae95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610490565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610b558484610902565b90505f198114610bbc5781811015610baf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610490565b610bbc8484848403610a26565b50505050565b60085460ff1615610bdd57610bd8838383610cff565b505050565b6001600160a01b038216610bf557610bd88382610e47565b6006546001600160a01b0390811690841603610c1557610bd88282610f71565b6006546001600160a01b0390811690831603610c3557610bd88382611024565b610bd8838383610cff565b6001600160a01b038216610c965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610490565b8060035f828254610ca791906113e2565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316610d635760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610490565b6001600160a01b0383165f9081526001602052604090205481811015610dda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610490565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e399086815260200190565b60405180910390a350505050565b6001600160a01b038216610ea75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610490565b6001600160a01b0382165f9081526001602052604090205481811015610f1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610490565b6001600160a01b0383165f8181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b3d565b80610f7a61092c565b811115610fc95760405162461bcd60e51b815260206004820152601960248201527f6d617820627579207472616e73616374696f6e206c696d6974000000000000006044820152606401610490565b5f6103e860095484610fdb91906114e3565b610fe59190611553565b9050801561100457600654611004906001600160a01b03163083610cff565b600654610bbc906001600160a01b03168561101f84876114fa565b610cff565b5f6103e86009548361103691906114e3565b6110409190611553565b305f9081526001602052604090205490915061105d8360026114e3565b8111156110725761106f8360026114e3565b90505b600a546110899082906001600160a01b03166110b6565b811561109a5761109a843084610cff565b600654610bbc9085906001600160a01b031661101f85876114fa565b6008805460ff191660011790558115611229576040805160028082526060820183525f9260208301908036833701905050905030815f815181106110fc576110fc611572565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611190919061150d565b816001815181106111a3576111a3611572565b6001600160a01b03909216602092830291909101909101526040516318cbafe560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe5906111fa9086905f90869088904290600401611586565b5f604051808303815f87803b158015611211575f80fd5b505af1158015611223573d5f803e3d5ffd5b50505050505b50506008805460ff19169055565b5f602080835283518060208501525f5b8181101561126357858101830151858201604001528201611247565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611297575f80fd5b50565b5f80604083850312156112ab575f80fd5b82356112b681611283565b946020939093013593505050565b5f805f606084860312156112d6575f80fd5b83356112e181611283565b925060208401356112f181611283565b929592945050506040919091013590565b5f60208284031215611312575f80fd5b813561131d81611283565b9392505050565b5f60208284031215611334575f80fd5b5035919050565b5f806040838503121561134c575f80fd5b823561135781611283565b9150602083013561136781611283565b809150509250929050565b600181811c9082168061138657607f821691505b6020821081036113a457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043e5761043e6113ce565b600181815b8085111561142f57815f1904821115611415576114156113ce565b8085161561142257918102915b93841c93908002906113fa565b509250929050565b5f826114455750600161043e565b8161145157505f61043e565b816001811461146757600281146114715761148d565b600191505061043e565b60ff841115611482576114826113ce565b50506001821b61043e565b5060208310610133831016604e8410600b84101617156114b0575081810a61043e565b6114ba83836113f5565b805f19048211156114cd576114cd6113ce565b029392505050565b5f61131d60ff841683611437565b808202811582820484141761043e5761043e6113ce565b8181038181111561043e5761043e6113ce565b5f6020828403121561151d575f80fd5b815161131d81611283565b5f805f6060848603121561153a575f80fd5b8351925060208401519150604084015190509250925092565b5f8261156d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156115d65784516001600160a01b0316835293830193918301916001016115b1565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ad04aa3c4db43c07132dfffe0216574dc58d8eb02a095964605e4cfb3a1de0cc64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610126575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb14610301578063af58c64714610320578063c45a015514610334578063dc04ab5714610353578063dd62ed3e14610368578063e2a2617a14610387575f80fd5b80638da5cb5b1461027757806395d89b41146102a75780639e78fb4f146102bb578063a457c2d7146102c3578063a5628796146102e2575f80fd5b8063333a0072116100ee578063333a0072146101db57806339509351146101f15780635bb478081461021057806370a082311461022f57806373f4256114610263575f80fd5b806306fdde031461012a578063095ea7b31461015457806318160ddd1461018357806323b872dd146101a1578063313ce567146101c0575b5f80fd5b348015610135575f80fd5b5061013e61039b565b60405161014b9190611237565b60405180910390f35b34801561015f575f80fd5b5061017361016e36600461129a565b61042b565b604051901515815260200161014b565b34801561018e575f80fd5b506003545b60405190815260200161014b565b3480156101ac575f80fd5b506101736101bb3660046112c4565b610444565b3480156101cb575f80fd5b506040516009815260200161014b565b3480156101e6575f80fd5b506101ef610467565b005b3480156101fc575f80fd5b5061017361020b36600461129a565b6104d1565b34801561021b575f80fd5b506101ef61022a366004611302565b6104f2565b34801561023a575f80fd5b50610193610249366004611302565b6001600160a01b03165f9081526001602052604090205490565b34801561026e575f80fd5b5061019361053d565b348015610282575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161014b565b3480156102b2575f80fd5b5061013e610570565b6101ef61057f565b3480156102ce575f80fd5b506101736102dd36600461129a565b610820565b3480156102ed575f80fd5b506101ef6102fc366004611324565b61089a565b34801561030c575f80fd5b5061017361031b36600461129a565b6108d6565b34801561032b575f80fd5b506101936108e3565b34801561033f575f80fd5b50600a5461028f906001600160a01b031681565b34801561035e575f80fd5b5061019360095481565b348015610373575f80fd5b5061019361038236600461133b565b610902565b348015610392575f80fd5b5061019361092c565b6060600480546103aa90611372565b80601f01602080910402602001604051908101604052809291908181526020018280546103d690611372565b80156104215780601f106103f857610100808354040283529160200191610421565b820191905f5260205f20905b81548152906001019060200180831161040457829003601f168201915b5050505050905090565b5f33610438818585610a26565b60019150505b92915050565b5f33610451858285610b4a565b61045c858585610bc2565b506001949350505050565b5f546001600160a01b031633146104995760405162461bcd60e51b8152600401610490906113aa565b60405180910390fd5b5f80546001600160a01b03191681556040517f6e4ee811a17215345b89e3506064ff2d62f4feedff3566e9d09219cda7e8cadb9190a1565b5f336104388185856104e38383610902565b6104ed91906113e2565b610a26565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610490906113aa565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61054760035490565b6105536009600a6114d5565b61056190633b9aca006114e3565b61056b91906114fa565b905090565b6060600580546103aa90611372565b6008805460ff191660011790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa1580156105da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fe919061150d565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610681919061150d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef919061150d565b600680546001600160a01b0319166001600160a01b0392909216919091179055610739307f0000000000000000000000000000000000000000000000000de0b6b3a7640000610c40565b61075930737a250d5630b4cf539739df2c5dacb4c659f2488d5f19610a26565b60405163f305d71960e01b81523060048201527f0000000000000000000000000000000000000000000000000de0b6b3a764000060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156107e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061080d9190611528565b505042600755506008805460ff19169055565b5f338161082d8286610902565b90508381101561088d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610490565b61045c8286868403610a26565b5f546001600160a01b031633146108c35760405162461bcd60e51b8152600401610490906113aa565b6009548111156108d1575f80fd5b600955565b5f33610438818585610bc2565b5f6108f06009600a6114d5565b6108f861092c565b61056b9190611553565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6006545f906001600160a01b03166109585761094a6009600a6114d5565b61056b90633b9aca006114e3565b5f620186a060056007544261096d91906114fa565b6109796009600a6114d5565b61098790633b9aca006114e3565b61099191906114e3565b61099b91906114e3565b6109a59190611553565b6127106109b46009600a6114d5565b6109c290633b9aca006114e3565b6109cd9060326114e3565b6109d79190611553565b6109e191906113e2565b90506109ef6009600a6114d5565b6109fd90633b9aca006114e3565b811115610a2157610a106009600a6114d5565b610a1e90633b9aca006114e3565b90505b919050565b6001600160a01b038316610a885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610490565b6001600160a01b038216610ae95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610490565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610b558484610902565b90505f198114610bbc5781811015610baf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610490565b610bbc8484848403610a26565b50505050565b60085460ff1615610bdd57610bd8838383610cff565b505050565b6001600160a01b038216610bf557610bd88382610e47565b6006546001600160a01b0390811690841603610c1557610bd88282610f71565b6006546001600160a01b0390811690831603610c3557610bd88382611024565b610bd8838383610cff565b6001600160a01b038216610c965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610490565b8060035f828254610ca791906113e2565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316610d635760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610490565b6001600160a01b0383165f9081526001602052604090205481811015610dda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610490565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e399086815260200190565b60405180910390a350505050565b6001600160a01b038216610ea75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610490565b6001600160a01b0382165f9081526001602052604090205481811015610f1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610490565b6001600160a01b0383165f8181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b3d565b80610f7a61092c565b811115610fc95760405162461bcd60e51b815260206004820152601960248201527f6d617820627579207472616e73616374696f6e206c696d6974000000000000006044820152606401610490565b5f6103e860095484610fdb91906114e3565b610fe59190611553565b9050801561100457600654611004906001600160a01b03163083610cff565b600654610bbc906001600160a01b03168561101f84876114fa565b610cff565b5f6103e86009548361103691906114e3565b6110409190611553565b305f9081526001602052604090205490915061105d8360026114e3565b8111156110725761106f8360026114e3565b90505b600a546110899082906001600160a01b03166110b6565b811561109a5761109a843084610cff565b600654610bbc9085906001600160a01b031661101f85876114fa565b6008805460ff191660011790558115611229576040805160028082526060820183525f9260208301908036833701905050905030815f815181106110fc576110fc611572565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611190919061150d565b816001815181106111a3576111a3611572565b6001600160a01b03909216602092830291909101909101526040516318cbafe560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe5906111fa9086905f90869088904290600401611586565b5f604051808303815f87803b158015611211575f80fd5b505af1158015611223573d5f803e3d5ffd5b50505050505b50506008805460ff19169055565b5f602080835283518060208501525f5b8181101561126357858101830151858201604001528201611247565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611297575f80fd5b50565b5f80604083850312156112ab575f80fd5b82356112b681611283565b946020939093013593505050565b5f805f606084860312156112d6575f80fd5b83356112e181611283565b925060208401356112f181611283565b929592945050506040919091013590565b5f60208284031215611312575f80fd5b813561131d81611283565b9392505050565b5f60208284031215611334575f80fd5b5035919050565b5f806040838503121561134c575f80fd5b823561135781611283565b9150602083013561136781611283565b809150509250929050565b600181811c9082168061138657607f821691505b6020821081036113a457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043e5761043e6113ce565b600181815b8085111561142f57815f1904821115611415576114156113ce565b8085161561142257918102915b93841c93908002906113fa565b509250929050565b5f826114455750600161043e565b8161145157505f61043e565b816001811461146757600281146114715761148d565b600191505061043e565b60ff841115611482576114826113ce565b50506001821b61043e565b5060208310610133831016604e8410600b84101617156114b0575081810a61043e565b6114ba83836113f5565b805f19048211156114cd576114cd6113ce565b029392505050565b5f61131d60ff841683611437565b808202811582820484141761043e5761043e6113ce565b8181038181111561043e5761043e6113ce565b5f6020828403121561151d575f80fd5b815161131d81611283565b5f805f6060848603121561153a575f80fd5b8351925060208401519150604084015190509250925092565b5f8261156d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156115d65784516001600160a01b0316835293830193918301916001016115b1565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ad04aa3c4db43c07132dfffe0216574dc58d8eb02a095964605e4cfb3a1de0cc64736f6c63430008170033

Deployed Bytecode Sourcemap

1853:2834:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;817:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3151:219;;;;;;;;;;-1:-1:-1;3151:219:1;;;;;:::i;:::-;;:::i;:::-;;;1188:14:8;;1181:22;1163:41;;1151:2;1136:18;3151:219:1;1023:187:8;1904:106:1;;;;;;;;;;-1:-1:-1;1991:12:1;;1904:106;;;1361:25:8;;;1349:2;1334:18;1904:106:1;1215:177:8;3932:286:1;;;;;;;;;;-1:-1:-1;3932:286:1;;;;;:::i;:::-;;:::i;1763:81::-;;;;;;;;;;-1:-1:-1;1763:81:1;;400:1;2000:36:8;;1988:2;1973:18;1763:81:1;1858:184:8;381:114:7;;;;;;;;;;;;;:::i;:::-;;4613:256:1;;;;;;;;;;-1:-1:-1;4613:256:1;;;;;:::i;:::-;;:::i;2718:104:2:-;;;;;;;;;;-1:-1:-1;2718:104:2;;;;;:::i;:::-;;:::i;2068:139:1:-;;;;;;;;;;-1:-1:-1;2068:139:1;;;;;:::i;:::-;-1:-1:-1;;;;;2182:18:1;2156:7;2182:18;;;:9;:18;;;;;;;2068:139;4028:104:2;;;;;;;;;;;;;:::i;288:87:7:-;;;;;;;;;;-1:-1:-1;336:7:7;362:6;-1:-1:-1;;;;;362:6:7;288:87;;;-1:-1:-1;;;;;2463:32:8;;;2445:51;;2433:2;2418:18;288:87:7;2299:203:8;1028:102:1;;;;;;;;;;;;;:::i;770:586:2:-;;;:::i;5356:483:1:-;;;;;;;;;;-1:-1:-1;5356:483:1;;;;;:::i;:::-;;:::i;2576:136:2:-;;;;;;;;;;-1:-1:-1;2576:136:2;;;;;:::i;:::-;;:::i;2403:211:1:-;;;;;;;;;;-1:-1:-1;2403:211:1;;;;;:::i;:::-;;:::i;4552:133:2:-;;;;;;;;;;;;;:::i;2283:22::-;;;;;;;;;;-1:-1:-1;2283:22:2;;;;-1:-1:-1;;;;;2283:22:2;;;2185:29;;;;;;;;;;;;;;;;2672:171:1;;;;;;;;;;-1:-1:-1;2672:171:1;;;;;:::i;:::-;;:::i;4138:408:2:-;;;;;;;;;;;;;:::i;817:98:1:-;871:13;903:5;896:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;817:98;:::o;3151:219::-;3256:4;719:10:0;3310:32:1;719:10:0;3326:7:1;3335:6;3310:8;:32::i;:::-;3359:4;3352:11;;;3151:219;;;;;:::o;3932:286::-;4059:4;719:10:0;4115:38:1;4131:4;719:10:0;4146:6:1;4115:15;:38::i;:::-;4163:27;4173:4;4179:2;4183:6;4163:9;:27::i;:::-;-1:-1:-1;4207:4:1;;3932:286;-1:-1:-1;;;;3932:286:1:o;381:114:7:-;229:6;;-1:-1:-1;;;;;229:6:7;239:10;229:20;221:43;;;;-1:-1:-1;;;221:43:7;;;;;;;:::i;:::-;;;;;;;;;452:1:::1;435:19:::0;;-1:-1:-1;;;;;;435:19:7::1;::::0;;469::::1;::::0;::::1;::::0;452:1;469:19:::1;381:114::o:0;4613:256:1:-;4723:4;719:10:0;4777:64:1;719:10:0;4793:7:1;4830:10;4802:25;719:10:0;4793:7:1;4802:9;:25::i;:::-;:38;;;;:::i;:::-;4777:8;:64::i;2718:104:2:-;229:6:7;;-1:-1:-1;;;;;229:6:7;239:10;229:20;221:43;;;;-1:-1:-1;;;221:43:7;;;;;;;:::i;:::-;2791:7:2::1;:24:::0;;-1:-1:-1;;;;;;2791:24:2::1;-1:-1:-1::0;;;;;2791:24:2;;;::::1;::::0;;;::::1;::::0;;2718:104::o;4028:::-;4067:7;4112:13;1991:12:1;;;1904:106;4112:13:2;1942:15;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;:::-;4093:32;;;;:::i;:::-;4086:39;;4028:104;:::o;1028:102:1:-;1084:13;1116:7;1109:14;;;;;:::i;770:586:2:-;707:7;:14;;-1:-1:-1;;707:14:2;717:4;707:14;;;856:25:::1;::::0;;-1:-1:-1;;;856:25:2;;;;330:42:::1;::::0;856:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;330:42;856:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;838:55:2::1;;915:4;330:42;-1:-1:-1::0;;;;;934:20:2::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;838:128;::::0;-1:-1:-1;;;;;;838:128:2::1;::::0;;;;;;-1:-1:-1;;;;;6240:15:8;;;838:128:2::1;::::0;::::1;6222:34:8::0;6292:15;;6272:18;;;6265:43;6157:18;;838:128:2::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;831:4;:135:::0;;-1:-1:-1;;;;;;831:135:2::1;-1:-1:-1::0;;;;;831:135:2;;;::::1;::::0;;;::::1;::::0;;976:43:::1;990:4;997:21;976:5;:43::i;:::-;1029:68;1046:4;330:42;-1:-1:-1::0;;1029:8:2::1;:68::i;:::-;1107:204;::::0;-1:-1:-1;;;1107:204:2;;1178:4:::1;1107:204;::::0;::::1;6660:34:8::0;1197:21:2::1;6710:18:8::0;;;6703:34;1232:1:2::1;6753:18:8::0;;;6746:34;;;6796:18;;;6789:34;1262:10:2::1;6839:19:8::0;;;6832:44;1286:15:2::1;6892:19:8::0;;;6885:35;330:42:2::1;::::0;1107:31:::1;::::0;1146:9:::1;::::0;6594:19:8;;1107:204:2::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;1334:15:2::1;1321:10;:28:::0;-1:-1:-1;742:7:2;:15;;-1:-1:-1;;742:15:2;;;770:586::o;5356:483:1:-;5471:4;719:10:0;5471:4:1;5552:25;719:10:0;5569:7:1;5552:9;:25::i;:::-;5525:52;;5628:15;5608:16;:35;;5587:119;;;;-1:-1:-1;;;5587:119:1;;7444:2:8;5587:119:1;;;7426:21:8;7483:2;7463:18;;;7456:30;7522:34;7502:18;;;7495:62;-1:-1:-1;;;7573:18:8;;;7566:35;7618:19;;5587:119:1;7242:401:8;5587:119:1;5740:60;5749:5;5756:7;5784:15;5765:16;:34;5740:8;:60::i;2576:136:2:-;229:6:7;;-1:-1:-1;;;;;229:6:7;239:10;229:20;221:43;;;;-1:-1:-1;;;221:43:7;;;;;;;:::i;:::-;2667:8:2::1;;2655;:20;;2647:29;;;::::0;::::1;;2686:8;:19:::0;2576:136::o;2403:211:1:-;2504:4;719:10:0;2558:28:1;719:10:0;2575:2:1;2579:6;2558:9;:28::i;4552:133:2:-;4615:7;4662:15;400:1:1;4662:2:2;:15;:::i;:::-;4641:17;:15;:17::i;:::-;:37;;;;:::i;2672:171:1:-;-1:-1:-1;;;;;2809:18:1;;;2783:7;2809:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2672:171::o;4138:408:2:-;4209:4;;4186:7;;-1:-1:-1;;;;;4209:4:2;4205:47;;1942:15;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;4205:47::-;4262:13;2173:6;2081:1;4365:10;;4347:15;:28;;;;:::i;:::-;1942:15;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;:::-;4311:65;;;;:::i;:::-;:107;;;;:::i;:::-;4310:143;;;;:::i;:::-;2027:5;1942:15;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;:::-;2002:21;;2021:2;2002:21;:::i;:::-;2001:31;;;;:::i;:::-;4278:175;;;;:::i;:::-;4262:191;-1:-1:-1;1942:15:2;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;:::-;4467:5;:24;4463:54;;;1942:15;400:1:1;1942:2:2;:15;:::i;:::-;1935:23;;:3;:23;:::i;:::-;4493:24;;4463:54;4534:5;4138:408;-1:-1:-1;4138:408:2:o;8947:370:1:-;-1:-1:-1;;;;;9078:19:1;;9070:68;;;;-1:-1:-1;;;9070:68:1;;8072:2:8;9070:68:1;;;8054:21:8;8111:2;8091:18;;;8084:30;8150:34;8130:18;;;8123:62;-1:-1:-1;;;8201:18:8;;;8194:34;8245:19;;9070:68:1;7870:400:8;9070:68:1;-1:-1:-1;;;;;9156:21:1;;9148:68;;;;-1:-1:-1;;;9148:68:1;;8477:2:8;9148:68:1;;;8459:21:8;8516:2;8496:18;;;8489:30;8555:34;8535:18;;;8528:62;-1:-1:-1;;;8606:18:8;;;8599:32;8648:19;;9148:68:1;8275:398:8;9148:68:1;-1:-1:-1;;;;;9227:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9278:32;;1361:25:8;;;9278:32:1;;1334:18:8;9278:32:1;;;;;;;;8947:370;;;:::o;9598:487::-;9728:24;9755:25;9765:5;9772:7;9755:9;:25::i;:::-;9728:52;;-1:-1:-1;;9794:16:1;:37;9790:289;;9892:6;9872:16;:26;;9847:114;;;;-1:-1:-1;;;9847:114:1;;8880:2:8;9847:114:1;;;8862:21:8;8919:2;8899:18;;;8892:30;8958:31;8938:18;;;8931:59;9007:18;;9847:114:1;8678:353:8;9847:114:1;10003:51;10012:5;10019:7;10047:6;10028:16;:25;10003:8;:51::i;:::-;9718:367;9598:487;;;:::o;2828:533:2:-;2951:7;;;;2947:91;;;2974:33;2990:4;2996:2;3000:6;2974:15;:33::i;:::-;2828:533;;;:::o;2947:91::-;-1:-1:-1;;;;;3052:16:2;;3048:86;;3084:19;3090:4;3096:6;3084:5;:19::i;3048:86::-;3156:4;;-1:-1:-1;;;;;3156:4:2;;;3148:12;;;;3144:78;;3176:15;3180:2;3184:6;3176:3;:15::i;3144:78::-;3242:4;;-1:-1:-1;;;;;3242:4:2;;;3236:10;;;;3232:79;;3262:18;3267:4;3273:6;3262:4;:18::i;3232:79::-;3321:33;3337:4;3343:2;3347:6;3321:15;:33::i;7250:416:1:-;-1:-1:-1;;;;;7333:21:1;;7325:65;;;;-1:-1:-1;;;7325:65:1;;9238:2:8;7325:65:1;;;9220:21:8;9277:2;9257:18;;;9250:30;9316:33;9296:18;;;9289:61;9367:18;;7325:65:1;9036:355:8;7325:65:1;7417:6;7401:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7569:18:1;;;;;;:9;:18;;;;;;;;:28;;;;;;7622:37;1361:25:8;;;7622:37:1;;1334:18:8;7622:37:1;;;;;;;7250:416;;:::o;6293:681::-;-1:-1:-1;;;;;6419:18:1;;6411:68;;;;-1:-1:-1;;;6411:68:1;;9598:2:8;6411:68:1;;;9580:21:8;9637:2;9617:18;;;9610:30;9676:34;9656:18;;;9649:62;-1:-1:-1;;;9727:18:8;;;9720:35;9772:19;;6411:68:1;9396:401:8;6411:68:1;-1:-1:-1;;;;;6512:15:1;;6490:19;6512:15;;;:9;:15;;;;;;6558:21;;;;6537:106;;;;-1:-1:-1;;;6537:106:1;;10004:2:8;6537:106:1;;;9986:21:8;10043:2;10023:18;;;10016:30;10082:34;10062:18;;;10055:62;-1:-1:-1;;;10133:18:8;;;10126:36;10179:19;;6537:106:1;9802:402:8;6537:106:1;-1:-1:-1;;;;;6677:15:1;;;;;;;:9;:15;;;;;;6695:20;;;6677:38;;6892:13;;;;;;;;;;:23;;;;;;6941:26;;;;;;6709:6;1361:25:8;;1349:2;1334:18;;1215:177;6941:26:1;;;;;;;;6401:573;6293:681;;;:::o;7984:540::-;-1:-1:-1;;;;;8067:21:1;;8059:67;;;;-1:-1:-1;;;8059:67:1;;10411:2:8;8059:67:1;;;10393:21:8;10450:2;10430:18;;;10423:30;10489:34;10469:18;;;10462:62;-1:-1:-1;;;10540:18:8;;;10533:31;10581:19;;8059:67:1;10209:397:8;8059:67:1;-1:-1:-1;;;;;8162:18:1;;8137:22;8162:18;;;:9;:18;;;;;;8198:24;;;;8190:71;;;;-1:-1:-1;;;8190:71:1;;10813:2:8;8190:71:1;;;10795:21:8;10852:2;10832:18;;;10825:30;10891:34;10871:18;;;10864:62;-1:-1:-1;;;10942:18:8;;;10935:32;10984:19;;8190:71:1;10611:398:8;8190:71:1;-1:-1:-1;;;;;8295:18:1;;;;;;:9;:18;;;;;;;;8316:23;;;8295:44;;8432:12;:22;;;;;;;8480:37;1361:25:8;;;8295:18:1;;;8480:37;;1334:18:8;8480:37:1;1215:177:8;3367:247:2;3428:6;2505:17;:15;:17::i;:::-;2495:6;:27;;2487:65;;;;-1:-1:-1;;;2487:65:2;;11216:2:8;2487:65:2;;;11198:21:8;11255:2;11235:18;;;11228:30;11294:27;11274:18;;;11267:55;11339:18;;2487:65:2;11014:349:8;2487:65:2;3446:11:::1;2273:4;3470:8;;3461:6;:17;;;;:::i;:::-;3460:34;;;;:::i;:::-;3446:48:::0;-1:-1:-1;3508:7:2;;3504:54:::1;;3533:4;::::0;3517:41:::1;::::0;-1:-1:-1;;;;;3533:4:2::1;3547;3554:3:::0;3517:15:::1;:41::i;:::-;3584:4;::::0;3568:39:::1;::::0;-1:-1:-1;;;;;3584:4:2::1;3590:2:::0;3594:12:::1;3603:3:::0;3594:6;:12:::1;:::i;:::-;3568:15;:39::i;3620:402::-:0;3682:11;2273:4;3706:8;;3697:6;:17;;;;:::i;:::-;3696:34;;;;:::i;:::-;3778:4;3740:17;2182:18:1;;;:9;:18;;;;;;3682:48:2;;-1:-1:-1;3810:10:2;3814:6;3810:1;:10;:::i;:::-;3798:9;:22;3794:50;;;3834:10;3838:6;3834:1;:10;:::i;:::-;3822:22;;3794:50;3891:7;;3854:46;;3872:9;;-1:-1:-1;;;;;3891:7:2;3854:17;:46::i;:::-;3914:7;;3910:54;;3923:41;3939:4;3953;3960:3;3923:15;:41::i;:::-;3996:4;;3974:41;;3990:4;;-1:-1:-1;;;;;3996:4:2;4002:12;4011:3;4002:6;:12;:::i;1362:487::-;707:7;:14;;-1:-1:-1;;707:14:2;717:4;707:14;;;1475:29;;1497:7:::1;1475:29;1537:16;::::0;;1551:1:::1;1537:16:::0;;;;;::::1;::::0;;1513:21:::1;::::0;1537:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;1537:16:2::1;1513:40;;1581:4;1563;1568:1;1563:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;1563:23:2::1;;;-1:-1:-1::0;;;;;1563:23:2::1;;;::::0;::::1;330:42;-1:-1:-1::0;;;;;1606:20:2::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1596:4;1601:1;1596:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1596:32:2;;::::1;:7;::::0;;::::1;::::0;;;;;;;:32;1664:178:::1;::::0;-1:-1:-1;;;1664:178:2;;330:42:::1;::::0;1664:37:::1;::::0;:178:::1;::::0;1715:11;;1740:1:::1;::::0;1783:4;;1801:2;;1817:15:::1;::::0;1664:178:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1465:384;731:1;-1:-1:-1::0;;742:7:2;:15;;-1:-1:-1;;742:15:2;;;1362:487::o;14:548:8:-;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:8;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;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:8:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:8;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:8;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;:::-;2283:5;2047:247;-1:-1:-1;;;2047:247:8:o;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:8;;2507:180;-1:-1:-1;2507:180:8:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:8;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:380::-;3164:1;3160:12;;;;3207;;;3228:61;;3282:4;3274:6;3270:17;3260:27;;3228:61;3335:2;3327:6;3324:14;3304:18;3301:38;3298:161;;3381:10;3376:3;3372:20;3369:1;3362:31;3416:4;3413:1;3406:15;3444:4;3441:1;3434:15;3298:161;;3085:380;;;:::o;3470:334::-;3672:2;3654:21;;;3711:2;3691:18;;;3684:30;-1:-1:-1;;;3745:2:8;3730:18;;3723:40;3795:2;3780:18;;3470:334::o;3809:127::-;3870:10;3865:3;3861:20;3858:1;3851:31;3901:4;3898:1;3891:15;3925:4;3922:1;3915:15;3941:125;4006:9;;;4027:10;;;4024:36;;;4040:18;;:::i;4071:416::-;4160:1;4197:5;4160:1;4211:270;4232:7;4222:8;4219:21;4211:270;;;4291:4;4287:1;4283:6;4279:17;4273:4;4270:27;4267:53;;;4300:18;;:::i;:::-;4350:7;4340:8;4336:22;4333:55;;;4370:16;;;;4333:55;4449:22;;;;4409:15;;;;4211:270;;;4215:3;4071:416;;;;;:::o;4492:806::-;4541:5;4571:8;4561:80;;-1:-1:-1;4612:1:8;4626:5;;4561:80;4660:4;4650:76;;-1:-1:-1;4697:1:8;4711:5;;4650:76;4742:4;4760:1;4755:59;;;;4828:1;4823:130;;;;4735:218;;4755:59;4785:1;4776:10;;4799:5;;;4823:130;4860:3;4850:8;4847:17;4844:43;;;4867:18;;:::i;:::-;-1:-1:-1;;4923:1:8;4909:16;;4938:5;;4735:218;;5037:2;5027:8;5024:16;5018:3;5012:4;5009:13;5005:36;4999:2;4989:8;4986:16;4981:2;4975:4;4972:12;4968:35;4965:77;4962:159;;;-1:-1:-1;5074:19:8;;;5106:5;;4962:159;5153:34;5178:8;5172:4;5153:34;:::i;:::-;5223:6;5219:1;5215:6;5211:19;5202:7;5199:32;5196:58;;;5234:18;;:::i;:::-;5272:20;;4492:806;-1:-1:-1;;;4492:806:8:o;5303:140::-;5361:5;5390:47;5431:4;5421:8;5417:19;5411:4;5390:47;:::i;5448:168::-;5521:9;;;5552;;5569:15;;;5563:22;;5549:37;5539:71;;5590:18;;:::i;5621:128::-;5688:9;;;5709:11;;;5706:37;;;5723:18;;:::i;5754:251::-;5824:6;5877:2;5865:9;5856:7;5852:23;5848:32;5845:52;;;5893:1;5890;5883:12;5845:52;5925:9;5919:16;5944:31;5969:5;5944:31;:::i;6931:306::-;7019:6;7027;7035;7088:2;7076:9;7067:7;7063:23;7059:32;7056:52;;;7104:1;7101;7094:12;7056:52;7133:9;7127:16;7117:26;;7183:2;7172:9;7168:18;7162:25;7152:35;;7227:2;7216:9;7212:18;7206:25;7196:35;;6931:306;;;;;:::o;7648:217::-;7688:1;7714;7704:132;;7758:10;7753:3;7749:20;7746:1;7739:31;7793:4;7790:1;7783:15;7821:4;7818:1;7811:15;7704:132;-1:-1:-1;7850:9:8;;7648:217::o;11500:127::-;11561:10;11556:3;11552:20;11549:1;11542:31;11592:4;11589:1;11582:15;11616:4;11613:1;11606:15;11632:980;11894:4;11942:3;11931:9;11927:19;11973:6;11962:9;11955:25;11999:2;12037:6;12032:2;12021:9;12017:18;12010:34;12080:3;12075:2;12064:9;12060:18;12053:31;12104:6;12139;12133:13;12170:6;12162;12155:22;12208:3;12197:9;12193:19;12186:26;;12247:2;12239:6;12235:15;12221:29;;12268:1;12278:195;12292:6;12289:1;12286:13;12278:195;;;12357:13;;-1:-1:-1;;;;;12353:39:8;12341:52;;12448:15;;;;12413:12;;;;12389:1;12307:9;12278:195;;;-1:-1:-1;;;;;;;12529:32:8;;;;12524:2;12509:18;;12502:60;-1:-1:-1;;;12593:3:8;12578:19;12571:35;12490:3;11632:980;-1:-1:-1;;;11632:980:8:o

Swarm Source

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