ETH Price: $3,815.74 (-2.07%)
Gas: 10 Gwei

Token

Not Financial Advice (NFAi)
 

Overview

Max Total Supply

100,000,000 NFAi

Holders

2,663 (0.00%)

Market

Price

$0.03 @ 0.000007 ETH (+1.58%)

Onchain Market Cap

$2,621,465.00

Circulating Supply Market Cap

$2,220,247.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V3: NFAi-DAI 2
Balance
0.006308873729490962 NFAi

Value
$0.00 ( ~0 Eth) [0.0000%]
0xa8e8ca0ad93495c50ea79d9a3b6741afa0a70d88
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

NFA Labs pioneers Decentralized Finance (DeFi) by innovating a decentralized hedge fund, aiming to make financial services more accessible, transparent, and efficient with blockchain technology. Their ecosystem, featuring Athena, Hecate, and Canis, targets a robust and equitable financial future.

Market

Volume (24H):$123,808.00
Market Capitalization:$2,220,247.00
Circulating Supply:84,750,281.00 NFAi
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NFAIV2

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-01-12
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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
    );
}

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);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract NFAIV2 is ERC20, Ownable {
    bool public tradingActive = false;
    uint256 private constant DIVIDER = 100;
    event EnabledTrading();
    event Excluded(address indexed account, bool isExcluded);
    event EthRecovered(uint256 amountEth, address indexed receiver);
    event TokensRecovered(address indexed tokenAddress, address indexed receiver, uint256 tokenAmount);
    mapping(address => bool) private _isExcluded;

    constructor()
        ERC20("Not Financial Advice", "NFAi")
        Ownable()
    {
        uint256 initialSupply = 100 * 1e6 * 1e18; // 100 million

        address multisig = 0xA576463273E4A459B39a518be7fc79EbecF6B7c7;

        exclude(multisig, true);

        _createInitialSupply(multisig, initialSupply);  // Mint to NFAi Multisig

        transferOwnership(multisig);
    }

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        emit EnabledTrading();
    }    

    function exclude(address account, bool excluded) public onlyOwner {
        _isExcluded[account] = excluded;
        emit Excluded(account, excluded);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(
                _isExcluded[from] || _isExcluded[to],
                "Trading is not active."
            );
        }    

        super._transfer(from, to, amount);
    }
    
    function emergencyTokenrecovery(
        address tokenAddress, 
        uint256 amountPercentage,
        address receiver
    ) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenAmount = token.balanceOf(address(this)) * amountPercentage / DIVIDER;
        emit TokensRecovered(tokenAddress, receiver, tokenAmount); 
        bool sent = token.transfer(msg.sender, tokenAmount);
        require(sent, "Failed to transfer tokens");
    }
}

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":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"}],"name":"EthRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensRecovered","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"emergencyTokenrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526005805460ff60a01b191690553480156200001d575f80fd5b506040518060400160405280601481526020017f4e6f742046696e616e6369616c20416476696365000000000000000000000000815250604051806040016040528060048152602001634e46416960e01b815250816003908162000082919062000457565b50600462000091828262000457565b5050505f620000a56200012d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f80516020620015cb833981519152908290a3506a52b7d2dcc80cd2e400000073a576463273e4a459b39a518be7fc79ebecf6b7c76200010e81600162000131565b6200011a8183620001dd565b6200012581620002bf565b505062000549565b3390565b6005546001600160a01b031633146200017f5760405162461bcd60e51b815260206004820181905260248201525f80516020620015ab83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c910160405180910390a25050565b6001600160a01b038216620002355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000176565b8060025f82825462000248919062000523565b90915550506001600160a01b0382165f90815260208190526040812080548392906200027690849062000523565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620003095760405162461bcd60e51b815260206004820181905260248201525f80516020620015ab833981519152604482015260640162000176565b6001600160a01b038116620003705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000176565b6005546040516001600160a01b038084169216905f80516020620015cb833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003e257607f821691505b6020821081036200040157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045257805f5260205f20601f840160051c810160208510156200042e5750805b601f840160051c820191505b818110156200044f575f81556001016200043a565b50505b505050565b81516001600160401b03811115620004735762000473620003b9565b6200048b81620004848454620003cd565b8462000407565b602080601f831160018114620004c1575f8415620004a95750858301515b5f19600386901b1c1916600185901b1785556200051b565b5f85815260208120601f198616915b82811015620004f157888601518255948401946001909101908401620004d0565b50858210156200050f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b808201808211156200054357634e487b7160e01b5f52601160045260245ffd5b92915050565b61105480620005575f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c80637647b90d1161009e578063a457c2d71161006e578063a457c2d714610220578063a9059cbb14610233578063bbc0c74214610246578063dd62ed3e1461025a578063f2fde38b14610292575f80fd5b80637647b90d146101e25780638a8c523c146101f55780638da5cb5b146101fd57806395d89b4114610218575f80fd5b8063313ce567116100e4578063313ce5671461017b578063395093511461018a578063702bccec1461019d57806370a08231146101b2578063715018a6146101da575f80fd5b806306fdde0314610115578063095ea7b31461013357806318160ddd1461015657806323b872dd14610168575b5f80fd5b61011d6102a5565b60405161012a9190610d03565b60405180910390f35b610146610141366004610d6a565b610335565b604051901515815260200161012a565b6002545b60405190815260200161012a565b610146610176366004610d92565b61034b565b6040516012815260200161012a565b610146610198366004610d6a565b6103f8565b6101b06101ab366004610dcb565b610433565b005b61015a6101c0366004610e04565b6001600160a01b03165f9081526020819052604090205490565b6101b06105f6565b6101b06101f0366004610e34565b610669565b6101b06106f1565b6005546040516001600160a01b03909116815260200161012a565b61011d6107b2565b61014661022e366004610d6a565b6107c1565b610146610241366004610d6a565b610859565b60055461014690600160a01b900460ff1681565b61015a610268366004610e69565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101b06102a0366004610e04565b610865565b6060600380546102b490610e9a565b80601f01602080910402602001604051908101604052809291908181526020018280546102e090610e9a565b801561032b5780601f106103025761010080835404028352916020019161032b565b820191905f5260205f20905b81548152906001019060200180831161030e57829003601f168201915b5050505050905090565b5f61034133848461094f565b5060015b92915050565b5f610357848484610a72565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156103e05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ed853385840361094f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161034191859061042e908690610ee6565b61094f565b6005546001600160a01b0316331461045d5760405162461bcd60e51b81526004016103d790610ef9565b6040516370a0823160e01b815230600482015283905f9060649085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cc9190610f2e565b6104d69190610f45565b6104e09190610f5c565b9050826001600160a01b0316856001600160a01b03167f401f439d865a766757ec78675925bd67198d5e78805aa41691b34b5d6a6cbbe68360405161052791815260200190565b60405180910390a360405163a9059cbb60e01b8152336004820152602481018290525f906001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561057b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059f9190610f7b565b9050806105ee5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220746f6b656e730000000000000060448201526064016103d7565b505050505050565b6005546001600160a01b031633146106205760405162461bcd60e51b81526004016103d790610ef9565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146106935760405162461bcd60e51b81526004016103d790610ef9565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c910160405180910390a25050565b6005546001600160a01b0316331461071b5760405162461bcd60e51b81526004016103d790610ef9565b600554600160a01b900460ff16156107755760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016103d7565b6005805460ff60a01b1916600160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b6060600480546102b490610e9a565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156108425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d7565b61084f338585840361094f565b5060019392505050565b5f610341338484610a72565b6005546001600160a01b0316331461088f5760405162461bcd60e51b81526004016103d790610ef9565b6001600160a01b0381166108f45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d7565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a985760405162461bcd60e51b81526004016103d790610f96565b6001600160a01b038216610abe5760405162461bcd60e51b81526004016103d790610fdb565b5f8111610b0d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016103d7565b600554600160a01b900460ff16610ba0576001600160a01b0383165f9081526006602052604090205460ff1680610b5b57506001600160a01b0382165f9081526006602052604090205460ff165b610ba05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016103d7565b610bab838383610bb0565b505050565b6001600160a01b038316610bd65760405162461bcd60e51b81526004016103d790610f96565b6001600160a01b038216610bfc5760405162461bcd60e51b81526004016103d790610fdb565b6001600160a01b0383165f9081526020819052604090205481811015610c735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d7565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610ca9908490610ee6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cf591815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b81811015610d2f57858101830151858201604001528201610d13565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d65575f80fd5b919050565b5f8060408385031215610d7b575f80fd5b610d8483610d4f565b946020939093013593505050565b5f805f60608486031215610da4575f80fd5b610dad84610d4f565b9250610dbb60208501610d4f565b9150604084013590509250925092565b5f805f60608486031215610ddd575f80fd5b610de684610d4f565b925060208401359150610dfb60408501610d4f565b90509250925092565b5f60208284031215610e14575f80fd5b610e1d82610d4f565b9392505050565b8015158114610e31575f80fd5b50565b5f8060408385031215610e45575f80fd5b610e4e83610d4f565b91506020830135610e5e81610e24565b809150509250929050565b5f8060408385031215610e7a575f80fd5b610e8383610d4f565b9150610e9160208401610d4f565b90509250929050565b600181811c90821680610eae57607f821691505b602082108103610ecc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561034557610345610ed2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215610f3e575f80fd5b5051919050565b808202811582820484141761034557610345610ed2565b5f82610f7657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610f8b575f80fd5b8151610e1d81610e24565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea26469706673582212209b630db6afa56dbbe0db34468e92908d281b8dbd33ca02f79a52ae239734a5cf64736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c80637647b90d1161009e578063a457c2d71161006e578063a457c2d714610220578063a9059cbb14610233578063bbc0c74214610246578063dd62ed3e1461025a578063f2fde38b14610292575f80fd5b80637647b90d146101e25780638a8c523c146101f55780638da5cb5b146101fd57806395d89b4114610218575f80fd5b8063313ce567116100e4578063313ce5671461017b578063395093511461018a578063702bccec1461019d57806370a08231146101b2578063715018a6146101da575f80fd5b806306fdde0314610115578063095ea7b31461013357806318160ddd1461015657806323b872dd14610168575b5f80fd5b61011d6102a5565b60405161012a9190610d03565b60405180910390f35b610146610141366004610d6a565b610335565b604051901515815260200161012a565b6002545b60405190815260200161012a565b610146610176366004610d92565b61034b565b6040516012815260200161012a565b610146610198366004610d6a565b6103f8565b6101b06101ab366004610dcb565b610433565b005b61015a6101c0366004610e04565b6001600160a01b03165f9081526020819052604090205490565b6101b06105f6565b6101b06101f0366004610e34565b610669565b6101b06106f1565b6005546040516001600160a01b03909116815260200161012a565b61011d6107b2565b61014661022e366004610d6a565b6107c1565b610146610241366004610d6a565b610859565b60055461014690600160a01b900460ff1681565b61015a610268366004610e69565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101b06102a0366004610e04565b610865565b6060600380546102b490610e9a565b80601f01602080910402602001604051908101604052809291908181526020018280546102e090610e9a565b801561032b5780601f106103025761010080835404028352916020019161032b565b820191905f5260205f20905b81548152906001019060200180831161030e57829003601f168201915b5050505050905090565b5f61034133848461094f565b5060015b92915050565b5f610357848484610a72565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156103e05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ed853385840361094f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161034191859061042e908690610ee6565b61094f565b6005546001600160a01b0316331461045d5760405162461bcd60e51b81526004016103d790610ef9565b6040516370a0823160e01b815230600482015283905f9060649085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cc9190610f2e565b6104d69190610f45565b6104e09190610f5c565b9050826001600160a01b0316856001600160a01b03167f401f439d865a766757ec78675925bd67198d5e78805aa41691b34b5d6a6cbbe68360405161052791815260200190565b60405180910390a360405163a9059cbb60e01b8152336004820152602481018290525f906001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561057b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059f9190610f7b565b9050806105ee5760405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220746f6b656e730000000000000060448201526064016103d7565b505050505050565b6005546001600160a01b031633146106205760405162461bcd60e51b81526004016103d790610ef9565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146106935760405162461bcd60e51b81526004016103d790610ef9565b6001600160a01b0382165f81815260066020908152604091829020805460ff191685151590811790915591519182527ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c910160405180910390a25050565b6005546001600160a01b0316331461071b5760405162461bcd60e51b81526004016103d790610ef9565b600554600160a01b900460ff16156107755760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016103d7565b6005805460ff60a01b1916600160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b6060600480546102b490610e9a565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156108425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d7565b61084f338585840361094f565b5060019392505050565b5f610341338484610a72565b6005546001600160a01b0316331461088f5760405162461bcd60e51b81526004016103d790610ef9565b6001600160a01b0381166108f45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d7565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a985760405162461bcd60e51b81526004016103d790610f96565b6001600160a01b038216610abe5760405162461bcd60e51b81526004016103d790610fdb565b5f8111610b0d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016103d7565b600554600160a01b900460ff16610ba0576001600160a01b0383165f9081526006602052604090205460ff1680610b5b57506001600160a01b0382165f9081526006602052604090205460ff165b610ba05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016103d7565b610bab838383610bb0565b505050565b6001600160a01b038316610bd65760405162461bcd60e51b81526004016103d790610f96565b6001600160a01b038216610bfc5760405162461bcd60e51b81526004016103d790610fdb565b6001600160a01b0383165f9081526020819052604090205481811015610c735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d7565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610ca9908490610ee6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cf591815260200190565b60405180910390a350505050565b5f602080835283518060208501525f5b81811015610d2f57858101830151858201604001528201610d13565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d65575f80fd5b919050565b5f8060408385031215610d7b575f80fd5b610d8483610d4f565b946020939093013593505050565b5f805f60608486031215610da4575f80fd5b610dad84610d4f565b9250610dbb60208501610d4f565b9150604084013590509250925092565b5f805f60608486031215610ddd575f80fd5b610de684610d4f565b925060208401359150610dfb60408501610d4f565b90509250925092565b5f60208284031215610e14575f80fd5b610e1d82610d4f565b9392505050565b8015158114610e31575f80fd5b50565b5f8060408385031215610e45575f80fd5b610e4e83610d4f565b91506020830135610e5e81610e24565b809150509250929050565b5f8060408385031215610e7a575f80fd5b610e8383610d4f565b9150610e9160208401610d4f565b90509250929050565b600181811c90821680610eae57607f821691505b602082108103610ecc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561034557610345610ed2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215610f3e575f80fd5b5051919050565b808202811582820484141761034557610345610ed2565b5f82610f7657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610f8b575f80fd5b8151610e1d81610e24565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea26469706673582212209b630db6afa56dbbe0db34468e92908d281b8dbd33ca02f79a52ae239734a5cf64736f6c63430008160033

