MATIC Price: $1.02 (-1.43%)
Gas: 77 GWei
 

Overview

Max Total Supply

200,000 WET

Holders

27

Total Transfers

-

Market

Price

$0.00 @ 0.000000 MATIC

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
WebleEcosystemToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-08-25
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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











/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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







/**
 * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of 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}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 value {ERC20} uses, unless this function is
     * 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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, 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:
     *
     * - `to` 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;
        _balances[account] += amount;
        emit Transfer(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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

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

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

    /**
     * @dev 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 to 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 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 {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
    }
}






/**
 * @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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


contract WebleEcosystemToken is ERC20, ERC20Burnable, Ownable {
    constructor() ERC20("Weble Ecosystem Token", "WET") {}

    function mint(address to, uint256 amount) public onlyOwner {
		 require(ERC20.totalSupply() + amount <= (1000000 * 10 ** decimals()), "ERC20Capped: cap exceeded");
        _mint(to, amount);
    }
}

//compiled with 0.8.4+commit.c7e474f2 and optimization 200.

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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601581526020017f5765626c652045636f73797374656d20546f6b656e00000000000000000000008152506040518060400160405280600381526020016215d15560ea1b81525081600390805190602001906200007c929190620000ff565b50805162000092906004906020840190620000ff565b5050506000620000a7620000fb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001e2565b3390565b8280546200010d90620001a5565b90600052602060002090601f0160209004810192826200013157600085556200017c565b82601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b5b808211156200018a57600081556001016200018f565b600181811c90821680620001ba57607f821691505b60208210811415620001dc57634e487b7160e01b600052602260045260246000fd5b50919050565b610fee80620001f26000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806395d89b411161007157806395d89b411461021f578063a457c2d714610227578063a9059cbb1461023a578063dd62ed3e1461024d578063f2fde38b1461028657600080fd5b806370a08231146101c0578063715018a6146101e957806379cc6790146101f15780638da5cb5b1461020457600080fd5b8063313ce567116100de578063313ce56714610176578063395093511461018557806340c10f191461019857806342966c68146101ad57600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610299565b6040516101259190610da3565b60405180910390f35b61014161013c366004610d62565b61032b565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610d27565b610342565b60405160128152602001610125565b610141610193366004610d62565b6103f8565b6101ab6101a6366004610d62565b61042f565b005b6101ab6101bb366004610d8b565b6104e2565b6101556101ce366004610cd4565b6001600160a01b031660009081526020819052604090205490565b6101ab6104ef565b6101ab6101ff366004610d62565b610563565b6005546040516001600160a01b039091168152602001610125565b6101186105eb565b610141610235366004610d62565b6105fa565b610141610248366004610d62565b610695565b61015561025b366004610cf5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ab610294366004610cd4565b6106a2565b6060600380546102a890610f67565b80601f01602080910402602001604051908101604052809291908181526020018280546102d490610f67565b80156103215780601f106102f657610100808354040283529160200191610321565b820191906000526020600020905b81548152906001019060200180831161030457829003601f168201915b5050505050905090565b600061033833848461078d565b5060015b92915050565b600061034f8484846108b2565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ed85336103e88685610f50565b61078d565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103389185906103e8908690610e2b565b6005546001600160a01b031633146104595760405162461bcd60e51b81526004016103d090610df6565b6104656012600a610e86565b61047290620f4240610f31565b8161047c60025490565b6104869190610e2b565b11156104d45760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a206361702065786365656465640000000000000060448201526064016103d0565b6104de8282610a8a565b5050565b6104ec3382610b69565b50565b6005546001600160a01b031633146105195760405162461bcd60e51b81526004016103d090610df6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b600061056f833361025b565b9050818110156105cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016103d0565b6105dc83336103e88585610f50565b6105e68383610b69565b505050565b6060600480546102a890610f67565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561067c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d0565b61068b33856103e88685610f50565b5060019392505050565b60006103383384846108b2565b6005546001600160a01b031633146106cc5760405162461bcd60e51b81526004016103d090610df6565b6001600160a01b0381166107315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d0565b6001600160a01b0382166108505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d0565b6001600160a01b0382166109785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d0565b6001600160a01b038316600090815260208190526040902054818110156109f05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d0565b6109fa8282610f50565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610a30908490610e2b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a7c91815260200190565b60405180910390a350505050565b6001600160a01b038216610ae05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d0565b8060026000828254610af29190610e2b565b90915550506001600160a01b03821660009081526020819052604081208054839290610b1f908490610e2b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610bc95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d0565b6001600160a01b03821660009081526020819052604090205481811015610c3d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d0565b610c478282610f50565b6001600160a01b03841660009081526020819052604081209190915560028054849290610c75908490610f50565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016108a5565b80356001600160a01b0381168114610ccf57600080fd5b919050565b600060208284031215610ce5578081fd5b610cee82610cb8565b9392505050565b60008060408385031215610d07578081fd5b610d1083610cb8565b9150610d1e60208401610cb8565b90509250929050565b600080600060608486031215610d3b578081fd5b610d4484610cb8565b9250610d5260208501610cb8565b9150604084013590509250925092565b60008060408385031215610d74578182fd5b610d7d83610cb8565b946020939093013593505050565b600060208284031215610d9c578081fd5b5035919050565b6000602080835283518082850152825b81811015610dcf57858101830151858201604001528201610db3565b81811115610de05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610e3e57610e3e610fa2565b500190565b600181815b80851115610e7e578160001904821115610e6457610e64610fa2565b80851615610e7157918102915b93841c9390800290610e48565b509250929050565b6000610cee60ff841683600082610e9f5750600161033c565b81610eac5750600061033c565b8160018114610ec25760028114610ecc57610ee8565b600191505061033c565b60ff841115610edd57610edd610fa2565b50506001821b61033c565b5060208310610133831016604e8410600b8410161715610f0b575081810a61033c565b610f158383610e43565b8060001904821115610f2957610f29610fa2565b029392505050565b6000816000190483118215151615610f4b57610f4b610fa2565b500290565b600082821015610f6257610f62610fa2565b500390565b600181811c90821680610f7b57607f821691505b60208210811415610f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea264697066735822122004efb09789a7be268c7edb6802f931d3c145da7760575ecc30c1159b150ba5b664736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806395d89b411161007157806395d89b411461021f578063a457c2d714610227578063a9059cbb1461023a578063dd62ed3e1461024d578063f2fde38b1461028657600080fd5b806370a08231146101c0578063715018a6146101e957806379cc6790146101f15780638da5cb5b1461020457600080fd5b8063313ce567116100de578063313ce56714610176578063395093511461018557806340c10f191461019857806342966c68146101ad57600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610299565b6040516101259190610da3565b60405180910390f35b61014161013c366004610d62565b61032b565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610d27565b610342565b60405160128152602001610125565b610141610193366004610d62565b6103f8565b6101ab6101a6366004610d62565b61042f565b005b6101ab6101bb366004610d8b565b6104e2565b6101556101ce366004610cd4565b6001600160a01b031660009081526020819052604090205490565b6101ab6104ef565b6101ab6101ff366004610d62565b610563565b6005546040516001600160a01b039091168152602001610125565b6101186105eb565b610141610235366004610d62565b6105fa565b610141610248366004610d62565b610695565b61015561025b366004610cf5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ab610294366004610cd4565b6106a2565b6060600380546102a890610f67565b80601f01602080910402602001604051908101604052809291908181526020018280546102d490610f67565b80156103215780601f106102f657610100808354040283529160200191610321565b820191906000526020600020905b81548152906001019060200180831161030457829003601f168201915b5050505050905090565b600061033833848461078d565b5060015b92915050565b600061034f8484846108b2565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ed85336103e88685610f50565b61078d565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103389185906103e8908690610e2b565b6005546001600160a01b031633146104595760405162461bcd60e51b81526004016103d090610df6565b6104656012600a610e86565b61047290620f4240610f31565b8161047c60025490565b6104869190610e2b565b11156104d45760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a206361702065786365656465640000000000000060448201526064016103d0565b6104de8282610a8a565b5050565b6104ec3382610b69565b50565b6005546001600160a01b031633146105195760405162461bcd60e51b81526004016103d090610df6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b600061056f833361025b565b9050818110156105cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016103d0565b6105dc83336103e88585610f50565b6105e68383610b69565b505050565b6060600480546102a890610f67565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561067c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d0565b61068b33856103e88685610f50565b5060019392505050565b60006103383384846108b2565b6005546001600160a01b031633146106cc5760405162461bcd60e51b81526004016103d090610df6565b6001600160a01b0381166107315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d0565b6001600160a01b0382166108505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d0565b6001600160a01b0382166109785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d0565b6001600160a01b038316600090815260208190526040902054818110156109f05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d0565b6109fa8282610f50565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610a30908490610e2b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a7c91815260200190565b60405180910390a350505050565b6001600160a01b038216610ae05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d0565b8060026000828254610af29190610e2b565b90915550506001600160a01b03821660009081526020819052604081208054839290610b1f908490610e2b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610bc95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d0565b6001600160a01b03821660009081526020819052604090205481811015610c3d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d0565b610c478282610f50565b6001600160a01b03841660009081526020819052604081209190915560028054849290610c75908490610f50565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016108a5565b80356001600160a01b0381168114610ccf57600080fd5b919050565b600060208284031215610ce5578081fd5b610cee82610cb8565b9392505050565b60008060408385031215610d07578081fd5b610d1083610cb8565b9150610d1e60208401610cb8565b90509250929050565b600080600060608486031215610d3b578081fd5b610d4484610cb8565b9250610d5260208501610cb8565b9150604084013590509250925092565b60008060408385031215610d74578182fd5b610d7d83610cb8565b946020939093013593505050565b600060208284031215610d9c578081fd5b5035919050565b6000602080835283518082850152825b81811015610dcf57858101830151858201604001528201610db3565b81811115610de05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610e3e57610e3e610fa2565b500190565b600181815b80851115610e7e578160001904821115610e6457610e64610fa2565b80851615610e7157918102915b93841c9390800290610e48565b509250929050565b6000610cee60ff841683600082610e9f5750600161033c565b81610eac5750600061033c565b8160018114610ec25760028114610ecc57610ee8565b600191505061033c565b60ff841115610edd57610edd610fa2565b50506001821b61033c565b5060208310610133831016604e8410600b8410161715610f0b575081810a61033c565b610f158383610e43565b8060001904821115610f2957610f29610fa2565b029392505050565b6000816000190483118215151615610f4b57610f4b610fa2565b500290565b600082821015610f6257610f62610fa2565b500390565b600181811c90821680610f7b57607f821691505b60208210811415610f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea264697066735822122004efb09789a7be268c7edb6802f931d3c145da7760575ecc30c1159b150ba5b664736f6c63430008040033

Deployed Bytecode Sourcemap

18352:333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6214:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8381:169;;;;;;:::i;:::-;;:::i;:::-;;;1848:14:1;;1841:22;1823:41;;1811:2;1796:18;8381:169:0;1778:92:1;7334:108:0;7422:12;;7334:108;;;8161:25:1;;;8149:2;8134:18;7334:108:0;8116:76:1;9032:422:0;;;;;;:::i;:::-;;:::i;7176:93::-;;;7259:2;8339:36:1;;8327:2;8312:18;7176:93:0;8294:87:1;9863:215:0;;;;;;:::i;:::-;;:::i;18483:199::-;;;;;;:::i;:::-;;:::i;:::-;;15378:91;;;;;;:::i;:::-;;:::i;7505:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7606:18:0;7579:7;7606:18;;;;;;;;;;;;7505:127;17796:148;;;:::i;15788:332::-;;;;;;:::i;:::-;;:::i;17145:87::-;17218:6;;17145:87;;-1:-1:-1;;;;;17218:6:0;;;1621:51:1;;1609:2;1594:18;17145:87:0;1576:102:1;6433:104:0;;;:::i;10581:377::-;;;;;;:::i;:::-;;:::i;7845:175::-;;;;;;:::i;:::-;;:::i;8083:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8199:18:0;;;8172:7;8199:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8083:151;18099:244;;;;;;:::i;:::-;;:::i;6214:100::-;6268:13;6301:5;6294:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6214:100;:::o;8381:169::-;8464:4;8481:39;681:10;8504:7;8513:6;8481:8;:39::i;:::-;-1:-1:-1;8538:4:0;8381:169;;;;;:::o;9032:422::-;9138:4;9155:36;9165:6;9173:9;9184:6;9155:9;:36::i;:::-;-1:-1:-1;;;;;9231:19:0;;9204:24;9231:19;;;:11;:19;;;;;;;;681:10;9231:33;;;;;;;;9283:26;;;;9275:79;;;;-1:-1:-1;;;9275:79:0;;4709:2:1;9275:79:0;;;4691:21:1;4748:2;4728:18;;;4721:30;4787:34;4767:18;;;4760:62;-1:-1:-1;;;4838:18:1;;;4831:38;4886:19;;9275:79:0;;;;;;;;;9365:57;9374:6;681:10;9396:25;9415:6;9396:16;:25;:::i;:::-;9365:8;:57::i;:::-;-1:-1:-1;9442:4:0;;9032:422;-1:-1:-1;;;;9032:422:0:o;9863:215::-;681:10;9951:4;10000:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10000:34:0;;;;;;;;;;9951:4;;9968:80;;9991:7;;10000:47;;10037:10;;10000:47;:::i;18483:199::-;17218:6;;-1:-1:-1;;;;;17218:6:0;681:10;17365:23;17357:68;;;;-1:-1:-1;;;17357:68:0;;;;;;;:::i;:::-;18599:16:::1;7259:2:::0;18599::::1;:16;:::i;:::-;18589:26;::::0;:7:::1;:26;:::i;:::-;18578:6;18556:19;7422:12:::0;;;7334:108;18556:19:::1;:28;;;;:::i;:::-;:60;;18548:98;;;::::0;-1:-1:-1;;;18548:98:0;;6692:2:1;18548:98:0::1;::::0;::::1;6674:21:1::0;6731:2;6711:18;;;6704:30;6770:27;6750:18;;;6743:55;6815:18;;18548:98:0::1;6664:175:1::0;18548:98:0::1;18657:17;18663:2;18667:6;18657:5;:17::i;:::-;18483:199:::0;;:::o;15378:91::-;15434:27;681:10;15454:6;15434:5;:27::i;:::-;15378:91;:::o;17796:148::-;17218:6;;-1:-1:-1;;;;;17218:6:0;681:10;17365:23;17357:68;;;;-1:-1:-1;;;17357:68:0;;;;;;;:::i;:::-;17887:6:::1;::::0;17866:40:::1;::::0;17903:1:::1;::::0;-1:-1:-1;;;;;17887:6:0::1;::::0;17866:40:::1;::::0;17903:1;;17866:40:::1;17917:6;:19:::0;;-1:-1:-1;;;;;;17917:19:0::1;::::0;;17796:148::o;15788:332::-;15865:24;15892:32;15902:7;681:10;8083:151;:::i;15892:32::-;15865:59;;15963:6;15943:16;:26;;15935:75;;;;-1:-1:-1;;;15935:75:0;;5479:2:1;15935:75:0;;;5461:21:1;5518:2;5498:18;;;5491:30;5557:34;5537:18;;;5530:62;-1:-1:-1;;;5608:18:1;;;5601:34;5652:19;;15935:75:0;5451:226:1;15935:75:0;16021:58;16030:7;681:10;16053:25;16072:6;16053:16;:25;:::i;16021:58::-;16090:22;16096:7;16105:6;16090:5;:22::i;:::-;15788:332;;;:::o;6433:104::-;6489:13;6522:7;6515:14;;;;;:::i;10581:377::-;681:10;10674:4;10718:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10718:34:0;;;;;;;;;;10771:35;;;;10763:85;;;;-1:-1:-1;;;10763:85:0;;7451:2:1;10763:85:0;;;7433:21:1;7490:2;7470:18;;;7463:30;7529:34;7509:18;;;7502:62;-1:-1:-1;;;7580:18:1;;;7573:35;7625:19;;10763:85:0;7423:227:1;10763:85:0;10859:67;681:10;10882:7;10891:34;10910:15;10891:16;:34;:::i;10859:67::-;-1:-1:-1;10946:4:0;;10581:377;-1:-1:-1;;;10581:377:0:o;7845:175::-;7931:4;7948:42;681:10;7972:9;7983:6;7948:9;:42::i;18099:244::-;17218:6;;-1:-1:-1;;;;;17218:6:0;681:10;17365:23;17357:68;;;;-1:-1:-1;;;17357:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18188:22:0;::::1;18180:73;;;::::0;-1:-1:-1;;;18180:73:0;;3492:2:1;18180:73:0::1;::::0;::::1;3474:21:1::0;3531:2;3511:18;;;3504:30;3570:34;3550:18;;;3543:62;-1:-1:-1;;;3621:18:1;;;3614:36;3667:19;;18180:73:0::1;3464:228:1::0;18180:73:0::1;18290:6;::::0;18269:38:::1;::::0;-1:-1:-1;;;;;18269:38:0;;::::1;::::0;18290:6:::1;::::0;18269:38:::1;::::0;18290:6:::1;::::0;18269:38:::1;18318:6;:17:::0;;-1:-1:-1;;;;;;18318:17:0::1;-1:-1:-1::0;;;;;18318:17:0;;;::::1;::::0;;;::::1;::::0;;18099:244::o;13937:346::-;-1:-1:-1;;;;;14039:19:0;;14031:68;;;;-1:-1:-1;;;14031:68:0;;7046:2:1;14031:68:0;;;7028:21:1;7085:2;7065:18;;;7058:30;7124:34;7104:18;;;7097:62;-1:-1:-1;;;7175:18:1;;;7168:34;7219:19;;14031:68:0;7018:226:1;14031:68:0;-1:-1:-1;;;;;14118:21:0;;14110:68;;;;-1:-1:-1;;;14110:68:0;;3899:2:1;14110:68:0;;;3881:21:1;3938:2;3918:18;;;3911:30;3977:34;3957:18;;;3950:62;-1:-1:-1;;;4028:18:1;;;4021:32;4070:19;;14110:68:0;3871:224:1;14110:68:0;-1:-1:-1;;;;;14191:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14243:32;;8161:25:1;;;14243:32:0;;8134:18:1;14243:32:0;;;;;;;;13937:346;;;:::o;11448:604::-;-1:-1:-1;;;;;11554:20:0;;11546:70;;;;-1:-1:-1;;;11546:70:0;;6286:2:1;11546:70:0;;;6268:21:1;6325:2;6305:18;;;6298:30;6364:34;6344:18;;;6337:62;-1:-1:-1;;;6415:18:1;;;6408:35;6460:19;;11546:70:0;6258:227:1;11546:70:0;-1:-1:-1;;;;;11635:23:0;;11627:71;;;;-1:-1:-1;;;11627:71:0;;2685:2:1;11627:71:0;;;2667:21:1;2724:2;2704:18;;;2697:30;2763:34;2743:18;;;2736:62;-1:-1:-1;;;2814:18:1;;;2807:33;2857:19;;11627:71:0;2657:225:1;11627:71:0;-1:-1:-1;;;;;11795:17:0;;11771:21;11795:17;;;;;;;;;;;11831:23;;;;11823:74;;;;-1:-1:-1;;;11823:74:0;;4302:2:1;11823:74:0;;;4284:21:1;4341:2;4321:18;;;4314:30;4380:34;4360:18;;;4353:62;-1:-1:-1;;;4431:18:1;;;4424:36;4477:19;;11823:74:0;4274:228:1;11823:74:0;11928:22;11944:6;11928:13;:22;:::i;:::-;-1:-1:-1;;;;;11908:17:0;;;:9;:17;;;;;;;;;;;:42;;;;11961:20;;;;;;;;:30;;11985:6;;11908:9;11961:30;;11985:6;;11961:30;:::i;:::-;;;;;;;;12026:9;-1:-1:-1;;;;;12009:35:0;12018:6;-1:-1:-1;;;;;12009:35:0;;12037:6;12009:35;;;;8161:25:1;;8149:2;8134:18;;8116:76;12009:35:0;;;;;;;;11448:604;;;;:::o;12334:338::-;-1:-1:-1;;;;;12418:21:0;;12410:65;;;;-1:-1:-1;;;12410:65:0;;7857:2:1;12410:65:0;;;7839:21:1;7896:2;7876:18;;;7869:30;7935:33;7915:18;;;7908:61;7986:18;;12410:65:0;7829:181:1;12410:65:0;12566:6;12550:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12583:18:0;;:9;:18;;;;;;;;;;:28;;12605:6;;12583:9;:28;;12605:6;;12583:28;:::i;:::-;;;;-1:-1:-1;;12627:37:0;;8161:25:1;;;-1:-1:-1;;;;;12627:37:0;;;12644:1;;12627:37;;8149:2:1;8134:18;12627:37:0;;;;;;;12334:338;;:::o;13005:494::-;-1:-1:-1;;;;;13089:21:0;;13081:67;;;;-1:-1:-1;;;13081:67:0;;5884:2:1;13081:67:0;;;5866:21:1;5923:2;5903:18;;;5896:30;5962:34;5942:18;;;5935:62;-1:-1:-1;;;6013:18:1;;;6006:31;6054:19;;13081:67:0;5856:223:1;13081:67:0;-1:-1:-1;;;;;13248:18:0;;13223:22;13248:18;;;;;;;;;;;13285:24;;;;13277:71;;;;-1:-1:-1;;;13277:71:0;;3089:2:1;13277:71:0;;;3071:21:1;3128:2;3108:18;;;3101:30;3167:34;3147:18;;;3140:62;-1:-1:-1;;;3218:18:1;;;3211:32;3260:19;;13277:71:0;3061:224:1;13277:71:0;13380:23;13397:6;13380:14;:23;:::i;:::-;-1:-1:-1;;;;;13359:18:0;;:9;:18;;;;;;;;;;:44;;;;13414:12;:22;;13430:6;;13359:9;13414:22;;13430:6;;13414:22;:::i;:::-;;;;-1:-1:-1;;13454:37:0;;8161:25:1;;;13480:1:0;;-1:-1:-1;;;;;13454:37:0;;;;;8149:2:1;8134:18;13454:37:0;8116:76:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:1:o;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;1079:6;1087;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:190::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1413:6;1405;1398:22;1360:2;-1:-1:-1;1441:23:1;;1350:120;-1:-1:-1;1350:120:1:o;1875:603::-;1987:4;2016:2;2045;2034:9;2027:21;2077:6;2071:13;2120:6;2115:2;2104:9;2100:18;2093:34;2145:4;2158:140;2172:6;2169:1;2166:13;2158:140;;;2267:14;;;2263:23;;2257:30;2233:17;;;2252:2;2229:26;2222:66;2187:10;;2158:140;;;2316:6;2313:1;2310:13;2307:2;;;2386:4;2381:2;2372:6;2361:9;2357:22;2353:31;2346:45;2307:2;-1:-1:-1;2462:2:1;2441:15;-1:-1:-1;;2437:29:1;2422:45;;;;2469:2;2418:54;;1996:482;-1:-1:-1;;;1996:482:1:o;4916:356::-;5118:2;5100:21;;;5137:18;;;5130:30;5196:34;5191:2;5176:18;;5169:62;5263:2;5248:18;;5090:182::o;8386:128::-;8426:3;8457:1;8453:6;8450:1;8447:13;8444:2;;;8463:18;;:::i;:::-;-1:-1:-1;8499:9:1;;8434:80::o;8519:422::-;8608:1;8651:5;8608:1;8665:270;8686:7;8676:8;8673:21;8665:270;;;8745:4;8741:1;8737:6;8733:17;8727:4;8724:27;8721:2;;;8754:18;;:::i;:::-;8804:7;8794:8;8790:22;8787:2;;;8824:16;;;;8787:2;8903:22;;;;8863:15;;;;8665:270;;;8669:3;8583:358;;;;;:::o;8946:140::-;9004:5;9033:47;9074:4;9064:8;9060:19;9054:4;9140:5;9170:8;9160:2;;-1:-1:-1;9211:1:1;9225:5;;9160:2;9259:4;9249:2;;-1:-1:-1;9296:1:1;9310:5;;9249:2;9341:4;9359:1;9354:59;;;;9427:1;9422:130;;;;9334:218;;9354:59;9384:1;9375:10;;9398:5;;;9422:130;9459:3;9449:8;9446:17;9443:2;;;9466:18;;:::i;:::-;-1:-1:-1;;9522:1:1;9508:16;;9537:5;;9334:218;;9636:2;9626:8;9623:16;9617:3;9611:4;9608:13;9604:36;9598:2;9588:8;9585:16;9580:2;9574:4;9571:12;9567:35;9564:77;9561:2;;;-1:-1:-1;9673:19:1;;;9705:5;;9561:2;9752:34;9777:8;9771:4;9752:34;:::i;:::-;9822:6;9818:1;9814:6;9810:19;9801:7;9798:32;9795:2;;;9833:18;;:::i;:::-;9871:20;;9150:747;-1:-1:-1;;;9150:747:1:o;9902:168::-;9942:7;10008:1;10004;10000:6;9996:14;9993:1;9990:21;9985:1;9978:9;9971:17;9967:45;9964:2;;;10015:18;;:::i;:::-;-1:-1:-1;10055:9:1;;9954:116::o;10075:125::-;10115:4;10143:1;10140;10137:8;10134:2;;;10148:18;;:::i;:::-;-1:-1:-1;10185:9:1;;10124:76::o;10205:380::-;10284:1;10280:12;;;;10327;;;10348:2;;10402:4;10394:6;10390:17;10380:27;;10348:2;10455;10447:6;10444:14;10424:18;10421:38;10418:2;;;10501:10;10496:3;10492:20;10489:1;10482:31;10536:4;10533:1;10526:15;10564:4;10561:1;10554:15;10418:2;;10260:325;;;:::o;10590:127::-;10651:10;10646:3;10642:20;10639:1;10632:31;10682:4;10679:1;10672:15;10706:4;10703:1;10696:15

Swarm Source

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