ETH Price: $3,610.59 (-2.21%)

Token

ERC-20: Sublime Society (VIBES)
 

Overview

Max Total Supply

987,654,321 VIBES

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.339027595062745718 VIBES

Value
$0.00
0x127b48a00806bdc14c5d68f7703c56fbfe571f5a
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:
VIBESToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-05
*/

// SPDX-License-Identifier: GPL

// Sublime Society
// VIBES Contract

/*
“If you want to find the secrets of the universe, think in terms of energy, frequency and vibration.”
– Nikola Tesla
*/

pragma solidity ^0.8.0;

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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


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


abstract contract ApproveAndCallFallBack {
    function receiveApproval(address from, address _token, uint256 _amount, string memory _destination) public virtual;
}

contract VIBESToken is ERC20, Ownable {
    
    constructor() 
    ERC20("Sublime Society", "VIBES") 
    {
        _mint(msg.sender, 987654321000000000000000000);
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _amount, string memory _destination) public returns (bool success) {
        require(approve(_spender, _amount));

        ApproveAndCallFallBack(_spender).receiveApproval(
            msg.sender,
            address(this),
            _amount,
            _destination
        );

        return true;
    }

    /**
     * @dev Permanently renounce ownership of the contract.
     *
     * This function will burn all tokens held by the current owner before
     * relinquishing control. After calling this function, the contract will
     * become trustless and no one will be able to perform privileged actions.
     *
     * IMPORTANT: Renouncing ownership is an irreversible action. Make sure
     * to double-check before calling this function.
     */
    function renounceOwnership() public virtual onlyOwner override {
        _transferOwnership(address(0));
    }

    /**
     * @dev Recover any ERC20 token that was sent to the token contract.
     * @param tokenAddress The token contract address
     * @param tokenAmount  Number of tokens to be sent
     */
    function recoverERC20(address tokenAddress, uint256 tokenAmount)
        external
        onlyOwner
    {
        IERC20(tokenAddress).transfer(msg.sender, tokenAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_destination","type":"string"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600f81526020017f5375626c696d6520536f636965747900000000000000000000000000000000008152506040518060400160405280600581526020017f56494245530000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200033c565b508060049080519060200190620000af9291906200033c565b505050620000d2620000c6620000f660201b60201c565b620000fe60201b60201c565b620000f0336b0330f7f0064f1eef5c240000620001c460201b60201c565b62000598565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000237576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022e9062000424565b60405180910390fd5b6200024b600083836200033260201b60201c565b80600260008282546200025f919062000474565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000312919062000446565b60405180910390a36200032e600083836200033760201b60201c565b5050565b505050565b505050565b8280546200034a90620004db565b90600052602060002090601f0160209004810192826200036e5760008555620003ba565b82601f106200038957805160ff1916838001178555620003ba565b82800160010185558215620003ba579182015b82811115620003b95782518255916020019190600101906200039c565b5b509050620003c99190620003cd565b5090565b5b80821115620003e8576000816000905550600101620003ce565b5090565b6000620003fb601f8362000463565b915062000408826200056f565b602082019050919050565b6200041e81620004d1565b82525050565b600060208201905081810360008301526200043f81620003ec565b9050919050565b60006020820190506200045d600083018462000413565b92915050565b600082825260208201905092915050565b60006200048182620004d1565b91506200048e83620004d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004c657620004c562000511565b5b828201905092915050565b6000819050919050565b60006002820490506001821680620004f457607f821691505b602082108114156200050b576200050a62000540565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611a2080620005a86000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d7146102b1578063a9059cbb146102e1578063dd62ed3e14610311578063f2fde38b1461034157610100565b8063715018a61461024f5780638980f11f146102595780638da5cb5b1461027557806395d89b411461029357610100565b80632fe97e3a116100d35780632fe97e3a146101a1578063313ce567146101d157806339509351146101ef57806370a082311461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035d565b60405161011a919061133e565b60405180910390f35b61013d60048036038101906101389190611007565b6103ef565b60405161014a9190611323565b60405180910390f35b61015b610412565b6040516101689190611480565b60405180910390f35b61018b60048036038101906101869190610fb4565b61041c565b6040516101989190611323565b60405180910390f35b6101bb60048036038101906101b69190611047565b61044b565b6040516101c89190611323565b60405180910390f35b6101d96104dc565b6040516101e6919061149b565b60405180910390f35b61020960048036038101906102049190611007565b6104e5565b6040516102169190611323565b60405180910390f35b61023960048036038101906102349190610f47565b61051c565b6040516102469190611480565b60405180910390f35b610257610564565b005b610273600480360381019061026e9190611007565b610578565b005b61027d610612565b60405161028a9190611293565b60405180910390f35b61029b61063c565b6040516102a8919061133e565b60405180910390f35b6102cb60048036038101906102c69190611007565b6106ce565b6040516102d89190611323565b60405180910390f35b6102fb60048036038101906102f69190611007565b610745565b6040516103089190611323565b60405180910390f35b61032b60048036038101906103269190610f74565b610768565b6040516103389190611480565b60405180910390f35b61035b60048036038101906103569190610f47565b6107ef565b005b60606003805461036c90611615565b80601f016020809104026020016040519081016040528092919081815260200182805461039890611615565b80156103e55780601f106103ba576101008083540402835291602001916103e5565b820191906000526020600020905b8154815290600101906020018083116103c857829003601f168201915b5050505050905090565b6000806103fa610873565b905061040781858561087b565b600191505092915050565b6000600254905090565b600080610427610873565b9050610434858285610a46565b61043f858585610ad2565b60019150509392505050565b600061045784846103ef565b61046057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663cbb714a0333086866040518563ffffffff1660e01b815260040161049f94939291906112ae565b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b50505050600190509392505050565b60006012905090565b6000806104f0610873565b90506105118185856105028589610768565b61050c9190611528565b61087b565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61056c610d4a565b6105766000610dc8565b565b610580610d4a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016105bb9291906112fa565b602060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d91906110b6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461064b90611615565b80601f016020809104026020016040519081016040528092919081815260200182805461067790611615565b80156106c45780601f10610699576101008083540402835291602001916106c4565b820191906000526020600020905b8154815290600101906020018083116106a757829003601f168201915b5050505050905090565b6000806106d9610873565b905060006106e78286610768565b90508381101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390611460565b60405180910390fd5b610739828686840361087b565b60019250505092915050565b600080610750610873565b905061075d818585610ad2565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107f7610d4a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90611380565b60405180910390fd5b61087081610dc8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290611440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561095b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610952906113a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a399190611480565b60405180910390a3505050565b6000610a528484610768565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610acc5781811015610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab5906113c0565b60405180910390fd5b610acb848484840361087b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611420565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990611360565b60405180910390fd5b610bbd838383610e8e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a906113e0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d319190611480565b60405180910390a3610d44848484610e93565b50505050565b610d52610873565b73ffffffffffffffffffffffffffffffffffffffff16610d70610612565b73ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90611400565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000610eab610ea6846114db565b6114b6565b905082815260208101848484011115610ec757610ec661170a565b5b610ed28482856115d3565b509392505050565b600081359050610ee9816119a5565b92915050565b600081519050610efe816119bc565b92915050565b600082601f830112610f1957610f18611705565b5b8135610f29848260208601610e98565b91505092915050565b600081359050610f41816119d3565b92915050565b600060208284031215610f5d57610f5c611714565b5b6000610f6b84828501610eda565b91505092915050565b60008060408385031215610f8b57610f8a611714565b5b6000610f9985828601610eda565b9250506020610faa85828601610eda565b9150509250929050565b600080600060608486031215610fcd57610fcc611714565b5b6000610fdb86828701610eda565b9350506020610fec86828701610eda565b9250506040610ffd86828701610f32565b9150509250925092565b6000806040838503121561101e5761101d611714565b5b600061102c85828601610eda565b925050602061103d85828601610f32565b9150509250929050565b6000806000606084860312156110605761105f611714565b5b600061106e86828701610eda565b935050602061107f86828701610f32565b925050604084013567ffffffffffffffff8111156110a05761109f61170f565b5b6110ac86828701610f04565b9150509250925092565b6000602082840312156110cc576110cb611714565b5b60006110da84828501610eef565b91505092915050565b6110ec8161157e565b82525050565b6110fb81611590565b82525050565b600061110c8261150c565b6111168185611517565b93506111268185602086016115e2565b61112f81611719565b840191505092915050565b6000611147602383611517565b91506111528261172a565b604082019050919050565b600061116a602683611517565b915061117582611779565b604082019050919050565b600061118d602283611517565b9150611198826117c8565b604082019050919050565b60006111b0601d83611517565b91506111bb82611817565b602082019050919050565b60006111d3602683611517565b91506111de82611840565b604082019050919050565b60006111f6602083611517565b91506112018261188f565b602082019050919050565b6000611219602583611517565b9150611224826118b8565b604082019050919050565b600061123c602483611517565b915061124782611907565b604082019050919050565b600061125f602583611517565b915061126a82611956565b604082019050919050565b61127e816115bc565b82525050565b61128d816115c6565b82525050565b60006020820190506112a860008301846110e3565b92915050565b60006080820190506112c360008301876110e3565b6112d060208301866110e3565b6112dd6040830185611275565b81810360608301526112ef8184611101565b905095945050505050565b600060408201905061130f60008301856110e3565b61131c6020830184611275565b9392505050565b600060208201905061133860008301846110f2565b92915050565b600060208201905081810360008301526113588184611101565b905092915050565b600060208201905081810360008301526113798161113a565b9050919050565b600060208201905081810360008301526113998161115d565b9050919050565b600060208201905081810360008301526113b981611180565b9050919050565b600060208201905081810360008301526113d9816111a3565b9050919050565b600060208201905081810360008301526113f9816111c6565b9050919050565b60006020820190508181036000830152611419816111e9565b9050919050565b600060208201905081810360008301526114398161120c565b9050919050565b600060208201905081810360008301526114598161122f565b9050919050565b6000602082019050818103600083015261147981611252565b9050919050565b60006020820190506114956000830184611275565b92915050565b60006020820190506114b06000830184611284565b92915050565b60006114c06114d1565b90506114cc8282611647565b919050565b6000604051905090565b600067ffffffffffffffff8211156114f6576114f56116d6565b5b6114ff82611719565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611533826115bc565b915061153e836115bc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561157357611572611678565b5b828201905092915050565b60006115898261159c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156116005780820151818401526020810190506115e5565b8381111561160f576000848401525b50505050565b6000600282049050600182168061162d57607f821691505b60208210811415611641576116406116a7565b5b50919050565b61165082611719565b810181811067ffffffffffffffff8211171561166f5761166e6116d6565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6119ae8161157e565b81146119b957600080fd5b50565b6119c581611590565b81146119d057600080fd5b50565b6119dc816115bc565b81146119e757600080fd5b5056fea2646970667358221220a7bcd88175661b29aa09f6690f4b2e249be24ff43f5ba6083a9dbe2d175aee4364736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d7146102b1578063a9059cbb146102e1578063dd62ed3e14610311578063f2fde38b1461034157610100565b8063715018a61461024f5780638980f11f146102595780638da5cb5b1461027557806395d89b411461029357610100565b80632fe97e3a116100d35780632fe97e3a146101a1578063313ce567146101d157806339509351146101ef57806370a082311461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035d565b60405161011a919061133e565b60405180910390f35b61013d60048036038101906101389190611007565b6103ef565b60405161014a9190611323565b60405180910390f35b61015b610412565b6040516101689190611480565b60405180910390f35b61018b60048036038101906101869190610fb4565b61041c565b6040516101989190611323565b60405180910390f35b6101bb60048036038101906101b69190611047565b61044b565b6040516101c89190611323565b60405180910390f35b6101d96104dc565b6040516101e6919061149b565b60405180910390f35b61020960048036038101906102049190611007565b6104e5565b6040516102169190611323565b60405180910390f35b61023960048036038101906102349190610f47565b61051c565b6040516102469190611480565b60405180910390f35b610257610564565b005b610273600480360381019061026e9190611007565b610578565b005b61027d610612565b60405161028a9190611293565b60405180910390f35b61029b61063c565b6040516102a8919061133e565b60405180910390f35b6102cb60048036038101906102c69190611007565b6106ce565b6040516102d89190611323565b60405180910390f35b6102fb60048036038101906102f69190611007565b610745565b6040516103089190611323565b60405180910390f35b61032b60048036038101906103269190610f74565b610768565b6040516103389190611480565b60405180910390f35b61035b60048036038101906103569190610f47565b6107ef565b005b60606003805461036c90611615565b80601f016020809104026020016040519081016040528092919081815260200182805461039890611615565b80156103e55780601f106103ba576101008083540402835291602001916103e5565b820191906000526020600020905b8154815290600101906020018083116103c857829003601f168201915b5050505050905090565b6000806103fa610873565b905061040781858561087b565b600191505092915050565b6000600254905090565b600080610427610873565b9050610434858285610a46565b61043f858585610ad2565b60019150509392505050565b600061045784846103ef565b61046057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663cbb714a0333086866040518563ffffffff1660e01b815260040161049f94939291906112ae565b600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b50505050600190509392505050565b60006012905090565b6000806104f0610873565b90506105118185856105028589610768565b61050c9190611528565b61087b565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61056c610d4a565b6105766000610dc8565b565b610580610d4a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016105bb9291906112fa565b602060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d91906110b6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461064b90611615565b80601f016020809104026020016040519081016040528092919081815260200182805461067790611615565b80156106c45780601f10610699576101008083540402835291602001916106c4565b820191906000526020600020905b8154815290600101906020018083116106a757829003601f168201915b5050505050905090565b6000806106d9610873565b905060006106e78286610768565b90508381101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390611460565b60405180910390fd5b610739828686840361087b565b60019250505092915050565b600080610750610873565b905061075d818585610ad2565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107f7610d4a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90611380565b60405180910390fd5b61087081610dc8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290611440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561095b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610952906113a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a399190611480565b60405180910390a3505050565b6000610a528484610768565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610acc5781811015610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab5906113c0565b60405180910390fd5b610acb848484840361087b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611420565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990611360565b60405180910390fd5b610bbd838383610e8e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a906113e0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d319190611480565b60405180910390a3610d44848484610e93565b50505050565b610d52610873565b73ffffffffffffffffffffffffffffffffffffffff16610d70610612565b73ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90611400565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000610eab610ea6846114db565b6114b6565b905082815260208101848484011115610ec757610ec661170a565b5b610ed28482856115d3565b509392505050565b600081359050610ee9816119a5565b92915050565b600081519050610efe816119bc565b92915050565b600082601f830112610f1957610f18611705565b5b8135610f29848260208601610e98565b91505092915050565b600081359050610f41816119d3565b92915050565b600060208284031215610f5d57610f5c611714565b5b6000610f6b84828501610eda565b91505092915050565b60008060408385031215610f8b57610f8a611714565b5b6000610f9985828601610eda565b9250506020610faa85828601610eda565b9150509250929050565b600080600060608486031215610fcd57610fcc611714565b5b6000610fdb86828701610eda565b9350506020610fec86828701610eda565b9250506040610ffd86828701610f32565b9150509250925092565b6000806040838503121561101e5761101d611714565b5b600061102c85828601610eda565b925050602061103d85828601610f32565b9150509250929050565b6000806000606084860312156110605761105f611714565b5b600061106e86828701610eda565b935050602061107f86828701610f32565b925050604084013567ffffffffffffffff8111156110a05761109f61170f565b5b6110ac86828701610f04565b9150509250925092565b6000602082840312156110cc576110cb611714565b5b60006110da84828501610eef565b91505092915050565b6110ec8161157e565b82525050565b6110fb81611590565b82525050565b600061110c8261150c565b6111168185611517565b93506111268185602086016115e2565b61112f81611719565b840191505092915050565b6000611147602383611517565b91506111528261172a565b604082019050919050565b600061116a602683611517565b915061117582611779565b604082019050919050565b600061118d602283611517565b9150611198826117c8565b604082019050919050565b60006111b0601d83611517565b91506111bb82611817565b602082019050919050565b60006111d3602683611517565b91506111de82611840565b604082019050919050565b60006111f6602083611517565b91506112018261188f565b602082019050919050565b6000611219602583611517565b9150611224826118b8565b604082019050919050565b600061123c602483611517565b915061124782611907565b604082019050919050565b600061125f602583611517565b915061126a82611956565b604082019050919050565b61127e816115bc565b82525050565b61128d816115c6565b82525050565b60006020820190506112a860008301846110e3565b92915050565b60006080820190506112c360008301876110e3565b6112d060208301866110e3565b6112dd6040830185611275565b81810360608301526112ef8184611101565b905095945050505050565b600060408201905061130f60008301856110e3565b61131c6020830184611275565b9392505050565b600060208201905061133860008301846110f2565b92915050565b600060208201905081810360008301526113588184611101565b905092915050565b600060208201905081810360008301526113798161113a565b9050919050565b600060208201905081810360008301526113998161115d565b9050919050565b600060208201905081810360008301526113b981611180565b9050919050565b600060208201905081810360008301526113d9816111a3565b9050919050565b600060208201905081810360008301526113f9816111c6565b9050919050565b60006020820190508181036000830152611419816111e9565b9050919050565b600060208201905081810360008301526114398161120c565b9050919050565b600060208201905081810360008301526114598161122f565b9050919050565b6000602082019050818103600083015261147981611252565b9050919050565b60006020820190506114956000830184611275565b92915050565b60006020820190506114b06000830184611284565b92915050565b60006114c06114d1565b90506114cc8282611647565b919050565b6000604051905090565b600067ffffffffffffffff8211156114f6576114f56116d6565b5b6114ff82611719565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611533826115bc565b915061153e836115bc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561157357611572611678565b5b828201905092915050565b60006115898261159c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156116005780820151818401526020810190506115e5565b8381111561160f576000848401525b50505050565b6000600282049050600182168061162d57607f821691505b60208210811415611641576116406116a7565b5b50919050565b61165082611719565b810181811067ffffffffffffffff8211171561166f5761166e6116d6565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6119ae8161157e565b81146119b957600080fd5b50565b6119c581611590565b81146119d057600080fd5b50565b6119dc816115bc565b81146119e757600080fd5b5056fea2646970667358221220a7bcd88175661b29aa09f6690f4b2e249be24ff43f5ba6083a9dbe2d175aee4364736f6c63430008070033

Deployed Bytecode Sourcemap

19787:1585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10982:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9751:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11763:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20029:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9593:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12433:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9922:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20866:112;;;:::i;:::-;;21189:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4636:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8841:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13174:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10255:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10511:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5535:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8622:100;8676:13;8709:5;8702:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:100;:::o;10982:201::-;11065:4;11082:13;11098:12;:10;:12::i;:::-;11082:28;;11121:32;11130:5;11137:7;11146:6;11121:8;:32::i;:::-;11171:4;11164:11;;;10982:201;;;;:::o;9751:108::-;9812:7;9839:12;;9832:19;;9751:108;:::o;11763:261::-;11860:4;11877:15;11895:12;:10;:12::i;:::-;11877:30;;11918:38;11934:4;11940:7;11949:6;11918:15;:38::i;:::-;11967:27;11977:4;11983:2;11987:6;11967:9;:27::i;:::-;12012:4;12005:11;;;11763:261;;;;;:::o;20029:369::-;20132:12;20165:26;20173:8;20183:7;20165;:26::i;:::-;20157:35;;;;;;20228:8;20205:48;;;20268:10;20301:4;20321:7;20343:12;20205:161;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20386:4;20379:11;;20029:369;;;;;:::o;9593:93::-;9651:5;9676:2;9669:9;;9593:93;:::o;12433:238::-;12521:4;12538:13;12554:12;:10;:12::i;:::-;12538:28;;12577:64;12586:5;12593:7;12630:10;12602:25;12612:5;12619:7;12602:9;:25::i;:::-;:38;;;;:::i;:::-;12577:8;:64::i;:::-;12659:4;12652:11;;;12433:238;;;;:::o;9922:127::-;9996:7;10023:9;:18;10033:7;10023:18;;;;;;;;;;;;;;;;10016:25;;9922:127;;;:::o;20866:112::-;4522:13;:11;:13::i;:::-;20940:30:::1;20967:1;20940:18;:30::i;:::-;20866:112::o:0;21189:180::-;4522:13;:11;:13::i;:::-;21314:12:::1;21307:29;;;21337:10;21349:11;21307:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21189:180:::0;;:::o;4636:87::-;4682:7;4709:6;;;;;;;;;;;4702:13;;4636:87;:::o;8841:104::-;8897:13;8930:7;8923:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8841:104;:::o;13174:436::-;13267:4;13284:13;13300:12;:10;:12::i;:::-;13284:28;;13323:24;13350:25;13360:5;13367:7;13350:9;:25::i;:::-;13323:52;;13414:15;13394:16;:35;;13386:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13507:60;13516:5;13523:7;13551:15;13532:16;:34;13507:8;:60::i;:::-;13598:4;13591:11;;;;13174:436;;;;:::o;10255:193::-;10334:4;10351:13;10367:12;:10;:12::i;:::-;10351:28;;10390;10400:5;10407:2;10411:6;10390:9;:28::i;:::-;10436:4;10429:11;;;10255:193;;;;:::o;10511:151::-;10600:7;10627:11;:18;10639:5;10627:18;;;;;;;;;;;;;;;:27;10646:7;10627:27;;;;;;;;;;;;;;;;10620:34;;10511:151;;;;:::o;5535:201::-;4522:13;:11;:13::i;:::-;5644:1:::1;5624:22;;:8;:22;;;;5616:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5700:28;5719:8;5700:18;:28::i;:::-;5535:201:::0;:::o;3345:98::-;3398:7;3425:10;3418:17;;3345:98;:::o;17167:346::-;17286:1;17269:19;;:5;:19;;;;17261:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17367:1;17348:21;;:7;:21;;;;17340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:6;17421:11;:18;17433:5;17421:18;;;;;;;;;;;;;;;:27;17440:7;17421:27;;;;;;;;;;;;;;;:36;;;;17489:7;17473:32;;17482:5;17473:32;;;17498:6;17473:32;;;;;;:::i;:::-;;;;;;;;17167:346;;;:::o;17804:419::-;17905:24;17932:25;17942:5;17949:7;17932:9;:25::i;:::-;17905:52;;17992:17;17972:16;:37;17968:248;;18054:6;18034:16;:26;;18026:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18138:51;18147:5;18154:7;18182:6;18163:16;:25;18138:8;:51::i;:::-;17968:248;17894:329;17804:419;;;:::o;14080:806::-;14193:1;14177:18;;:4;:18;;;;14169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14270:1;14256:16;;:2;:16;;;;14248:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:38;14346:4;14352:2;14356:6;14325:20;:38::i;:::-;14376:19;14398:9;:15;14408:4;14398:15;;;;;;;;;;;;;;;;14376:37;;14447:6;14432:11;:21;;14424:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14564:6;14550:11;:20;14532:9;:15;14542:4;14532:15;;;;;;;;;;;;;;;:38;;;;14767:6;14750:9;:13;14760:2;14750:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14817:2;14802:26;;14811:4;14802:26;;;14821:6;14802:26;;;;;;:::i;:::-;;;;;;;;14841:37;14861:4;14867:2;14871:6;14841:19;:37::i;:::-;14158:728;14080:806;;;:::o;4801:132::-;4876:12;:10;:12::i;:::-;4865:23;;:7;:5;:7::i;:::-;:23;;;4857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4801:132::o;5896:191::-;5970:16;5989:6;;;;;;;;;;;5970:25;;6015:8;6006:6;;:17;;;;;;;;;;;;;;;;;;6070:8;6039:40;;6060:8;6039:40;;;;;;;;;;;;5959:128;5896:191;:::o;18823:91::-;;;;:::o;19518:90::-;;;;:::o;7:412:1:-;85:5;110:66;126:49;168:6;126:49;:::i;:::-;110:66;:::i;:::-;101:75;;199:6;192:5;185:21;237:4;230:5;226:16;275:3;266:6;261:3;257:16;254:25;251:112;;;282:79;;:::i;:::-;251:112;372:41;406:6;401:3;396;372:41;:::i;:::-;91:328;7:412;;;;;:::o;425:139::-;471:5;509:6;496:20;487:29;;525:33;552:5;525:33;:::i;:::-;425:139;;;;:::o;570:137::-;624:5;655:6;649:13;640:22;;671:30;695:5;671:30;:::i;:::-;570:137;;;;:::o;727:340::-;783:5;832:3;825:4;817:6;813:17;809:27;799:122;;840:79;;:::i;:::-;799:122;957:6;944:20;982:79;1057:3;1049:6;1042:4;1034:6;1030:17;982:79;:::i;:::-;973:88;;789:278;727:340;;;;:::o;1073:139::-;1119:5;1157:6;1144:20;1135:29;;1173:33;1200:5;1173:33;:::i;:::-;1073:139;;;;:::o;1218:329::-;1277:6;1326:2;1314:9;1305:7;1301:23;1297:32;1294:119;;;1332:79;;:::i;:::-;1294:119;1452:1;1477:53;1522:7;1513:6;1502:9;1498:22;1477:53;:::i;:::-;1467:63;;1423:117;1218:329;;;;:::o;1553:474::-;1621:6;1629;1678:2;1666:9;1657:7;1653:23;1649:32;1646:119;;;1684:79;;:::i;:::-;1646:119;1804:1;1829:53;1874:7;1865:6;1854:9;1850:22;1829:53;:::i;:::-;1819:63;;1775:117;1931:2;1957:53;2002:7;1993:6;1982:9;1978:22;1957:53;:::i;:::-;1947:63;;1902:118;1553:474;;;;;:::o;2033:619::-;2110:6;2118;2126;2175:2;2163:9;2154:7;2150:23;2146:32;2143:119;;;2181:79;;:::i;:::-;2143:119;2301:1;2326:53;2371:7;2362:6;2351:9;2347:22;2326:53;:::i;:::-;2316:63;;2272:117;2428:2;2454:53;2499:7;2490:6;2479:9;2475:22;2454:53;:::i;:::-;2444:63;;2399:118;2556:2;2582:53;2627:7;2618:6;2607:9;2603:22;2582:53;:::i;:::-;2572:63;;2527:118;2033:619;;;;;:::o;2658:474::-;2726:6;2734;2783:2;2771:9;2762:7;2758:23;2754:32;2751:119;;;2789:79;;:::i;:::-;2751:119;2909:1;2934:53;2979:7;2970:6;2959:9;2955:22;2934:53;:::i;:::-;2924:63;;2880:117;3036:2;3062:53;3107:7;3098:6;3087:9;3083:22;3062:53;:::i;:::-;3052:63;;3007:118;2658:474;;;;;:::o;3138:799::-;3225:6;3233;3241;3290:2;3278:9;3269:7;3265:23;3261:32;3258:119;;;3296:79;;:::i;:::-;3258:119;3416:1;3441:53;3486:7;3477:6;3466:9;3462:22;3441:53;:::i;:::-;3431:63;;3387:117;3543:2;3569:53;3614:7;3605:6;3594:9;3590:22;3569:53;:::i;:::-;3559:63;;3514:118;3699:2;3688:9;3684:18;3671:32;3730:18;3722:6;3719:30;3716:117;;;3752:79;;:::i;:::-;3716:117;3857:63;3912:7;3903:6;3892:9;3888:22;3857:63;:::i;:::-;3847:73;;3642:288;3138:799;;;;;:::o;3943:345::-;4010:6;4059:2;4047:9;4038:7;4034:23;4030:32;4027:119;;;4065:79;;:::i;:::-;4027:119;4185:1;4210:61;4263:7;4254:6;4243:9;4239:22;4210:61;:::i;:::-;4200:71;;4156:125;3943:345;;;;:::o;4294:118::-;4381:24;4399:5;4381:24;:::i;:::-;4376:3;4369:37;4294:118;;:::o;4418:109::-;4499:21;4514:5;4499:21;:::i;:::-;4494:3;4487:34;4418:109;;:::o;4533:364::-;4621:3;4649:39;4682:5;4649:39;:::i;:::-;4704:71;4768:6;4763:3;4704:71;:::i;:::-;4697:78;;4784:52;4829:6;4824:3;4817:4;4810:5;4806:16;4784:52;:::i;:::-;4861:29;4883:6;4861:29;:::i;:::-;4856:3;4852:39;4845:46;;4625:272;4533:364;;;;:::o;4903:366::-;5045:3;5066:67;5130:2;5125:3;5066:67;:::i;:::-;5059:74;;5142:93;5231:3;5142:93;:::i;:::-;5260:2;5255:3;5251:12;5244:19;;4903:366;;;:::o;5275:::-;5417:3;5438:67;5502:2;5497:3;5438:67;:::i;:::-;5431:74;;5514:93;5603:3;5514:93;:::i;:::-;5632:2;5627:3;5623:12;5616:19;;5275:366;;;:::o;5647:::-;5789:3;5810:67;5874:2;5869:3;5810:67;:::i;:::-;5803:74;;5886:93;5975:3;5886:93;:::i;:::-;6004:2;5999:3;5995:12;5988:19;;5647:366;;;:::o;6019:::-;6161:3;6182:67;6246:2;6241:3;6182:67;:::i;:::-;6175:74;;6258:93;6347:3;6258:93;:::i;:::-;6376:2;6371:3;6367:12;6360:19;;6019:366;;;:::o;6391:::-;6533:3;6554:67;6618:2;6613:3;6554:67;:::i;:::-;6547:74;;6630:93;6719:3;6630:93;:::i;:::-;6748:2;6743:3;6739:12;6732:19;;6391:366;;;:::o;6763:::-;6905:3;6926:67;6990:2;6985:3;6926:67;:::i;:::-;6919:74;;7002:93;7091:3;7002:93;:::i;:::-;7120:2;7115:3;7111:12;7104:19;;6763:366;;;:::o;7135:::-;7277:3;7298:67;7362:2;7357:3;7298:67;:::i;:::-;7291:74;;7374:93;7463:3;7374:93;:::i;:::-;7492:2;7487:3;7483:12;7476:19;;7135:366;;;:::o;7507:::-;7649:3;7670:67;7734:2;7729:3;7670:67;:::i;:::-;7663:74;;7746:93;7835:3;7746:93;:::i;:::-;7864:2;7859:3;7855:12;7848:19;;7507:366;;;:::o;7879:::-;8021:3;8042:67;8106:2;8101:3;8042:67;:::i;:::-;8035:74;;8118:93;8207:3;8118:93;:::i;:::-;8236:2;8231:3;8227:12;8220:19;;7879:366;;;:::o;8251:118::-;8338:24;8356:5;8338:24;:::i;:::-;8333:3;8326:37;8251:118;;:::o;8375:112::-;8458:22;8474:5;8458:22;:::i;:::-;8453:3;8446:35;8375:112;;:::o;8493:222::-;8586:4;8624:2;8613:9;8609:18;8601:26;;8637:71;8705:1;8694:9;8690:17;8681:6;8637:71;:::i;:::-;8493:222;;;;:::o;8721:644::-;8918:4;8956:3;8945:9;8941:19;8933:27;;8970:71;9038:1;9027:9;9023:17;9014:6;8970:71;:::i;:::-;9051:72;9119:2;9108:9;9104:18;9095:6;9051:72;:::i;:::-;9133;9201:2;9190:9;9186:18;9177:6;9133:72;:::i;:::-;9252:9;9246:4;9242:20;9237:2;9226:9;9222:18;9215:48;9280:78;9353:4;9344:6;9280:78;:::i;:::-;9272:86;;8721:644;;;;;;;:::o;9371:332::-;9492:4;9530:2;9519:9;9515:18;9507:26;;9543:71;9611:1;9600:9;9596:17;9587:6;9543:71;:::i;:::-;9624:72;9692:2;9681:9;9677:18;9668:6;9624:72;:::i;:::-;9371:332;;;;;:::o;9709:210::-;9796:4;9834:2;9823:9;9819:18;9811:26;;9847:65;9909:1;9898:9;9894:17;9885:6;9847:65;:::i;:::-;9709:210;;;;:::o;9925:313::-;10038:4;10076:2;10065:9;10061:18;10053:26;;10125:9;10119:4;10115:20;10111:1;10100:9;10096:17;10089:47;10153:78;10226:4;10217:6;10153:78;:::i;:::-;10145:86;;9925:313;;;;:::o;10244:419::-;10410:4;10448:2;10437:9;10433:18;10425:26;;10497:9;10491:4;10487:20;10483:1;10472:9;10468:17;10461:47;10525:131;10651:4;10525:131;:::i;:::-;10517:139;;10244:419;;;:::o;10669:::-;10835:4;10873:2;10862:9;10858:18;10850:26;;10922:9;10916:4;10912:20;10908:1;10897:9;10893:17;10886:47;10950:131;11076:4;10950:131;:::i;:::-;10942:139;;10669:419;;;:::o;11094:::-;11260:4;11298:2;11287:9;11283:18;11275:26;;11347:9;11341:4;11337:20;11333:1;11322:9;11318:17;11311:47;11375:131;11501:4;11375:131;:::i;:::-;11367:139;;11094:419;;;:::o;11519:::-;11685:4;11723:2;11712:9;11708:18;11700:26;;11772:9;11766:4;11762:20;11758:1;11747:9;11743:17;11736:47;11800:131;11926:4;11800:131;:::i;:::-;11792:139;;11519:419;;;:::o;11944:::-;12110:4;12148:2;12137:9;12133:18;12125:26;;12197:9;12191:4;12187:20;12183:1;12172:9;12168:17;12161:47;12225:131;12351:4;12225:131;:::i;:::-;12217:139;;11944:419;;;:::o;12369:::-;12535:4;12573:2;12562:9;12558:18;12550:26;;12622:9;12616:4;12612:20;12608:1;12597:9;12593:17;12586:47;12650:131;12776:4;12650:131;:::i;:::-;12642:139;;12369:419;;;:::o;12794:::-;12960:4;12998:2;12987:9;12983:18;12975:26;;13047:9;13041:4;13037:20;13033:1;13022:9;13018:17;13011:47;13075:131;13201:4;13075:131;:::i;:::-;13067:139;;12794:419;;;:::o;13219:::-;13385:4;13423:2;13412:9;13408:18;13400:26;;13472:9;13466:4;13462:20;13458:1;13447:9;13443:17;13436:47;13500:131;13626:4;13500:131;:::i;:::-;13492:139;;13219:419;;;:::o;13644:::-;13810:4;13848:2;13837:9;13833:18;13825:26;;13897:9;13891:4;13887:20;13883:1;13872:9;13868:17;13861:47;13925:131;14051:4;13925:131;:::i;:::-;13917:139;;13644:419;;;:::o;14069:222::-;14162:4;14200:2;14189:9;14185:18;14177:26;;14213:71;14281:1;14270:9;14266:17;14257:6;14213:71;:::i;:::-;14069:222;;;;:::o;14297:214::-;14386:4;14424:2;14413:9;14409:18;14401:26;;14437:67;14501:1;14490:9;14486:17;14477:6;14437:67;:::i;:::-;14297:214;;;;:::o;14517:129::-;14551:6;14578:20;;:::i;:::-;14568:30;;14607:33;14635:4;14627:6;14607:33;:::i;:::-;14517:129;;;:::o;14652:75::-;14685:6;14718:2;14712:9;14702:19;;14652:75;:::o;14733:308::-;14795:4;14885:18;14877:6;14874:30;14871:56;;;14907:18;;:::i;:::-;14871:56;14945:29;14967:6;14945:29;:::i;:::-;14937:37;;15029:4;15023;15019:15;15011:23;;14733:308;;;:::o;15047:99::-;15099:6;15133:5;15127:12;15117:22;;15047:99;;;:::o;15152:169::-;15236:11;15270:6;15265:3;15258:19;15310:4;15305:3;15301:14;15286:29;;15152:169;;;;:::o;15327:305::-;15367:3;15386:20;15404:1;15386:20;:::i;:::-;15381:25;;15420:20;15438:1;15420:20;:::i;:::-;15415:25;;15574:1;15506:66;15502:74;15499:1;15496:81;15493:107;;;15580:18;;:::i;:::-;15493:107;15624:1;15621;15617:9;15610:16;;15327:305;;;;:::o;15638:96::-;15675:7;15704:24;15722:5;15704:24;:::i;:::-;15693:35;;15638:96;;;:::o;15740:90::-;15774:7;15817:5;15810:13;15803:21;15792:32;;15740:90;;;:::o;15836:126::-;15873:7;15913:42;15906:5;15902:54;15891:65;;15836:126;;;:::o;15968:77::-;16005:7;16034:5;16023:16;;15968:77;;;:::o;16051:86::-;16086:7;16126:4;16119:5;16115:16;16104:27;;16051:86;;;:::o;16143:154::-;16227:6;16222:3;16217;16204:30;16289:1;16280:6;16275:3;16271:16;16264:27;16143:154;;;:::o;16303:307::-;16371:1;16381:113;16395:6;16392:1;16389:13;16381:113;;;16480:1;16475:3;16471:11;16465:18;16461:1;16456:3;16452:11;16445:39;16417:2;16414:1;16410:10;16405:15;;16381:113;;;16512:6;16509:1;16506:13;16503:101;;;16592:1;16583:6;16578:3;16574:16;16567:27;16503:101;16352:258;16303:307;;;:::o;16616:320::-;16660:6;16697:1;16691:4;16687:12;16677:22;;16744:1;16738:4;16734:12;16765:18;16755:81;;16821:4;16813:6;16809:17;16799:27;;16755:81;16883:2;16875:6;16872:14;16852:18;16849:38;16846:84;;;16902:18;;:::i;:::-;16846:84;16667:269;16616:320;;;:::o;16942:281::-;17025:27;17047:4;17025:27;:::i;:::-;17017:6;17013:40;17155:6;17143:10;17140:22;17119:18;17107:10;17104:34;17101:62;17098:88;;;17166:18;;:::i;:::-;17098:88;17206:10;17202:2;17195:22;16985:238;16942:281;;:::o;17229:180::-;17277:77;17274:1;17267:88;17374:4;17371:1;17364:15;17398:4;17395:1;17388:15;17415:180;17463:77;17460:1;17453:88;17560:4;17557:1;17550:15;17584:4;17581:1;17574:15;17601:180;17649:77;17646:1;17639:88;17746:4;17743:1;17736:15;17770:4;17767:1;17760:15;17787:117;17896:1;17893;17886:12;17910:117;18019:1;18016;18009:12;18033:117;18142:1;18139;18132:12;18156:117;18265:1;18262;18255:12;18279:102;18320:6;18371:2;18367:7;18362:2;18355:5;18351:14;18347:28;18337:38;;18279:102;;;:::o;18387:222::-;18527:34;18523:1;18515:6;18511:14;18504:58;18596:5;18591:2;18583:6;18579:15;18572:30;18387:222;:::o;18615:225::-;18755:34;18751:1;18743:6;18739:14;18732:58;18824:8;18819:2;18811:6;18807:15;18800:33;18615:225;:::o;18846:221::-;18986:34;18982:1;18974:6;18970:14;18963:58;19055:4;19050:2;19042:6;19038:15;19031:29;18846:221;:::o;19073:179::-;19213:31;19209:1;19201:6;19197:14;19190:55;19073:179;:::o;19258:225::-;19398:34;19394:1;19386:6;19382:14;19375:58;19467:8;19462:2;19454:6;19450:15;19443:33;19258:225;:::o;19489:182::-;19629:34;19625:1;19617:6;19613:14;19606:58;19489:182;:::o;19677:224::-;19817:34;19813:1;19805:6;19801:14;19794:58;19886:7;19881:2;19873:6;19869:15;19862:32;19677:224;:::o;19907:223::-;20047:34;20043:1;20035:6;20031:14;20024:58;20116:6;20111:2;20103:6;20099:15;20092:31;19907:223;:::o;20136:224::-;20276:34;20272:1;20264:6;20260:14;20253:58;20345:7;20340:2;20332:6;20328:15;20321:32;20136:224;:::o;20366:122::-;20439:24;20457:5;20439:24;:::i;:::-;20432:5;20429:35;20419:63;;20478:1;20475;20468:12;20419:63;20366:122;:::o;20494:116::-;20564:21;20579:5;20564:21;:::i;:::-;20557:5;20554:32;20544:60;;20600:1;20597;20590:12;20544:60;20494:116;:::o;20616:122::-;20689:24;20707:5;20689:24;:::i;:::-;20682:5;20679:35;20669:63;;20728:1;20725;20718:12;20669:63;20616:122;:::o

Swarm Source

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