Deployed Bytecode Sourcemap

9001:2266:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4024:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5079:210;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;5079:210:0;1004:187:1;4345:108:0;4433:12;;4345:108;;;1342:25:1;;;1330:2;1315:18;4345:108:0;1196:177:1;5297:529:0;;;;;;:::i;:::-;;:::i;4244:93::-;;;4327:2;1853:36:1;;1841:2;1826:18;4244:93:0;1711:184:1;5834:297:0;;;;;;:::i;:::-;;:::i;10782:482::-;;;;;;:::i;:::-;;:::i;:::-;;4461:177;;;;;;:::i;:::-;-1:-1:-1;;;;;4612:18:0;4580:7;4612:18;;;;;;;;;;;;4461:177;8555:150;;;:::i;10036:159::-;;;;;;:::i;:::-;;:::i;9848:176::-;;;:::i;8341:79::-;8406:6;;8341:79;;-1:-1:-1;;;;;8406:6:0;;;3013:51:1;;3001:2;2986:18;8341:79:0;2867:203:1;4132:104:0;;;:::i;6139:482::-;;;;;;:::i;:::-;;:::i;4646:216::-;;;;;;:::i;:::-;;:::i;9042:33::-;;;;;-1:-1:-1;;;9042:33:0;;;;;;4870:201;;;;;;:::i;:::-;-1:-1:-1;;;;;5036:18:0;;;5004:7;5036:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4870:201;8713:281;;;;;;:::i;:::-;;:::i;4024:100::-;4078:13;4111:5;4104:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4024:100;:::o;5079:210::-;5198:4;5220:39;174:10;5243:7;5252:6;5220:8;:39::i;:::-;-1:-1:-1;5277:4:0;5079:210;;;;;:::o;5297:529::-;5437:4;5454:36;5464:6;5472:9;5483:6;5454:9;:36::i;:::-;-1:-1:-1;;;;;5530:19:0;;5503:24;5530:19;;;:11;:19;;;;;;;;174:10;5530:33;;;;;;;;5596:26;;;;5574:116;;;;-1:-1:-1;;;5574:116:0;;3927:2:1;5574:116:0;;;3909:21:1;3966:2;3946:18;;;3939:30;4005:34;3985:18;;;3978:62;-1:-1:-1;;;4056:18:1;;;4049:38;4104:19;;5574:116:0;;;;;;;;;5726:57;5735:6;174:10;5776:6;5757:16;:25;5726:8;:57::i;:::-;-1:-1:-1;5814:4:0;;5297:529;-1:-1:-1;;;;5297:529:0:o;5834:297::-;174:10;5949:4;6043:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6043:34:0;;;;;;;;;;5949:4;;5971:130;;6021:7;;6043:47;;6080:10;;6043:47;:::i;:::-;5971:8;:130::i;10782:482::-;8468:6;;-1:-1:-1;;;;;8468:6:0;174:10;8468:22;8460:67;;;;-1:-1:-1;;;8460:67:0;;;;;;;:::i;:::-;11013:30:::1;::::0;-1:-1:-1;;;11013:30:0;;11037:4:::1;11013:30;::::0;::::1;3013:51:1::0;10967:12:0;;10945::::1;::::0;9117:3:::1;::::0;11046:16;;-1:-1:-1;;;;;11013:15:0;::::1;::::0;::::1;::::0;2986:18:1;;11013:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;:59;;;;:::i;:::-;10991:81;;11118:8;-1:-1:-1::0;;;;;11088:52:0::1;11104:12;-1:-1:-1::0;;;;;11088:52:0::1;;11128:11;11088:52;;;;1342:25:1::0;;1330:2;1315:18;;1196:177;11088:52:0::1;;;;;;;;11164:39;::::0;-1:-1:-1;;;11164:39:0;;11179:10:::1;11164:39;::::0;::::1;5515:51:1::0;5582:18;;;5575:34;;;11152:9:0::1;::::0;-1:-1:-1;;;;;11164:14:0;::::1;::::0;::::1;::::0;5488:18:1;;11164:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11152:51;;11222:4;11214:42;;;::::0;-1:-1:-1;;;11214:42:0;;6072:2:1;11214:42:0::1;::::0;::::1;6054:21:1::0;6111:2;6091:18;;;6084:30;6150:27;6130:18;;;6123:55;6195:18;;11214:42:0::1;5870:349:1::0;11214:42:0::1;10934:330;;;10782:482:::0;;;:::o;8555:150::-;8468:6;;-1:-1:-1;;;;;8468:6:0;174:10;8468:22;8460:67;;;;-1:-1:-1;;;8460:67:0;;;;;;;:::i;:::-;8648:6:::1;::::0;8627:40:::1;::::0;8664:1:::1;::::0;-1:-1:-1;;;;;8648:6:0::1;::::0;8627:40:::1;::::0;8664:1;;8627:40:::1;8678:6;:19:::0;;-1:-1:-1;;;;;;8678:19:0::1;::::0;;8555:150::o;10036:159::-;8468:6;;-1:-1:-1;;;;;8468:6:0;174:10;8468:22;8460:67;;;;-1:-1:-1;;;8460:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10113:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;:31;;-1:-1:-1;;10113:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;10160:27;;1144:41:1;;;10160:27:0::1;::::0;1117:18:1;10160:27:0::1;;;;;;;10036:159:::0;;:::o;9848:176::-;8468:6;;-1:-1:-1;;;;;8468:6:0;174:10;8468:22;8460:67;;;;-1:-1:-1;;;8460:67:0;;;;;;;:::i;:::-;9912:13:::1;::::0;-1:-1:-1;;;9912:13:0;::::1;;;9911:14;9903:50;;;::::0;-1:-1:-1;;;9903:50:0;;6426:2:1;9903:50:0::1;::::0;::::1;6408:21:1::0;6465:2;6445:18;;;6438:30;6504:25;6484:18;;;6477:53;6547:18;;9903:50:0::1;6224:347:1::0;9903:50:0::1;9964:13;:20:::0;;-1:-1:-1;;;;9964:20:0::1;-1:-1:-1::0;;;9964:20:0::1;::::0;;10000:16:::1;::::0;::::1;::::0;9964:20;;10000:16:::1;9848:176::o:0;4132:104::-;4188:13;4221:7;4214:14;;;;;:::i;6139:482::-;174:10;6259:4;6308:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6308:34:0;;;;;;;;;;6375:35;;;;6353:122;;;;-1:-1:-1;;;6353:122:0;;6778:2:1;6353:122:0;;;6760:21:1;6817:2;6797:18;;;6790:30;6856:34;6836:18;;;6829:62;-1:-1:-1;;;6907:18:1;;;6900:35;6952:19;;6353:122:0;6576:401:1;6353:122:0;6511:67;174:10;6534:7;6562:15;6543:16;:34;6511:8;:67::i;:::-;-1:-1:-1;6609:4:0;;6139:482;-1:-1:-1;;;6139:482:0:o;4646:216::-;4768:4;4790:42;174:10;4814:9;4825:6;4790:9;:42::i;8713:281::-;8468:6;;-1:-1:-1;;;;;8468:6:0;174:10;8468:22;8460:67;;;;-1:-1:-1;;;8460:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8816:22:0;::::1;8794:110;;;::::0;-1:-1:-1;;;8794:110:0;;7184:2:1;8794:110:0::1;::::0;::::1;7166:21:1::0;7223:2;7203:18;;;7196:30;7262:34;7242:18;;;7235:62;-1:-1:-1;;;7313:18:1;;;7306:36;7359:19;;8794:110:0::1;6982:402:1::0;8794:110:0::1;8941:6;::::0;8920:38:::1;::::0;-1:-1:-1;;;;;8920:38:0;;::::1;::::0;8941:6:::1;::::0;8920:38:::1;::::0;8941:6:::1;::::0;8920:38:::1;8969:6;:17:::0;;-1:-1:-1;;;;;;8969:17:0::1;-1:-1:-1::0;;;;;8969:17:0;;;::::1;::::0;;;::::1;::::0;;8713:281::o;7610:380::-;-1:-1:-1;;;;;7746:19:0;;7738:68;;;;-1:-1:-1;;;7738:68:0;;7591:2:1;7738:68:0;;;7573:21:1;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;-1:-1:-1;;;7720:18:1;;;7713:34;7764:19;;7738:68:0;7389:400:1;7738:68:0;-1:-1:-1;;;;;7825:21:0;;7817:68;;;;-1:-1:-1;;;7817:68:0;;7996:2:1;7817:68:0;;;7978:21:1;8035:2;8015:18;;;8008:30;8074:34;8054:18;;;8047:62;-1:-1:-1;;;8125:18:1;;;8118:32;8167:19;;7817:68:0;7794:398:1;7817:68:0;-1:-1:-1;;;;;7898:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7950:32;;1342:25:1;;;7950:32:0;;1315:18:1;7950:32:0;;;;;;;7610:380;;;:::o;10203:567::-;-1:-1:-1;;;;;10335:18:0;;10327:68;;;;-1:-1:-1;;;10327:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10414:16:0;;10406:64;;;;-1:-1:-1;;;10406:64:0;;;;;;;:::i;:::-;10498:1;10489:6;:10;10481:52;;;;-1:-1:-1;;;10481:52:0;;9209:2:1;10481:52:0;;;9191:21:1;9248:2;9228:18;;;9221:30;9287:31;9267:18;;;9260:59;9336:18;;10481:52:0;9007:353:1;10481:52:0;10551:13;;-1:-1:-1;;;10551:13:0;;;;10546:167;;-1:-1:-1;;;;;10607:17:0;;;;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10628:15:0;;;;;;:11;:15;;;;;;;;10607:36;10581:120;;;;-1:-1:-1;;;10581:120:0;;9567:2:1;10581:120:0;;;9549:21:1;9606:2;9586:18;;;9579:30;-1:-1:-1;;;9625:18:1;;;9618:52;9687:18;;10581:120:0;9365:346:1;10581:120:0;10729:33;10745:4;10751:2;10755:6;10729:15;:33::i;:::-;10203:567;;;:::o;6629:651::-;-1:-1:-1;;;;;6769:20:0;;6761:70;;;;-1:-1:-1;;;6761:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6850:23:0;;6842:71;;;;-1:-1:-1;;;6842:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6950:17:0;;6926:21;6950:17;;;;;;;;;;;7000:23;;;;6978:111;;;;-1:-1:-1;;;6978:111:0;;9918:2:1;6978:111:0;;;9900:21:1;9957:2;9937:18;;;9930:30;9996:34;9976:18;;;9969:62;-1:-1:-1;;;10047:18:1;;;10040:36;10093:19;;6978:111:0;9716:402:1;6978:111:0;-1:-1:-1;;;;;7125:17:0;;;:9;:17;;;;;;;;;;;7145:22;;;7125:42;;7189:20;;;;;;;;:30;;7161:6;;7125:9;7189:30;;7161:6;;7189:30;:::i;:::-;;;;;;;;7254:9;-1:-1:-1;;;;;7237:35:0;7246:6;-1:-1:-1;;;;;7237:35:0;;7265:6;7237:35;;;;1342:25:1;;1330:2;1315:18;;1196:177;7237:35:0;;;;;;;;6750:530;6629:651;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:::-;1977:6;1985;1993;2046:2;2034:9;2025:7;2021:23;2017:32;2014:52;;;2062:1;2059;2052:12;2014:52;2085:29;2104:9;2085:29;:::i;:::-;2075:39;;2161:2;2150:9;2146:18;2133:32;2123:42;;2184:38;2218:2;2207:9;2203:18;2184:38;:::i;:::-;2174:48;;1900:328;;;;;:::o;2233:186::-;2292:6;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2384:29;2403:9;2384:29;:::i;:::-;2374:39;2233:186;-1:-1:-1;;;2233:186:1:o;2424:118::-;2510:5;2503:13;2496:21;2489:5;2486:32;2476:60;;2532:1;2529;2522:12;2476:60;2424:118;:::o;2547:315::-;2612:6;2620;2673:2;2661:9;2652:7;2648:23;2644:32;2641:52;;;2689:1;2686;2679:12;2641:52;2712:29;2731:9;2712:29;:::i;:::-;2702:39;;2791:2;2780:9;2776:18;2763:32;2804:28;2826:5;2804:28;:::i;:::-;2851:5;2841:15;;;2547:315;;;;;:::o;3075:260::-;3143:6;3151;3204:2;3192:9;3183:7;3179:23;3175:32;3172:52;;;3220:1;3217;3210:12;3172:52;3243:29;3262:9;3243:29;:::i;:::-;3233:39;;3291:38;3325:2;3314:9;3310:18;3291:38;:::i;:::-;3281:48;;3075:260;;;;;:::o;3340:380::-;3419:1;3415:12;;;;3462;;;3483:61;;3537:4;3529:6;3525:17;3515:27;;3483:61;3590:2;3582:6;3579:14;3559:18;3556:38;3553:161;;3636:10;3631:3;3627:20;3624:1;3617:31;3671:4;3668:1;3661:15;3699:4;3696:1;3689:15;3553:161;;3340:380;;;:::o;4134:127::-;4195:10;4190:3;4186:20;4183:1;4176:31;4226:4;4223:1;4216:15;4250:4;4247:1;4240:15;4266:125;4331:9;;;4352:10;;;4349:36;;;4365:18;;:::i;4396:356::-;4598:2;4580:21;;;4617:18;;;4610:30;4676:34;4671:2;4656:18;;4649:62;4743:2;4728:18;;4396:356::o;4757:184::-;4827:6;4880:2;4868:9;4859:7;4855:23;4851:32;4848:52;;;4896:1;4893;4886:12;4848:52;-1:-1:-1;4919:16:1;;4757:184;-1:-1:-1;4757:184:1:o;4946:168::-;5019:9;;;5050;;5067:15;;;5061:22;;5047:37;5037:71;;5088:18;;:::i;5119:217::-;5159:1;5185;5175:132;;5229:10;5224:3;5220:20;5217:1;5210:31;5264:4;5261:1;5254:15;5292:4;5289:1;5282:15;5175:132;-1:-1:-1;5321:9:1;;5119:217::o;5620:245::-;5687:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:52;;;5756:1;5753;5746:12;5708:52;5788:9;5782:16;5807:28;5829:5;5807:28;:::i;8197:401::-;8399:2;8381:21;;;8438:2;8418:18;;;8411:30;8477:34;8472:2;8457:18;;8450:62;-1:-1:-1;;;8543:2:1;8528:18;;8521:35;8588:3;8573:19;;8197:401::o;8603:399::-;8805:2;8787:21;;;8844:2;8824:18;;;8817:30;8883:34;8878:2;8863:18;;8856:62;-1:-1:-1;;;8949:2:1;8934:18;;8927:33;8992:3;8977:19;;8603:399::o

Swarm Source

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