ETH Price: $3,458.26 (-0.55%)
Gas: 3 Gwei

Token

Peen (PEEN)
 

Overview

Max Total Supply

800,813,569 PEEN

Holders

360

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,853,711.873525912373655675 PEEN

Value
$0.00
0xb1f8716d9f26cbc4840e5b0dd2bac041c3876116
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:
PEENToken

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2024-01-11
 */

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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);
}

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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;

    /**
     * @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 view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @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");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // 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);

        _afterTokenTransfer(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");

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

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

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

    /**
     * @dev Destroys `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");

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

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract PEENToken is ERC20, ERC20Burnable, Ownable {
    address private constant _router =
        0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address public _launcher;
    address public _blacklister;
    bool public tradingEnabled;
    mapping(address => bool) public isBlacklisted;

    mapping(address => bool) private _pairs;

    event TradingEnabled();
    event BlacklisterUpdated(
        address indexed by,
        address indexed oldBlacklister,
        address indexed newBlacklister,
        uint256 timestamp
    );
    event BlacklisterRenounced(address indexed by, uint256 timestamp);
    event AddedToBlacklist(
        address indexed by,
        address[] users,
        uint256 timestamp
    );
    event RemovedFromBlacklist(
        address indexed by,
        address[] users,
        uint256 timestamp
    );

    constructor(uint256 maxSupply, address blacklister_) ERC20("Peen", "PEEN") {
        require(blacklister_ != address(0), "Zero Address");
        _approve(_msgSender(), _router, type(uint256).max);
        _mint(_msgSender(), maxSupply * 10**18);
        _blacklister = blacklister_;
        emit BlacklisterUpdated(
            msg.sender,
            address(0),
            blacklister_,
            block.timestamp
        );
    }

    modifier onlyBlacklister() {
        require(msg.sender == _blacklister, "Caller is not the blacklister");
        _;
    }

    function blacklistUser(address[] calldata _users) external onlyBlacklister {
        for (uint256 i = 0; i < _users.length; i++) {
            isBlacklisted[_users[i]] = true;
        }
        emit AddedToBlacklist(msg.sender, _users, block.timestamp);
    }

    function updateBlacklister(address _newBlacklister) external onlyOwner {
        require(_newBlacklister != address(0), "Zero Address!");
        require(
            _blacklister != address(0),
            "Blacklister functionality is renounced!"
        );
        address oldBlacklister = _blacklister;
        _blacklister = _newBlacklister;
        emit BlacklisterUpdated(
            msg.sender,
            oldBlacklister,
            _newBlacklister,
            block.timestamp
        );
    }

    function renounceBlacklister() external onlyOwner {
        _blacklister = address(0);
        emit BlacklisterRenounced(msg.sender, block.timestamp);
    }

    function removeUserFromBlacklist(address[] calldata _users)
        external
        onlyBlacklister
    {
        for (uint256 i = 0; i < _users.length; i++) {
            isBlacklisted[_users[i]] = false;
        }
        emit RemovedFromBlacklist(msg.sender, _users, block.timestamp);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "PEEN: trading already enabled");
        tradingEnabled = true;
        emit TradingEnabled();
    }

    function setLauncher(address launcher) external onlyOwner {
        require(!tradingEnabled, "PEEN: trading already enabled");
        _approve(launcher, _router, type(uint256).max);
        _launcher = launcher;
    }

    function setPairs(address[] calldata pairs, bool[] calldata status)
        external
        onlyOwner
    {
        require(!tradingEnabled, "PEEN: trading already enabled");
        require(pairs.length == status.length, "PEEN: invalid parameters");
        for (uint256 i = 0; i < pairs.length; i++) {
            _pairs[pairs[i]] = status[i];
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!isBlacklisted[from], "Sender Blacklisted");
        require(!isBlacklisted[to], "Receiver Blacklisted");
        if (!tradingEnabled) {
            if (_pairs[from] || _pairs[to]) {
                _pairs[from]
                    ? require(
                        to == owner() || to == _launcher,
                        "PEEN: trading disabled"
                    )
                    : require(
                        from == owner() || from == _launcher,
                        "PEEN: trading disabled"
                    );
            }
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"blacklister_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"address[]","name":"users","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"BlacklisterRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":true,"internalType":"address","name":"oldBlacklister","type":"address"},{"indexed":true,"internalType":"address","name":"newBlacklister","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"BlacklisterUpdated","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":"by","type":"address"},{"indexed":false,"internalType":"address[]","name":"users","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RemovedFromBlacklist","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_blacklister","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_launcher","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"blacklistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"removeUserFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"launcher","type":"address"}],"name":"setLauncher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"bool[]","name":"status","type":"bool[]"}],"name":"setPairs","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBlacklister","type":"address"}],"name":"updateBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162003d2438038062003d2483398181016040528101906200003791906200076a565b6040518060400160405280600481526020017f5065656e000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5045454e000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000a21565b508060049081620000c6919062000a21565b505050620000e9620000dd620002af60201b60201c565b620002b760201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200015b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001529062000b69565b60405180910390fd5b620001b16200016f620002af60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200037d60201b60201c565b620001e7620001c5620002af60201b60201c565b670de0b6b3a764000084620001db919062000bba565b6200054e60201b60201c565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3bf02c05ffb53c7cb13a872f22f8bd9a173a5784139d12a02499d95cc3d0011f426040516200029f919062000c16565b60405180910390a4505062000e10565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e69062000ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004589062000d41565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000541919062000c16565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b79062000db3565b60405180910390fd5b620005d460008383620006bb60201b60201c565b8060026000828254620005e8919062000dd5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200069b919062000c16565b60405180910390a3620006b760008383620006c060201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b620006df81620006ca565b8114620006eb57600080fd5b50565b600081519050620006ff81620006d4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007328262000705565b9050919050565b620007448162000725565b81146200075057600080fd5b50565b600081519050620007648162000739565b92915050565b60008060408385031215620007845762000783620006c5565b5b60006200079485828601620006ee565b9250506020620007a78582860162000753565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200083357607f821691505b602082108103620008495762000848620007eb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000874565b620008bf868362000874565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000902620008fc620008f684620006ca565b620008d7565b620006ca565b9050919050565b6000819050919050565b6200091e83620008e1565b620009366200092d8262000909565b84845462000881565b825550505050565b600090565b6200094d6200093e565b6200095a81848462000913565b505050565b5b8181101562000982576200097660008262000943565b60018101905062000960565b5050565b601f821115620009d1576200099b816200084f565b620009a68462000864565b81016020851015620009b6578190505b620009ce620009c58562000864565b8301826200095f565b50505b505050565b600082821c905092915050565b6000620009f660001984600802620009d6565b1980831691505092915050565b600062000a118383620009e3565b9150826002028217905092915050565b62000a2c82620007b1565b67ffffffffffffffff81111562000a485762000a47620007bc565b5b62000a5482546200081a565b62000a6182828562000986565b600060209050601f83116001811462000a99576000841562000a84578287015190505b62000a90858262000a03565b86555062000b00565b601f19841662000aa9866200084f565b60005b8281101562000ad35784890151825560018201915060208501945060208101905062000aac565b8683101562000af3578489015162000aef601f891682620009e3565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f5a65726f20416464726573730000000000000000000000000000000000000000600082015250565b600062000b51600c8362000b08565b915062000b5e8262000b19565b602082019050919050565b6000602082019050818103600083015262000b848162000b42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bc782620006ca565b915062000bd483620006ca565b925082820262000be481620006ca565b9150828204841483151762000bfe5762000bfd62000b8b565b5b5092915050565b62000c1081620006ca565b82525050565b600060208201905062000c2d600083018462000c05565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000c9160248362000b08565b915062000c9e8262000c33565b604082019050919050565b6000602082019050818103600083015262000cc48162000c82565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000d2960228362000b08565b915062000d368262000ccb565b604082019050919050565b6000602082019050818103600083015262000d5c8162000d1a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d9b601f8362000b08565b915062000da88262000d63565b602082019050919050565b6000602082019050818103600083015262000dce8162000d8c565b9050919050565b600062000de282620006ca565b915062000def83620006ca565b925082820190508082111562000e0a5762000e0962000b8b565b5b92915050565b612f048062000e206000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638a8c523c116100f9578063a9059cbb11610097578063f2fde38b11610071578063f2fde38b14610498578063f4c094c8146104b4578063f7224a8d146104d0578063fe575a87146104ec576101a9565b8063a9059cbb1461041c578063ad38bf221461044c578063dd62ed3e14610468576101a9565b806395d89b41116100d357806395d89b411461039457806398fb0678146103b2578063994b9a4b146103d0578063a457c2d7146103ec576101a9565b80638a8c523c1461034e5780638da5cb5b1461035857806391b4af0514610376576101a9565b806342966c6811610166578063715018a611610140578063715018a61461030257806379cc67901461030c5780637a88cca4146103285780638880997e14610344576101a9565b806342966c68146102985780634ada218b146102b457806370a08231146102d2576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063313ce5671461024a5780633950935114610268575b600080fd5b6101b661051c565b6040516101c39190611e8f565b60405180910390f35b6101e660048036038101906101e19190611f4f565b6105ae565b6040516101f39190611faa565b60405180910390f35b6102046105d1565b6040516102119190611fd4565b60405180910390f35b610234600480360381019061022f9190611fef565b6105db565b6040516102419190611faa565b60405180910390f35b61025261060a565b60405161025f919061205e565b60405180910390f35b610282600480360381019061027d9190611f4f565b610613565b60405161028f9190611faa565b60405180910390f35b6102b260048036038101906102ad9190612079565b61064a565b005b6102bc61065e565b6040516102c99190611faa565b60405180910390f35b6102ec60048036038101906102e791906120a6565b610671565b6040516102f99190611fd4565b60405180910390f35b61030a6106b9565b005b61032660048036038101906103219190611f4f565b6106cd565b005b610342600480360381019061033d9190612138565b6106ed565b005b61034c610874565b005b61035661090e565b005b6103606109af565b60405161036d9190612194565b60405180910390f35b61037e6109d9565b60405161038b9190612194565b60405180910390f35b61039c6109ff565b6040516103a99190611e8f565b60405180910390f35b6103ba610a91565b6040516103c79190612194565b60405180910390f35b6103ea60048036038101906103e59190612138565b610ab7565b005b61040660048036038101906104019190611f4f565b610c3e565b6040516104139190611faa565b60405180910390f35b61043660048036038101906104319190611f4f565b610cb5565b6040516104439190611faa565b60405180910390f35b610466600480360381019061046191906120a6565b610cd8565b005b610482600480360381019061047d91906121af565b610ec8565b60405161048f9190611fd4565b60405180910390f35b6104b260048036038101906104ad91906120a6565b610f4f565b005b6104ce60048036038101906104c991906120a6565b610fd2565b005b6104ea60048036038101906104e59190612245565b6110ad565b005b610506600480360381019061050191906120a6565b61121a565b6040516105139190611faa565b60405180910390f35b60606003805461052b906122f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610557906122f5565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b5050505050905090565b6000806105b961123a565b90506105c6818585611242565b600191505092915050565b6000600254905090565b6000806105e661123a565b90506105f385828561140b565b6105fe858585611497565b60019150509392505050565b60006012905090565b60008061061e61123a565b905061063f8185856106308589610ec8565b61063a9190612355565b611242565b600191505092915050565b61065b61065561123a565b8261186e565b50565b600760149054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106c1611a3b565b6106cb6000611ab9565b565b6106df826106d961123a565b8361140b565b6106e9828261186e565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610774906123d5565b60405180910390fd5b60005b8282905081101561081d576000600860008585858181106107a4576107a36123f5565b5b90506020020160208101906107b991906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061081590612424565b915050610780565b503373ffffffffffffffffffffffffffffffffffffffff167f3c4e7591a9d73d49d5215894e6a354eeda25ba9abb20515061ccf9196e1739158383426040516108689392919061252f565b60405180910390a25050565b61087c611a3b565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fa377bf762677193e382b833a0c1d6bd3cb2fc30c30c787b40c999396692c047c426040516109049190611fd4565b60405180910390a2565b610916611a3b565b600760149054906101000a900460ff1615610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906125ad565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610a0e906122f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906122f5565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e906123d5565b60405180910390fd5b60005b82829050811015610be757600160086000858585818110610b6e57610b6d6123f5565b5b9050602002016020810190610b8391906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bdf90612424565b915050610b4a565b503373ffffffffffffffffffffffffffffffffffffffff167f49af2fb2b3e0837b10c80217895d8479b447967a740c129e3e55b40b024b6982838342604051610c329392919061252f565b60405180910390a25050565b600080610c4961123a565b90506000610c578286610ec8565b905083811015610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c939061263f565b60405180910390fd5b610ca98286868403611242565b60019250505092915050565b600080610cc061123a565b9050610ccd818585611497565b600191505092915050565b610ce0611a3b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d46906126ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd79061273d565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3bf02c05ffb53c7cb13a872f22f8bd9a173a5784139d12a02499d95cc3d0011f42604051610ebc9190611fd4565b60405180910390a45050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f57611a3b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906127cf565b60405180910390fd5b610fcf81611ab9565b50565b610fda611a3b565b600760149054906101000a900460ff161561102a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611021906125ad565b60405180910390fd5b61106981737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611242565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110b5611a3b565b600760149054906101000a900460ff1615611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc906125ad565b60405180910390fd5b81819050848490501461114d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111449061283b565b60405180910390fd5b60005b848490508110156112135782828281811061116e5761116d6123f5565b5b90506020020160208101906111839190612887565b6009600087878581811061119a576111996123f5565b5b90506020020160208101906111af91906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061120b90612424565b915050611150565b5050505050565b60086020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a890612926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611317906129b8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113fe9190611fd4565b60405180910390a3505050565b60006114178484610ec8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114915781811015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90612a24565b60405180910390fd5b6114908484848403611242565b5b50505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612a90565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612afc565b60405180910390fd5b600760149054906101000a900460ff1661185e57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116665750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561185d57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661178e576116c46109af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061174a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090612b68565b60405180910390fd5b61185c565b6117966109af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061181c5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290612b68565b60405180910390fd5b5b5b5b611869838383611b7f565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612bfa565b60405180910390fd5b6118e982600083611df5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690612c8c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a229190611fd4565b60405180910390a3611a3683600084611dfa565b505050565b611a4361123a565b73ffffffffffffffffffffffffffffffffffffffff16611a616109af565b73ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90612cf8565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590612d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490612e1c565b60405180910390fd5b611c68838383611df5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590612eae565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ddc9190611fd4565b60405180910390a3611def848484611dfa565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e39578082015181840152602081019050611e1e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e6182611dff565b611e6b8185611e0a565b9350611e7b818560208601611e1b565b611e8481611e45565b840191505092915050565b60006020820190508181036000830152611ea98184611e56565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ee682611ebb565b9050919050565b611ef681611edb565b8114611f0157600080fd5b50565b600081359050611f1381611eed565b92915050565b6000819050919050565b611f2c81611f19565b8114611f3757600080fd5b50565b600081359050611f4981611f23565b92915050565b60008060408385031215611f6657611f65611eb1565b5b6000611f7485828601611f04565b9250506020611f8585828601611f3a565b9150509250929050565b60008115159050919050565b611fa481611f8f565b82525050565b6000602082019050611fbf6000830184611f9b565b92915050565b611fce81611f19565b82525050565b6000602082019050611fe96000830184611fc5565b92915050565b60008060006060848603121561200857612007611eb1565b5b600061201686828701611f04565b935050602061202786828701611f04565b925050604061203886828701611f3a565b9150509250925092565b600060ff82169050919050565b61205881612042565b82525050565b6000602082019050612073600083018461204f565b92915050565b60006020828403121561208f5761208e611eb1565b5b600061209d84828501611f3a565b91505092915050565b6000602082840312156120bc576120bb611eb1565b5b60006120ca84828501611f04565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120f8576120f76120d3565b5b8235905067ffffffffffffffff811115612115576121146120d8565b5b602083019150836020820283011115612131576121306120dd565b5b9250929050565b6000806020838503121561214f5761214e611eb1565b5b600083013567ffffffffffffffff81111561216d5761216c611eb6565b5b612179858286016120e2565b92509250509250929050565b61218e81611edb565b82525050565b60006020820190506121a96000830184612185565b92915050565b600080604083850312156121c6576121c5611eb1565b5b60006121d485828601611f04565b92505060206121e585828601611f04565b9150509250929050565b60008083601f840112612205576122046120d3565b5b8235905067ffffffffffffffff811115612222576122216120d8565b5b60208301915083602082028301111561223e5761223d6120dd565b5b9250929050565b6000806000806040858703121561225f5761225e611eb1565b5b600085013567ffffffffffffffff81111561227d5761227c611eb6565b5b612289878288016120e2565b9450945050602085013567ffffffffffffffff8111156122ac576122ab611eb6565b5b6122b8878288016121ef565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061230d57607f821691505b6020821081036123205761231f6122c6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061236082611f19565b915061236b83611f19565b925082820190508082111561238357612382612326565b5b92915050565b7f43616c6c6572206973206e6f742074686520626c61636b6c6973746572000000600082015250565b60006123bf601d83611e0a565b91506123ca82612389565b602082019050919050565b600060208201905081810360008301526123ee816123b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061242f82611f19565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361246157612460612326565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b61249081611edb565b82525050565b60006124a28383612487565b60208301905092915050565b60006124bd6020840184611f04565b905092915050565b6000602082019050919050565b60006124de838561246c565b93506124e98261247d565b8060005b85811015612522576124ff82846124ae565b6125098882612496565b9750612514836124c5565b9250506001810190506124ed565b5085925050509392505050565b6000604082019050818103600083015261254a8185876124d2565b90506125596020830184611fc5565b949350505050565b7f5045454e3a2074726164696e6720616c726561647920656e61626c6564000000600082015250565b6000612597601d83611e0a565b91506125a282612561565b602082019050919050565b600060208201905081810360008301526125c68161258a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612629602583611e0a565b9150612634826125cd565b604082019050919050565b600060208201905081810360008301526126588161261c565b9050919050565b7f5a65726f20416464726573732100000000000000000000000000000000000000600082015250565b6000612695600d83611e0a565b91506126a08261265f565b602082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f426c61636b6c69737465722066756e6374696f6e616c6974792069732072656e60008201527f6f756e6365642100000000000000000000000000000000000000000000000000602082015250565b6000612727602783611e0a565b9150612732826126cb565b604082019050919050565b600060208201905081810360008301526127568161271a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127b9602683611e0a565b91506127c48261275d565b604082019050919050565b600060208201905081810360008301526127e8816127ac565b9050919050565b7f5045454e3a20696e76616c696420706172616d65746572730000000000000000600082015250565b6000612825601883611e0a565b9150612830826127ef565b602082019050919050565b6000602082019050818103600083015261285481612818565b9050919050565b61286481611f8f565b811461286f57600080fd5b50565b6000813590506128818161285b565b92915050565b60006020828403121561289d5761289c611eb1565b5b60006128ab84828501612872565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612910602483611e0a565b915061291b826128b4565b604082019050919050565b6000602082019050818103600083015261293f81612903565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129a2602283611e0a565b91506129ad82612946565b604082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612a0e601d83611e0a565b9150612a19826129d8565b602082019050919050565b60006020820190508181036000830152612a3d81612a01565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000612a7a601283611e0a565b9150612a8582612a44565b602082019050919050565b60006020820190508181036000830152612aa981612a6d565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000612ae6601483611e0a565b9150612af182612ab0565b602082019050919050565b60006020820190508181036000830152612b1581612ad9565b9050919050565b7f5045454e3a2074726164696e672064697361626c656400000000000000000000600082015250565b6000612b52601683611e0a565b9150612b5d82612b1c565b602082019050919050565b60006020820190508181036000830152612b8181612b45565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612be4602183611e0a565b9150612bef82612b88565b604082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c76602283611e0a565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ce2602083611e0a565b9150612ced82612cac565b602082019050919050565b60006020820190508181036000830152612d1181612cd5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d74602583611e0a565b9150612d7f82612d18565b604082019050919050565b60006020820190508181036000830152612da381612d67565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e06602383611e0a565b9150612e1182612daa565b604082019050919050565b60006020820190508181036000830152612e3581612df9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e98602683611e0a565b9150612ea382612e3c565b604082019050919050565b60006020820190508181036000830152612ec781612e8b565b905091905056fea2646970667358221220eed50a6c9118663b791ce6c73673ef4a56560be5664b2e1f3c476d1f3deed0fd64736f6c63430008130033000000000000000000000000000000000000000000000000000000002fbb720100000000000000000000000044f871bdbffdfe7991a7b6093b08cd2ef82159a9

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638a8c523c116100f9578063a9059cbb11610097578063f2fde38b11610071578063f2fde38b14610498578063f4c094c8146104b4578063f7224a8d146104d0578063fe575a87146104ec576101a9565b8063a9059cbb1461041c578063ad38bf221461044c578063dd62ed3e14610468576101a9565b806395d89b41116100d357806395d89b411461039457806398fb0678146103b2578063994b9a4b146103d0578063a457c2d7146103ec576101a9565b80638a8c523c1461034e5780638da5cb5b1461035857806391b4af0514610376576101a9565b806342966c6811610166578063715018a611610140578063715018a61461030257806379cc67901461030c5780637a88cca4146103285780638880997e14610344576101a9565b806342966c68146102985780634ada218b146102b457806370a08231146102d2576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063313ce5671461024a5780633950935114610268575b600080fd5b6101b661051c565b6040516101c39190611e8f565b60405180910390f35b6101e660048036038101906101e19190611f4f565b6105ae565b6040516101f39190611faa565b60405180910390f35b6102046105d1565b6040516102119190611fd4565b60405180910390f35b610234600480360381019061022f9190611fef565b6105db565b6040516102419190611faa565b60405180910390f35b61025261060a565b60405161025f919061205e565b60405180910390f35b610282600480360381019061027d9190611f4f565b610613565b60405161028f9190611faa565b60405180910390f35b6102b260048036038101906102ad9190612079565b61064a565b005b6102bc61065e565b6040516102c99190611faa565b60405180910390f35b6102ec60048036038101906102e791906120a6565b610671565b6040516102f99190611fd4565b60405180910390f35b61030a6106b9565b005b61032660048036038101906103219190611f4f565b6106cd565b005b610342600480360381019061033d9190612138565b6106ed565b005b61034c610874565b005b61035661090e565b005b6103606109af565b60405161036d9190612194565b60405180910390f35b61037e6109d9565b60405161038b9190612194565b60405180910390f35b61039c6109ff565b6040516103a99190611e8f565b60405180910390f35b6103ba610a91565b6040516103c79190612194565b60405180910390f35b6103ea60048036038101906103e59190612138565b610ab7565b005b61040660048036038101906104019190611f4f565b610c3e565b6040516104139190611faa565b60405180910390f35b61043660048036038101906104319190611f4f565b610cb5565b6040516104439190611faa565b60405180910390f35b610466600480360381019061046191906120a6565b610cd8565b005b610482600480360381019061047d91906121af565b610ec8565b60405161048f9190611fd4565b60405180910390f35b6104b260048036038101906104ad91906120a6565b610f4f565b005b6104ce60048036038101906104c991906120a6565b610fd2565b005b6104ea60048036038101906104e59190612245565b6110ad565b005b610506600480360381019061050191906120a6565b61121a565b6040516105139190611faa565b60405180910390f35b60606003805461052b906122f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610557906122f5565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b5050505050905090565b6000806105b961123a565b90506105c6818585611242565b600191505092915050565b6000600254905090565b6000806105e661123a565b90506105f385828561140b565b6105fe858585611497565b60019150509392505050565b60006012905090565b60008061061e61123a565b905061063f8185856106308589610ec8565b61063a9190612355565b611242565b600191505092915050565b61065b61065561123a565b8261186e565b50565b600760149054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106c1611a3b565b6106cb6000611ab9565b565b6106df826106d961123a565b8361140b565b6106e9828261186e565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610774906123d5565b60405180910390fd5b60005b8282905081101561081d576000600860008585858181106107a4576107a36123f5565b5b90506020020160208101906107b991906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061081590612424565b915050610780565b503373ffffffffffffffffffffffffffffffffffffffff167f3c4e7591a9d73d49d5215894e6a354eeda25ba9abb20515061ccf9196e1739158383426040516108689392919061252f565b60405180910390a25050565b61087c611a3b565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fa377bf762677193e382b833a0c1d6bd3cb2fc30c30c787b40c999396692c047c426040516109049190611fd4565b60405180910390a2565b610916611a3b565b600760149054906101000a900460ff1615610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906125ad565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610a0e906122f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906122f5565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e906123d5565b60405180910390fd5b60005b82829050811015610be757600160086000858585818110610b6e57610b6d6123f5565b5b9050602002016020810190610b8391906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bdf90612424565b915050610b4a565b503373ffffffffffffffffffffffffffffffffffffffff167f49af2fb2b3e0837b10c80217895d8479b447967a740c129e3e55b40b024b6982838342604051610c329392919061252f565b60405180910390a25050565b600080610c4961123a565b90506000610c578286610ec8565b905083811015610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c939061263f565b60405180910390fd5b610ca98286868403611242565b60019250505092915050565b600080610cc061123a565b9050610ccd818585611497565b600191505092915050565b610ce0611a3b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d46906126ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd79061273d565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3bf02c05ffb53c7cb13a872f22f8bd9a173a5784139d12a02499d95cc3d0011f42604051610ebc9190611fd4565b60405180910390a45050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f57611a3b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906127cf565b60405180910390fd5b610fcf81611ab9565b50565b610fda611a3b565b600760149054906101000a900460ff161561102a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611021906125ad565b60405180910390fd5b61106981737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611242565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110b5611a3b565b600760149054906101000a900460ff1615611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc906125ad565b60405180910390fd5b81819050848490501461114d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111449061283b565b60405180910390fd5b60005b848490508110156112135782828281811061116e5761116d6123f5565b5b90506020020160208101906111839190612887565b6009600087878581811061119a576111996123f5565b5b90506020020160208101906111af91906120a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061120b90612424565b915050611150565b5050505050565b60086020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a890612926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611317906129b8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113fe9190611fd4565b60405180910390a3505050565b60006114178484610ec8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114915781811015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90612a24565b60405180910390fd5b6114908484848403611242565b5b50505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612a90565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612afc565b60405180910390fd5b600760149054906101000a900460ff1661185e57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116665750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561185d57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661178e576116c46109af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061174a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090612b68565b60405180910390fd5b61185c565b6117966109af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061181c5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290612b68565b60405180910390fd5b5b5b5b611869838383611b7f565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612bfa565b60405180910390fd5b6118e982600083611df5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690612c8c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a229190611fd4565b60405180910390a3611a3683600084611dfa565b505050565b611a4361123a565b73ffffffffffffffffffffffffffffffffffffffff16611a616109af565b73ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90612cf8565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590612d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490612e1c565b60405180910390fd5b611c68838383611df5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590612eae565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ddc9190611fd4565b60405180910390a3611def848484611dfa565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e39578082015181840152602081019050611e1e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e6182611dff565b611e6b8185611e0a565b9350611e7b818560208601611e1b565b611e8481611e45565b840191505092915050565b60006020820190508181036000830152611ea98184611e56565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ee682611ebb565b9050919050565b611ef681611edb565b8114611f0157600080fd5b50565b600081359050611f1381611eed565b92915050565b6000819050919050565b611f2c81611f19565b8114611f3757600080fd5b50565b600081359050611f4981611f23565b92915050565b60008060408385031215611f6657611f65611eb1565b5b6000611f7485828601611f04565b9250506020611f8585828601611f3a565b9150509250929050565b60008115159050919050565b611fa481611f8f565b82525050565b6000602082019050611fbf6000830184611f9b565b92915050565b611fce81611f19565b82525050565b6000602082019050611fe96000830184611fc5565b92915050565b60008060006060848603121561200857612007611eb1565b5b600061201686828701611f04565b935050602061202786828701611f04565b925050604061203886828701611f3a565b9150509250925092565b600060ff82169050919050565b61205881612042565b82525050565b6000602082019050612073600083018461204f565b92915050565b60006020828403121561208f5761208e611eb1565b5b600061209d84828501611f3a565b91505092915050565b6000602082840312156120bc576120bb611eb1565b5b60006120ca84828501611f04565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120f8576120f76120d3565b5b8235905067ffffffffffffffff811115612115576121146120d8565b5b602083019150836020820283011115612131576121306120dd565b5b9250929050565b6000806020838503121561214f5761214e611eb1565b5b600083013567ffffffffffffffff81111561216d5761216c611eb6565b5b612179858286016120e2565b92509250509250929050565b61218e81611edb565b82525050565b60006020820190506121a96000830184612185565b92915050565b600080604083850312156121c6576121c5611eb1565b5b60006121d485828601611f04565b92505060206121e585828601611f04565b9150509250929050565b60008083601f840112612205576122046120d3565b5b8235905067ffffffffffffffff811115612222576122216120d8565b5b60208301915083602082028301111561223e5761223d6120dd565b5b9250929050565b6000806000806040858703121561225f5761225e611eb1565b5b600085013567ffffffffffffffff81111561227d5761227c611eb6565b5b612289878288016120e2565b9450945050602085013567ffffffffffffffff8111156122ac576122ab611eb6565b5b6122b8878288016121ef565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061230d57607f821691505b6020821081036123205761231f6122c6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061236082611f19565b915061236b83611f19565b925082820190508082111561238357612382612326565b5b92915050565b7f43616c6c6572206973206e6f742074686520626c61636b6c6973746572000000600082015250565b60006123bf601d83611e0a565b91506123ca82612389565b602082019050919050565b600060208201905081810360008301526123ee816123b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061242f82611f19565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361246157612460612326565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b61249081611edb565b82525050565b60006124a28383612487565b60208301905092915050565b60006124bd6020840184611f04565b905092915050565b6000602082019050919050565b60006124de838561246c565b93506124e98261247d565b8060005b85811015612522576124ff82846124ae565b6125098882612496565b9750612514836124c5565b9250506001810190506124ed565b5085925050509392505050565b6000604082019050818103600083015261254a8185876124d2565b90506125596020830184611fc5565b949350505050565b7f5045454e3a2074726164696e6720616c726561647920656e61626c6564000000600082015250565b6000612597601d83611e0a565b91506125a282612561565b602082019050919050565b600060208201905081810360008301526125c68161258a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612629602583611e0a565b9150612634826125cd565b604082019050919050565b600060208201905081810360008301526126588161261c565b9050919050565b7f5a65726f20416464726573732100000000000000000000000000000000000000600082015250565b6000612695600d83611e0a565b91506126a08261265f565b602082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f426c61636b6c69737465722066756e6374696f6e616c6974792069732072656e60008201527f6f756e6365642100000000000000000000000000000000000000000000000000602082015250565b6000612727602783611e0a565b9150612732826126cb565b604082019050919050565b600060208201905081810360008301526127568161271a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127b9602683611e0a565b91506127c48261275d565b604082019050919050565b600060208201905081810360008301526127e8816127ac565b9050919050565b7f5045454e3a20696e76616c696420706172616d65746572730000000000000000600082015250565b6000612825601883611e0a565b9150612830826127ef565b602082019050919050565b6000602082019050818103600083015261285481612818565b9050919050565b61286481611f8f565b811461286f57600080fd5b50565b6000813590506128818161285b565b92915050565b60006020828403121561289d5761289c611eb1565b5b60006128ab84828501612872565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612910602483611e0a565b915061291b826128b4565b604082019050919050565b6000602082019050818103600083015261293f81612903565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129a2602283611e0a565b91506129ad82612946565b604082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612a0e601d83611e0a565b9150612a19826129d8565b602082019050919050565b60006020820190508181036000830152612a3d81612a01565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000612a7a601283611e0a565b9150612a8582612a44565b602082019050919050565b60006020820190508181036000830152612aa981612a6d565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000612ae6601483611e0a565b9150612af182612ab0565b602082019050919050565b60006020820190508181036000830152612b1581612ad9565b9050919050565b7f5045454e3a2074726164696e672064697361626c656400000000000000000000600082015250565b6000612b52601683611e0a565b9150612b5d82612b1c565b602082019050919050565b60006020820190508181036000830152612b8181612b45565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612be4602183611e0a565b9150612bef82612b88565b604082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c76602283611e0a565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ce2602083611e0a565b9150612ced82612cac565b602082019050919050565b60006020820190508181036000830152612d1181612cd5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d74602583611e0a565b9150612d7f82612d18565b604082019050919050565b60006020820190508181036000830152612da381612d67565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e06602383611e0a565b9150612e1182612daa565b604082019050919050565b60006020820190508181036000830152612e3581612df9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e98602683611e0a565b9150612ea382612e3c565b604082019050919050565b60006020820190508181036000830152612ec781612e8b565b905091905056fea2646970667358221220eed50a6c9118663b791ce6c73673ef4a56560be5664b2e1f3c476d1f3deed0fd64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000002fbb720100000000000000000000000044f871bdbffdfe7991a7b6093b08cd2ef82159a9

-----Decoded View---------------
Arg [0] : maxSupply (uint256): 800813569
Arg [1] : blacklister_ (address): 0x44F871BDbffdfE7991a7b6093b08cD2ef82159A9

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000002fbb7201
Arg [1] : 00000000000000000000000044f871bdbffdfe7991a7b6093b08cd2ef82159a9


Deployed Bytecode Sourcemap

21764:4303:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6569:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9070:242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7698:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9892:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7540:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10596:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18514:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21983:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7869:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20910:103;;;:::i;:::-;;18924:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24194:302;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24027:159;;;:::i;:::-;;24504:184;;;:::i;:::-;;20269:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21949:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6788:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21918:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23228:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11369:505;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8252:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23500:519;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8549:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21168:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24696:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24926:371;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22016:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6569:100;6623:13;6656:5;6649:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6569:100;:::o;9070:242::-;9189:4;9211:13;9227:12;:10;:12::i;:::-;9211:28;;9250:32;9259:5;9266:7;9275:6;9250:8;:32::i;:::-;9300:4;9293:11;;;9070:242;;;;:::o;7698:108::-;7759:7;7786:12;;7779:19;;7698:108;:::o;9892:295::-;10023:4;10040:15;10058:12;:10;:12::i;:::-;10040:30;;10081:38;10097:4;10103:7;10112:6;10081:15;:38::i;:::-;10130:27;10140:4;10146:2;10150:6;10130:9;:27::i;:::-;10175:4;10168:11;;;9892:295;;;;;:::o;7540:93::-;7598:5;7623:2;7616:9;;7540:93;:::o;10596:270::-;10711:4;10733:13;10749:12;:10;:12::i;:::-;10733:28;;10772:64;10781:5;10788:7;10825:10;10797:25;10807:5;10814:7;10797:9;:25::i;:::-;:38;;;;:::i;:::-;10772:8;:64::i;:::-;10854:4;10847:11;;;10596:270;;;;:::o;18514:91::-;18570:27;18576:12;:10;:12::i;:::-;18590:6;18570:5;:27::i;:::-;18514:91;:::o;21983:26::-;;;;;;;;;;;;;:::o;7869:177::-;7988:7;8020:9;:18;8030:7;8020:18;;;;;;;;;;;;;;;;8013:25;;7869:177;;;:::o;20910:103::-;20155:13;:11;:13::i;:::-;20975:30:::1;21002:1;20975:18;:30::i;:::-;20910:103::o:0;18924:164::-;19001:46;19017:7;19026:12;:10;:12::i;:::-;19040:6;19001:15;:46::i;:::-;19058:22;19064:7;19073:6;19058:5;:22::i;:::-;18924:164;;:::o;24194:302::-;23154:12;;;;;;;;;;;23140:26;;:10;:26;;;23132:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24318:9:::1;24313:103;24337:6;;:13;;24333:1;:17;24313:103;;;24399:5;24372:13;:24;24386:6;;24393:1;24386:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24372:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24352:3;;;;;:::i;:::-;;;;24313:103;;;;24452:10;24431:57;;;24464:6;;24472:15;24431:57;;;;;;;;:::i;:::-;;;;;;;;24194:302:::0;;:::o;24027:159::-;20155:13;:11;:13::i;:::-;24111:1:::1;24088:12;;:25;;;;;;;;;;;;;;;;;;24150:10;24129:49;;;24162:15;24129:49;;;;;;:::i;:::-;;;;;;;;24027:159::o:0;24504:184::-;20155:13;:11;:13::i;:::-;24568:14:::1;;;;;;;;;;;24567:15;24559:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24644:4;24627:14;;:21;;;;;;;;;;;;;;;;;;24664:16;;;;;;;;;;24504:184::o:0;20269:87::-;20315:7;20342:6;;;;;;;;;;;20335:13;;20269:87;:::o;21949:27::-;;;;;;;;;;;;;:::o;6788:104::-;6844:13;6877:7;6870:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6788:104;:::o;21918:24::-;;;;;;;;;;;;;:::o;23228:264::-;23154:12;;;;;;;;;;;23140:26;;:10;:26;;;23132:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23319:9:::1;23314:102;23338:6;;:13;;23334:1;:17;23314:102;;;23400:4;23373:13;:24;23387:6;;23394:1;23387:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23373:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23353:3;;;;;:::i;:::-;;;;23314:102;;;;23448:10;23431:53;;;23460:6;;23468:15;23431:53;;;;;;;;:::i;:::-;;;;;;;;23228:264:::0;;:::o;11369:505::-;11489:4;11511:13;11527:12;:10;:12::i;:::-;11511:28;;11550:24;11577:25;11587:5;11594:7;11577:9;:25::i;:::-;11550:52;;11655:15;11635:16;:35;;11613:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11771:60;11780:5;11787:7;11815:15;11796:16;:34;11771:8;:60::i;:::-;11862:4;11855:11;;;;11369:505;;;;:::o;8252:234::-;8367:4;8389:13;8405:12;:10;:12::i;:::-;8389:28;;8428;8438:5;8445:2;8449:6;8428:9;:28::i;:::-;8474:4;8467:11;;;8252:234;;;;:::o;23500:519::-;20155:13;:11;:13::i;:::-;23617:1:::1;23590:29;;:15;:29;;::::0;23582:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23694:1;23670:26;;:12;;;;;;;;;;;:26;;::::0;23648:115:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23774:22;23799:12;;;;;;;;;;;23774:37;;23837:15;23822:12;;:30;;;;;;;;;;;;;;;;;;23955:15;23868:143;;23926:14;23868:143;;23901:10;23868:143;;;23985:15;23868:143;;;;;;:::i;:::-;;;;;;;;23571:448;23500:519:::0;:::o;8549:201::-;8683:7;8715:11;:18;8727:5;8715:18;;;;;;;;;;;;;;;:27;8734:7;8715:27;;;;;;;;;;;;;;;;8708:34;;8549:201;;;;:::o;21168:238::-;20155:13;:11;:13::i;:::-;21291:1:::1;21271:22;;:8;:22;;::::0;21249:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21370:28;21389:8;21370:18;:28::i;:::-;21168:238:::0;:::o;24696:222::-;20155:13;:11;:13::i;:::-;24774:14:::1;;;;;;;;;;;24773:15;24765:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24833:46;24842:8;21867:42;24861:17;24833:8;:46::i;:::-;24902:8;24890:9;;:20;;;;;;;;;;;;;;;;;;24696:222:::0;:::o;24926:371::-;20155:13;:11;:13::i;:::-;25056:14:::1;;;;;;;;;;;25055:15;25047:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;25139:6;;:13;;25123:5;;:12;;:29;25115:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25197:9;25192:98;25216:5;;:12;;25212:1;:16;25192:98;;;25269:6;;25276:1;25269:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25250:6;:16;25257:5;;25263:1;25257:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25250:16;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25230:3;;;;;:::i;:::-;;;;25192:98;;;;24926:371:::0;;;;:::o;22016:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;4375:98::-;4428:7;4455:10;4448:17;;4375:98;:::o;15502:380::-;15655:1;15638:19;;:5;:19;;;15630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15736:1;15717:21;;:7;:21;;;15709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15820:6;15790:11;:18;15802:5;15790:18;;;;;;;;;;;;;;;:27;15809:7;15790:27;;;;;;;;;;;;;;;:36;;;;15858:7;15842:32;;15851:5;15842:32;;;15867:6;15842:32;;;;;;:::i;:::-;;;;;;;;15502:380;;;:::o;16173:502::-;16308:24;16335:25;16345:5;16352:7;16335:9;:25::i;:::-;16308:52;;16395:17;16375:16;:37;16371:297;;16475:6;16455:16;:26;;16429:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;16590:51;16599:5;16606:7;16634:6;16615:16;:25;16590:8;:51::i;:::-;16371:297;16297:378;16173:502;;;:::o;25305:759::-;25438:13;:19;25452:4;25438:19;;;;;;;;;;;;;;;;;;;;;;;;;25437:20;25429:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25500:13;:17;25514:2;25500:17;;;;;;;;;;;;;;;;;;;;;;;;;25499:18;25491:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25558:14;;;;;;;;;;;25553:458;;25593:6;:12;25600:4;25593:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;25609:6;:10;25616:2;25609:10;;;;;;;;;;;;;;;;;;;;;;;;;25593:26;25589:411;;;25640:6;:12;25647:4;25640:12;;;;;;;;;;;;;;;;;;;;;;;;;:344;;25882:7;:5;:7::i;:::-;25874:15;;:4;:15;;;:36;;;;25901:9;;;;;;;;;;;25893:17;;:4;:17;;;25874:36;25840:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;25640:344;;;25716:7;:5;:7::i;:::-;25710:13;;:2;:13;;;:32;;;;25733:9;;;;;;;;;;;25727:15;;:2;:15;;;25710:32;25676:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25640:344;25589:411;25553:458;26023:33;26039:4;26045:2;26049:6;26023:15;:33::i;:::-;25305:759;;;:::o;14389:675::-;14492:1;14473:21;;:7;:21;;;14465:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14545:49;14566:7;14583:1;14587:6;14545:20;:49::i;:::-;14607:22;14632:9;:18;14642:7;14632:18;;;;;;;;;;;;;;;;14607:43;;14687:6;14669:14;:24;;14661:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14806:6;14789:14;:23;14768:9;:18;14778:7;14768:18;;;;;;;;;;;;;;;:44;;;;14923:6;14907:12;;:22;;;;;;;;;;;14984:1;14958:37;;14967:7;14958:37;;;14988:6;14958:37;;;;;;:::i;:::-;;;;;;;;15008:48;15028:7;15045:1;15049:6;15008:19;:48::i;:::-;14454:610;14389:675;;:::o;20434:132::-;20509:12;:10;:12::i;:::-;20498:23;;:7;:5;:7::i;:::-;:23;;;20490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20434:132::o;21566:191::-;21640:16;21659:6;;;;;;;;;;;21640:25;;21685:8;21676:6;;:17;;;;;;;;;;;;;;;;;;21740:8;21709:40;;21730:8;21709:40;;;;;;;;;;;;21629:128;21566:191;:::o;12344:877::-;12491:1;12475:18;;:4;:18;;;12467:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12568:1;12554:16;;:2;:16;;;12546:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12623:38;12644:4;12650:2;12654:6;12623:20;:38::i;:::-;12674:19;12696:9;:15;12706:4;12696:15;;;;;;;;;;;;;;;;12674:37;;12759:6;12744:11;:21;;12722:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12899:6;12885:11;:20;12867:9;:15;12877:4;12867:15;;;;;;;;;;;;;;;:38;;;;13102:6;13085:9;:13;13095:2;13085:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13152:2;13137:26;;13146:4;13137:26;;;13156:6;13137:26;;;;;;:::i;:::-;;;;;;;;13176:37;13196:4;13202:2;13206:6;13176:19;:37::i;:::-;12456:765;12344:877;;;:::o;17275:125::-;;;;:::o;18004:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:117::-;5632:1;5629;5622:12;5646:117;5755:1;5752;5745:12;5769:117;5878:1;5875;5868:12;5909:568;5982:8;5992:6;6042:3;6035:4;6027:6;6023:17;6019:27;6009:122;;6050:79;;:::i;:::-;6009:122;6163:6;6150:20;6140:30;;6193:18;6185:6;6182:30;6179:117;;;6215:79;;:::i;:::-;6179:117;6329:4;6321:6;6317:17;6305:29;;6383:3;6375:4;6367:6;6363:17;6353:8;6349:32;6346:41;6343:128;;;6390:79;;:::i;:::-;6343:128;5909:568;;;;;:::o;6483:559::-;6569:6;6577;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6780:1;6769:9;6765:17;6752:31;6810:18;6802:6;6799:30;6796:117;;;6832:79;;:::i;:::-;6796:117;6945:80;7017:7;7008:6;6997:9;6993:22;6945:80;:::i;:::-;6927:98;;;;6723:312;6483:559;;;;;:::o;7048:118::-;7135:24;7153:5;7135:24;:::i;:::-;7130:3;7123:37;7048:118;;:::o;7172:222::-;7265:4;7303:2;7292:9;7288:18;7280:26;;7316:71;7384:1;7373:9;7369:17;7360:6;7316:71;:::i;:::-;7172:222;;;;:::o;7400:474::-;7468:6;7476;7525:2;7513:9;7504:7;7500:23;7496:32;7493:119;;;7531:79;;:::i;:::-;7493:119;7651:1;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7622:117;7778:2;7804:53;7849:7;7840:6;7829:9;7825:22;7804:53;:::i;:::-;7794:63;;7749:118;7400:474;;;;;:::o;7894:565::-;7964:8;7974:6;8024:3;8017:4;8009:6;8005:17;8001:27;7991:122;;8032:79;;:::i;:::-;7991:122;8145:6;8132:20;8122:30;;8175:18;8167:6;8164:30;8161:117;;;8197:79;;:::i;:::-;8161:117;8311:4;8303:6;8299:17;8287:29;;8365:3;8357:4;8349:6;8345:17;8335:8;8331:32;8328:41;8325:128;;;8372:79;;:::i;:::-;8325:128;7894:565;;;;;:::o;8465:928::-;8584:6;8592;8600;8608;8657:2;8645:9;8636:7;8632:23;8628:32;8625:119;;;8663:79;;:::i;:::-;8625:119;8811:1;8800:9;8796:17;8783:31;8841:18;8833:6;8830:30;8827:117;;;8863:79;;:::i;:::-;8827:117;8976:80;9048:7;9039:6;9028:9;9024:22;8976:80;:::i;:::-;8958:98;;;;8754:312;9133:2;9122:9;9118:18;9105:32;9164:18;9156:6;9153:30;9150:117;;;9186:79;;:::i;:::-;9150:117;9299:77;9368:7;9359:6;9348:9;9344:22;9299:77;:::i;:::-;9281:95;;;;9076:310;8465:928;;;;;;;:::o;9399:180::-;9447:77;9444:1;9437:88;9544:4;9541:1;9534:15;9568:4;9565:1;9558:15;9585:320;9629:6;9666:1;9660:4;9656:12;9646:22;;9713:1;9707:4;9703:12;9734:18;9724:81;;9790:4;9782:6;9778:17;9768:27;;9724:81;9852:2;9844:6;9841:14;9821:18;9818:38;9815:84;;9871:18;;:::i;:::-;9815:84;9636:269;9585:320;;;:::o;9911:180::-;9959:77;9956:1;9949:88;10056:4;10053:1;10046:15;10080:4;10077:1;10070:15;10097:191;10137:3;10156:20;10174:1;10156:20;:::i;:::-;10151:25;;10190:20;10208:1;10190:20;:::i;:::-;10185:25;;10233:1;10230;10226:9;10219:16;;10254:3;10251:1;10248:10;10245:36;;;10261:18;;:::i;:::-;10245:36;10097:191;;;;:::o;10294:179::-;10434:31;10430:1;10422:6;10418:14;10411:55;10294:179;:::o;10479:366::-;10621:3;10642:67;10706:2;10701:3;10642:67;:::i;:::-;10635:74;;10718:93;10807:3;10718:93;:::i;:::-;10836:2;10831:3;10827:12;10820:19;;10479:366;;;:::o;10851:419::-;11017:4;11055:2;11044:9;11040:18;11032:26;;11104:9;11098:4;11094:20;11090:1;11079:9;11075:17;11068:47;11132:131;11258:4;11132:131;:::i;:::-;11124:139;;10851:419;;;:::o;11276:180::-;11324:77;11321:1;11314:88;11421:4;11418:1;11411:15;11445:4;11442:1;11435:15;11462:233;11501:3;11524:24;11542:5;11524:24;:::i;:::-;11515:33;;11570:66;11563:5;11560:77;11557:103;;11640:18;;:::i;:::-;11557:103;11687:1;11680:5;11676:13;11669:20;;11462:233;;;:::o;11701:184::-;11800:11;11834:6;11829:3;11822:19;11874:4;11869:3;11865:14;11850:29;;11701:184;;;;:::o;11891:102::-;11960:4;11983:3;11975:11;;11891:102;;;:::o;11999:108::-;12076:24;12094:5;12076:24;:::i;:::-;12071:3;12064:37;11999:108;;:::o;12113:179::-;12182:10;12203:46;12245:3;12237:6;12203:46;:::i;:::-;12281:4;12276:3;12272:14;12258:28;;12113:179;;;;:::o;12298:122::-;12350:5;12375:39;12410:2;12405:3;12401:12;12396:3;12375:39;:::i;:::-;12366:48;;12298:122;;;;:::o;12426:115::-;12498:4;12530;12525:3;12521:14;12513:22;;12426:115;;;:::o;12577:699::-;12706:3;12729:86;12808:6;12803:3;12729:86;:::i;:::-;12722:93;;12839:58;12891:5;12839:58;:::i;:::-;12920:7;12951:1;12936:315;12961:6;12958:1;12955:13;12936:315;;;13031:42;13066:6;13057:7;13031:42;:::i;:::-;13093:63;13152:3;13137:13;13093:63;:::i;:::-;13086:70;;13179:62;13234:6;13179:62;:::i;:::-;13169:72;;12996:255;12983:1;12980;12976:9;12971:14;;12936:315;;;12940:14;13267:3;13260:10;;12711:565;;12577:699;;;;;:::o;13282:503::-;13463:4;13501:2;13490:9;13486:18;13478:26;;13550:9;13544:4;13540:20;13536:1;13525:9;13521:17;13514:47;13578:118;13691:4;13682:6;13674;13578:118;:::i;:::-;13570:126;;13706:72;13774:2;13763:9;13759:18;13750:6;13706:72;:::i;:::-;13282:503;;;;;;:::o;13791:179::-;13931:31;13927:1;13919:6;13915:14;13908:55;13791:179;:::o;13976:366::-;14118:3;14139:67;14203:2;14198:3;14139:67;:::i;:::-;14132:74;;14215:93;14304:3;14215:93;:::i;:::-;14333:2;14328:3;14324:12;14317:19;;13976:366;;;:::o;14348:419::-;14514:4;14552:2;14541:9;14537:18;14529:26;;14601:9;14595:4;14591:20;14587:1;14576:9;14572:17;14565:47;14629:131;14755:4;14629:131;:::i;:::-;14621:139;;14348:419;;;:::o;14773:224::-;14913:34;14909:1;14901:6;14897:14;14890:58;14982:7;14977:2;14969:6;14965:15;14958:32;14773:224;:::o;15003:366::-;15145:3;15166:67;15230:2;15225:3;15166:67;:::i;:::-;15159:74;;15242:93;15331:3;15242:93;:::i;:::-;15360:2;15355:3;15351:12;15344:19;;15003:366;;;:::o;15375:419::-;15541:4;15579:2;15568:9;15564:18;15556:26;;15628:9;15622:4;15618:20;15614:1;15603:9;15599:17;15592:47;15656:131;15782:4;15656:131;:::i;:::-;15648:139;;15375:419;;;:::o;15800:163::-;15940:15;15936:1;15928:6;15924:14;15917:39;15800:163;:::o;15969:366::-;16111:3;16132:67;16196:2;16191:3;16132:67;:::i;:::-;16125:74;;16208:93;16297:3;16208:93;:::i;:::-;16326:2;16321:3;16317:12;16310:19;;15969:366;;;:::o;16341:419::-;16507:4;16545:2;16534:9;16530:18;16522:26;;16594:9;16588:4;16584:20;16580:1;16569:9;16565:17;16558:47;16622:131;16748:4;16622:131;:::i;:::-;16614:139;;16341:419;;;:::o;16766:226::-;16906:34;16902:1;16894:6;16890:14;16883:58;16975:9;16970:2;16962:6;16958:15;16951:34;16766:226;:::o;16998:366::-;17140:3;17161:67;17225:2;17220:3;17161:67;:::i;:::-;17154:74;;17237:93;17326:3;17237:93;:::i;:::-;17355:2;17350:3;17346:12;17339:19;;16998:366;;;:::o;17370:419::-;17536:4;17574:2;17563:9;17559:18;17551:26;;17623:9;17617:4;17613:20;17609:1;17598:9;17594:17;17587:47;17651:131;17777:4;17651:131;:::i;:::-;17643:139;;17370:419;;;:::o;17795:225::-;17935:34;17931:1;17923:6;17919:14;17912:58;18004:8;17999:2;17991:6;17987:15;17980:33;17795:225;:::o;18026:366::-;18168:3;18189:67;18253:2;18248:3;18189:67;:::i;:::-;18182:74;;18265:93;18354:3;18265:93;:::i;:::-;18383:2;18378:3;18374:12;18367:19;;18026:366;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18398:419;;;:::o;18823:174::-;18963:26;18959:1;18951:6;18947:14;18940:50;18823:174;:::o;19003:366::-;19145:3;19166:67;19230:2;19225:3;19166:67;:::i;:::-;19159:74;;19242:93;19331:3;19242:93;:::i;:::-;19360:2;19355:3;19351:12;19344:19;;19003:366;;;:::o;19375:419::-;19541:4;19579:2;19568:9;19564:18;19556:26;;19628:9;19622:4;19618:20;19614:1;19603:9;19599:17;19592:47;19656:131;19782:4;19656:131;:::i;:::-;19648:139;;19375:419;;;:::o;19800:116::-;19870:21;19885:5;19870:21;:::i;:::-;19863:5;19860:32;19850:60;;19906:1;19903;19896:12;19850:60;19800:116;:::o;19922:133::-;19965:5;20003:6;19990:20;19981:29;;20019:30;20043:5;20019:30;:::i;:::-;19922:133;;;;:::o;20061:323::-;20117:6;20166:2;20154:9;20145:7;20141:23;20137:32;20134:119;;;20172:79;;:::i;:::-;20134:119;20292:1;20317:50;20359:7;20350:6;20339:9;20335:22;20317:50;:::i;:::-;20307:60;;20263:114;20061:323;;;;:::o;20390:223::-;20530:34;20526:1;20518:6;20514:14;20507:58;20599:6;20594:2;20586:6;20582:15;20575:31;20390:223;:::o;20619:366::-;20761:3;20782:67;20846:2;20841:3;20782:67;:::i;:::-;20775:74;;20858:93;20947:3;20858:93;:::i;:::-;20976:2;20971:3;20967:12;20960:19;;20619:366;;;:::o;20991:419::-;21157:4;21195:2;21184:9;21180:18;21172:26;;21244:9;21238:4;21234:20;21230:1;21219:9;21215:17;21208:47;21272:131;21398:4;21272:131;:::i;:::-;21264:139;;20991:419;;;:::o;21416:221::-;21556:34;21552:1;21544:6;21540:14;21533:58;21625:4;21620:2;21612:6;21608:15;21601:29;21416:221;:::o;21643:366::-;21785:3;21806:67;21870:2;21865:3;21806:67;:::i;:::-;21799:74;;21882:93;21971:3;21882:93;:::i;:::-;22000:2;21995:3;21991:12;21984:19;;21643:366;;;:::o;22015:419::-;22181:4;22219:2;22208:9;22204:18;22196:26;;22268:9;22262:4;22258:20;22254:1;22243:9;22239:17;22232:47;22296:131;22422:4;22296:131;:::i;:::-;22288:139;;22015:419;;;:::o;22440:179::-;22580:31;22576:1;22568:6;22564:14;22557:55;22440:179;:::o;22625:366::-;22767:3;22788:67;22852:2;22847:3;22788:67;:::i;:::-;22781:74;;22864:93;22953:3;22864:93;:::i;:::-;22982:2;22977:3;22973:12;22966:19;;22625:366;;;:::o;22997:419::-;23163:4;23201:2;23190:9;23186:18;23178:26;;23250:9;23244:4;23240:20;23236:1;23225:9;23221:17;23214:47;23278:131;23404:4;23278:131;:::i;:::-;23270:139;;22997:419;;;:::o;23422:168::-;23562:20;23558:1;23550:6;23546:14;23539:44;23422:168;:::o;23596:366::-;23738:3;23759:67;23823:2;23818:3;23759:67;:::i;:::-;23752:74;;23835:93;23924:3;23835:93;:::i;:::-;23953:2;23948:3;23944:12;23937:19;;23596:366;;;:::o;23968:419::-;24134:4;24172:2;24161:9;24157:18;24149:26;;24221:9;24215:4;24211:20;24207:1;24196:9;24192:17;24185:47;24249:131;24375:4;24249:131;:::i;:::-;24241:139;;23968:419;;;:::o;24393:170::-;24533:22;24529:1;24521:6;24517:14;24510:46;24393:170;:::o;24569:366::-;24711:3;24732:67;24796:2;24791:3;24732:67;:::i;:::-;24725:74;;24808:93;24897:3;24808:93;:::i;:::-;24926:2;24921:3;24917:12;24910:19;;24569:366;;;:::o;24941:419::-;25107:4;25145:2;25134:9;25130:18;25122:26;;25194:9;25188:4;25184:20;25180:1;25169:9;25165:17;25158:47;25222:131;25348:4;25222:131;:::i;:::-;25214:139;;24941:419;;;:::o;25366:172::-;25506:24;25502:1;25494:6;25490:14;25483:48;25366:172;:::o;25544:366::-;25686:3;25707:67;25771:2;25766:3;25707:67;:::i;:::-;25700:74;;25783:93;25872:3;25783:93;:::i;:::-;25901:2;25896:3;25892:12;25885:19;;25544:366;;;:::o;25916:419::-;26082:4;26120:2;26109:9;26105:18;26097:26;;26169:9;26163:4;26159:20;26155:1;26144:9;26140:17;26133:47;26197:131;26323:4;26197:131;:::i;:::-;26189:139;;25916:419;;;:::o;26341:220::-;26481:34;26477:1;26469:6;26465:14;26458:58;26550:3;26545:2;26537:6;26533:15;26526:28;26341:220;:::o;26567:366::-;26709:3;26730:67;26794:2;26789:3;26730:67;:::i;:::-;26723:74;;26806:93;26895:3;26806:93;:::i;:::-;26924:2;26919:3;26915:12;26908:19;;26567:366;;;:::o;26939:419::-;27105:4;27143:2;27132:9;27128:18;27120:26;;27192:9;27186:4;27182:20;27178:1;27167:9;27163:17;27156:47;27220:131;27346:4;27220:131;:::i;:::-;27212:139;;26939:419;;;:::o;27364:221::-;27504:34;27500:1;27492:6;27488:14;27481:58;27573:4;27568:2;27560:6;27556:15;27549:29;27364:221;:::o;27591:366::-;27733:3;27754:67;27818:2;27813:3;27754:67;:::i;:::-;27747:74;;27830:93;27919:3;27830:93;:::i;:::-;27948:2;27943:3;27939:12;27932:19;;27591:366;;;:::o;27963:419::-;28129:4;28167:2;28156:9;28152:18;28144:26;;28216:9;28210:4;28206:20;28202:1;28191:9;28187:17;28180:47;28244:131;28370:4;28244:131;:::i;:::-;28236:139;;27963:419;;;:::o;28388:182::-;28528:34;28524:1;28516:6;28512:14;28505:58;28388:182;:::o;28576:366::-;28718:3;28739:67;28803:2;28798:3;28739:67;:::i;:::-;28732:74;;28815:93;28904:3;28815:93;:::i;:::-;28933:2;28928:3;28924:12;28917:19;;28576:366;;;:::o;28948:419::-;29114:4;29152:2;29141:9;29137:18;29129:26;;29201:9;29195:4;29191:20;29187:1;29176:9;29172:17;29165:47;29229:131;29355:4;29229:131;:::i;:::-;29221:139;;28948:419;;;:::o;29373:224::-;29513:34;29509:1;29501:6;29497:14;29490:58;29582:7;29577:2;29569:6;29565:15;29558:32;29373:224;:::o;29603:366::-;29745:3;29766:67;29830:2;29825:3;29766:67;:::i;:::-;29759:74;;29842:93;29931:3;29842:93;:::i;:::-;29960:2;29955:3;29951:12;29944:19;;29603:366;;;:::o;29975:419::-;30141:4;30179:2;30168:9;30164:18;30156:26;;30228:9;30222:4;30218:20;30214:1;30203:9;30199:17;30192:47;30256:131;30382:4;30256:131;:::i;:::-;30248:139;;29975:419;;;:::o;30400:222::-;30540:34;30536:1;30528:6;30524:14;30517:58;30609:5;30604:2;30596:6;30592:15;30585:30;30400:222;:::o;30628:366::-;30770:3;30791:67;30855:2;30850:3;30791:67;:::i;:::-;30784:74;;30867:93;30956:3;30867:93;:::i;:::-;30985:2;30980:3;30976:12;30969:19;;30628:366;;;:::o;31000:419::-;31166:4;31204:2;31193:9;31189:18;31181:26;;31253:9;31247:4;31243:20;31239:1;31228:9;31224:17;31217:47;31281:131;31407:4;31281:131;:::i;:::-;31273:139;;31000:419;;;:::o;31425:225::-;31565:34;31561:1;31553:6;31549:14;31542:58;31634:8;31629:2;31621:6;31617:15;31610:33;31425:225;:::o;31656:366::-;31798:3;31819:67;31883:2;31878:3;31819:67;:::i;:::-;31812:74;;31895:93;31984:3;31895:93;:::i;:::-;32013:2;32008:3;32004:12;31997:19;;31656:366;;;:::o;32028:419::-;32194:4;32232:2;32221:9;32217:18;32209:26;;32281:9;32275:4;32271:20;32267:1;32256:9;32252:17;32245:47;32309:131;32435:4;32309:131;:::i;:::-;32301:139;;32028:419;;;:::o

Swarm Source

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