BNB Price: $720.49 (+2.22%)
Gas: 1 GWei
 

Overview

Max Total Supply

100,000MORPH

Holders

12,071 (0.00%)

Total Transfers

-

Market

Price

$7.12 @ 0.009882 BNB

Onchain Market Cap

$712,000.00

Circulating Supply Market Cap

$299,604.00

Other Info

Token Contract (WITH 18 Decimals)

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

OVERVIEW

Fully Decentralized Protocol for Private Transactions on Binance Smart Chain.

Market

Volume (24H):$7,475.98
Market Capitalization:$299,604.00
Circulating Supply:27,211.00 MORPH
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MorphoseToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-10
*/

pragma solidity ^0.8.0;

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 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 Operator is Context, Ownable {
    address private _operator;

    event OperatorTransferred(
        address indexed previousOperator,
        address indexed newOperator
    );

    constructor() {
        _operator = _msgSender();
        emit OperatorTransferred(address(0), _operator);
    }

    function operator() public view returns (address) {
        return _operator;
    }

    modifier onlyOperator() {
        require(
            _operator == msg.sender,
            'operator: caller is not the operator'
        );
        _;
    }

    function isOperator() public view returns (bool) {
        return _msgSender() == _operator;
    }

    function transferOperator(address newOperator_) public onlyOwner {
        _transferOperator(newOperator_);
    }

    function _transferOperator(address newOperator_) internal {
        require(
            newOperator_ != address(0),
            'operator: zero address given for new operator'
        );
        emit OperatorTransferred(address(0), newOperator_);
        _operator = newOperator_;
    }
}


/**
 * @dev Interface of the BEP20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @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 BEP20 standard.
 */
interface IBEP20Metadata is IBEP20 {
    /**
     * @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 {IBEP20} 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 {BEP20PresetMinterPauser}.
 *
 * 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 BEP20 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 {IBEP20-approve}.
 */
contract BEP20 is Context, IBEP20, IBEP20Metadata {
    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 {BEP20} uses, unless this function is
     * overloaded;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IBEP20-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 {IBEP20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IBEP20-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 {IBEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20}.
     *
     * 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, "BEP20: 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 {IBEP20-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 {IBEP20-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, "BEP20: 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), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "BEP20: 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), "BEP20: 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), "BEP20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "BEP20: 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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: 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 {BEP20} that adds a cap to the supply of tokens.
 */
abstract contract BEP20Capped is BEP20 {
    uint256 immutable private _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor (uint256 cap_) {
        require(cap_ > 0, "BEP20Capped: cap is 0");
        _cap = cap_;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view virtual returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {BEP20-_mint}.
     */
    function _mint(address account, uint256 amount) internal virtual override {
        require(BEP20.totalSupply() + amount <= cap(), "BEP20Capped: cap exceeded");
        super._mint(account, amount);
    }
}


contract MorphoseToken is BEP20Capped, Operator {
    constructor() public BEP20('Morphose Token', 'MORPH') BEP20Capped(100000 * 10**18) { //100K max supply
    }

    function mint(address recipient_, uint256 amount_)
        public
        onlyOperator
        returns (bool)
    {
        uint256 balanceBefore = balanceOf(recipient_);
        _mint(recipient_, amount_);
        uint256 balanceAfter = balanceOf(recipient_);
        return balanceAfter >= balanceBefore;
    }
}

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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","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":[],"name":"cap","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":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","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":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5069152d02c7e14af68000006040518060400160405280600e81526020017f4d6f7270686f736520546f6b656e0000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4f5250480000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a192919062000298565b508060049080519060200190620000ba92919062000298565b5050506000811162000103576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000fa906200036f565b60405180910390fd5b80608081815250505060006200011e6200029060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001cd6200029060201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a362000430565b600033905090565b828054620002a690620003a2565b90600052602060002090601f016020900481019282620002ca576000855562000316565b82601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b5b80821115620003445760008160009055506001016200032a565b5090565b60006200035760158362000391565b9150620003648262000407565b602082019050919050565b600060208201905081810360008301526200038a8162000348565b9050919050565b600082825260208201905092915050565b60006002820490506001821680620003bb57607f821691505b60208210811415620003d257620003d1620003d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f42455032304361707065643a2063617020697320300000000000000000000000600082015250565b6080516120376200044c600039600061062801526120376000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80634456eda2116100ad57806395d89b411161007157806395d89b411461030e578063a457c2d71461032c578063a9059cbb1461035c578063dd62ed3e1461038c578063f2fde38b146103bc57610121565b80634456eda21461027a578063570ca7351461029857806370a08231146102b6578063715018a6146102e65780638da5cb5b146102f057610121565b806329605e77116100f457806329605e77146101c2578063313ce567146101de578063355274ea146101fc578063395093511461021a57806340c10f191461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d8565b60405161013b919061187b565b60405180910390f35b61015e600480360381019061015991906115cd565b61046a565b60405161016b9190611860565b60405180910390f35b61017c610488565b6040516101899190611a3d565b60405180910390f35b6101ac60048036038101906101a7919061157e565b610492565b6040516101b99190611860565b60405180910390f35b6101dc60048036038101906101d79190611519565b610593565b005b6101e661061b565b6040516101f39190611a58565b60405180910390f35b610204610624565b6040516102119190611a3d565b60405180910390f35b610234600480360381019061022f91906115cd565b61064c565b6040516102419190611860565b60405180910390f35b610264600480360381019061025f91906115cd565b6106f8565b6040516102719190611860565b60405180910390f35b6102826107bc565b60405161028f9190611860565b60405180910390f35b6102a061081b565b6040516102ad9190611845565b60405180910390f35b6102d060048036038101906102cb9190611519565b610845565b6040516102dd9190611a3d565b60405180910390f35b6102ee61088d565b005b6102f86109ca565b6040516103059190611845565b60405180910390f35b6103166109f4565b604051610323919061187b565b60405180910390f35b610346600480360381019061034191906115cd565b610a86565b6040516103539190611860565b60405180910390f35b610376600480360381019061037191906115cd565b610b7a565b6040516103839190611860565b60405180910390f35b6103a660048036038101906103a19190611542565b610b98565b6040516103b39190611a3d565b60405180910390f35b6103d660048036038101906103d19190611519565b610c1f565b005b6060600380546103e790611ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611ba1565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b600061047e610477610dcb565b8484610dd3565b6001905092915050565b6000600254905090565b600061049f848484610f9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104ea610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561056a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610561906118fd565b60405180910390fd5b61058785610576610dcb565b85846105829190611ae5565b610dd3565b60019150509392505050565b61059b610dcb565b73ffffffffffffffffffffffffffffffffffffffff166105b96109ca565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106069061195d565b60405180910390fd5b6106188161121d565b50565b60006012905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60006106ee610659610dcb565b848460016000610667610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e99190611a8f565b610dd3565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061197d565b60405180910390fd5b600061079584610845565b90506107a1848461132c565b60006107ac85610845565b9050818110159250505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ff610dcb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610895610dcb565b73ffffffffffffffffffffffffffffffffffffffff166108b36109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109009061195d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a0390611ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2f90611ba1565b8015610a7c5780601f10610a5157610100808354040283529160200191610a7c565b820191906000526020600020905b815481529060010190602001808311610a5f57829003601f168201915b5050505050905090565b60008060016000610a95610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906119dd565b60405180910390fd5b610b6f610b5d610dcb565b858584610b6a9190611ae5565b610dd3565b600191505092915050565b6000610b8e610b87610dcb565b8484610f9e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c27610dcb565b73ffffffffffffffffffffffffffffffffffffffff16610c456109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061195d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906118dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a906118bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611a1d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f919190611a3d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561100e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110059061189d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561107e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611075906119bd565b60405180910390fd5b611089838383611396565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561110f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111069061199d565b60405180910390fd5b818161111b9190611ae5565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111ab9190611a8f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161120f9190611a3d565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561128d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112849061191d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611334610624565b8161133d610488565b6113479190611a8f565b1115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906119fd565b60405180910390fd5b611392828261139b565b5050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061193d565b60405180910390fd5b61141760008383611396565b80600260008282546114299190611a8f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461147e9190611a8f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e39190611a3d565b60405180910390a35050565b6000813590506114fe81611fd3565b92915050565b60008135905061151381611fea565b92915050565b60006020828403121561152b57600080fd5b6000611539848285016114ef565b91505092915050565b6000806040838503121561155557600080fd5b6000611563858286016114ef565b9250506020611574858286016114ef565b9150509250929050565b60008060006060848603121561159357600080fd5b60006115a1868287016114ef565b93505060206115b2868287016114ef565b92505060406115c386828701611504565b9150509250925092565b600080604083850312156115e057600080fd5b60006115ee858286016114ef565b92505060206115ff85828601611504565b9150509250929050565b61161281611b19565b82525050565b61162181611b2b565b82525050565b600061163282611a73565b61163c8185611a7e565b935061164c818560208601611b6e565b61165581611c31565b840191505092915050565b600061166d602583611a7e565b915061167882611c42565b604082019050919050565b6000611690602483611a7e565b915061169b82611c91565b604082019050919050565b60006116b3602683611a7e565b91506116be82611ce0565b604082019050919050565b60006116d6602883611a7e565b91506116e182611d2f565b604082019050919050565b60006116f9602d83611a7e565b915061170482611d7e565b604082019050919050565b600061171c601f83611a7e565b915061172782611dcd565b602082019050919050565b600061173f602083611a7e565b915061174a82611df6565b602082019050919050565b6000611762602483611a7e565b915061176d82611e1f565b604082019050919050565b6000611785602683611a7e565b915061179082611e6e565b604082019050919050565b60006117a8602383611a7e565b91506117b382611ebd565b604082019050919050565b60006117cb602583611a7e565b91506117d682611f0c565b604082019050919050565b60006117ee601983611a7e565b91506117f982611f5b565b602082019050919050565b6000611811602283611a7e565b915061181c82611f84565b604082019050919050565b61183081611b57565b82525050565b61183f81611b61565b82525050565b600060208201905061185a6000830184611609565b92915050565b60006020820190506118756000830184611618565b92915050565b600060208201905081810360008301526118958184611627565b905092915050565b600060208201905081810360008301526118b681611660565b9050919050565b600060208201905081810360008301526118d681611683565b9050919050565b600060208201905081810360008301526118f6816116a6565b9050919050565b60006020820190508181036000830152611916816116c9565b9050919050565b60006020820190508181036000830152611936816116ec565b9050919050565b600060208201905081810360008301526119568161170f565b9050919050565b6000602082019050818103600083015261197681611732565b9050919050565b6000602082019050818103600083015261199681611755565b9050919050565b600060208201905081810360008301526119b681611778565b9050919050565b600060208201905081810360008301526119d68161179b565b9050919050565b600060208201905081810360008301526119f6816117be565b9050919050565b60006020820190508181036000830152611a16816117e1565b9050919050565b60006020820190508181036000830152611a3681611804565b9050919050565b6000602082019050611a526000830184611827565b92915050565b6000602082019050611a6d6000830184611836565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a9a82611b57565b9150611aa583611b57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ada57611ad9611bd3565b5b828201905092915050565b6000611af082611b57565b9150611afb83611b57565b925082821015611b0e57611b0d611bd3565b5b828203905092915050565b6000611b2482611b37565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b8c578082015181840152602081019050611b71565b83811115611b9b576000848401525b50505050565b60006002820490506001821680611bb957607f821691505b60208210811415611bcd57611bcc611c02565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260008201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f42455032304361707065643a2063617020657863656564656400000000000000600082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b611fdc81611b19565b8114611fe757600080fd5b50565b611ff381611b57565b8114611ffe57600080fd5b5056fea2646970667358221220ddde98ef1a97820e890cc8c49781ba020c012787bfa2298ebf86d4d06fbb011664736f6c63430008010033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80634456eda2116100ad57806395d89b411161007157806395d89b411461030e578063a457c2d71461032c578063a9059cbb1461035c578063dd62ed3e1461038c578063f2fde38b146103bc57610121565b80634456eda21461027a578063570ca7351461029857806370a08231146102b6578063715018a6146102e65780638da5cb5b146102f057610121565b806329605e77116100f457806329605e77146101c2578063313ce567146101de578063355274ea146101fc578063395093511461021a57806340c10f191461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d8565b60405161013b919061187b565b60405180910390f35b61015e600480360381019061015991906115cd565b61046a565b60405161016b9190611860565b60405180910390f35b61017c610488565b6040516101899190611a3d565b60405180910390f35b6101ac60048036038101906101a7919061157e565b610492565b6040516101b99190611860565b60405180910390f35b6101dc60048036038101906101d79190611519565b610593565b005b6101e661061b565b6040516101f39190611a58565b60405180910390f35b610204610624565b6040516102119190611a3d565b60405180910390f35b610234600480360381019061022f91906115cd565b61064c565b6040516102419190611860565b60405180910390f35b610264600480360381019061025f91906115cd565b6106f8565b6040516102719190611860565b60405180910390f35b6102826107bc565b60405161028f9190611860565b60405180910390f35b6102a061081b565b6040516102ad9190611845565b60405180910390f35b6102d060048036038101906102cb9190611519565b610845565b6040516102dd9190611a3d565b60405180910390f35b6102ee61088d565b005b6102f86109ca565b6040516103059190611845565b60405180910390f35b6103166109f4565b604051610323919061187b565b60405180910390f35b610346600480360381019061034191906115cd565b610a86565b6040516103539190611860565b60405180910390f35b610376600480360381019061037191906115cd565b610b7a565b6040516103839190611860565b60405180910390f35b6103a660048036038101906103a19190611542565b610b98565b6040516103b39190611a3d565b60405180910390f35b6103d660048036038101906103d19190611519565b610c1f565b005b6060600380546103e790611ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611ba1565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b600061047e610477610dcb565b8484610dd3565b6001905092915050565b6000600254905090565b600061049f848484610f9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104ea610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561056a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610561906118fd565b60405180910390fd5b61058785610576610dcb565b85846105829190611ae5565b610dd3565b60019150509392505050565b61059b610dcb565b73ffffffffffffffffffffffffffffffffffffffff166105b96109ca565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106069061195d565b60405180910390fd5b6106188161121d565b50565b60006012905090565b60007f00000000000000000000000000000000000000000000152d02c7e14af6800000905090565b60006106ee610659610dcb565b848460016000610667610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e99190611a8f565b610dd3565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061197d565b60405180910390fd5b600061079584610845565b90506107a1848461132c565b60006107ac85610845565b9050818110159250505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ff610dcb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610895610dcb565b73ffffffffffffffffffffffffffffffffffffffff166108b36109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109009061195d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a0390611ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2f90611ba1565b8015610a7c5780601f10610a5157610100808354040283529160200191610a7c565b820191906000526020600020905b815481529060010190602001808311610a5f57829003601f168201915b5050505050905090565b60008060016000610a95610dcb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906119dd565b60405180910390fd5b610b6f610b5d610dcb565b858584610b6a9190611ae5565b610dd3565b600191505092915050565b6000610b8e610b87610dcb565b8484610f9e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c27610dcb565b73ffffffffffffffffffffffffffffffffffffffff16610c456109ca565b73ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061195d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906118dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a906118bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611a1d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f919190611a3d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561100e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110059061189d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561107e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611075906119bd565b60405180910390fd5b611089838383611396565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561110f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111069061199d565b60405180910390fd5b818161111b9190611ae5565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111ab9190611a8f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161120f9190611a3d565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561128d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112849061191d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611334610624565b8161133d610488565b6113479190611a8f565b1115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906119fd565b60405180910390fd5b611392828261139b565b5050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061193d565b60405180910390fd5b61141760008383611396565b80600260008282546114299190611a8f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461147e9190611a8f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e39190611a3d565b60405180910390a35050565b6000813590506114fe81611fd3565b92915050565b60008135905061151381611fea565b92915050565b60006020828403121561152b57600080fd5b6000611539848285016114ef565b91505092915050565b6000806040838503121561155557600080fd5b6000611563858286016114ef565b9250506020611574858286016114ef565b9150509250929050565b60008060006060848603121561159357600080fd5b60006115a1868287016114ef565b93505060206115b2868287016114ef565b92505060406115c386828701611504565b9150509250925092565b600080604083850312156115e057600080fd5b60006115ee858286016114ef565b92505060206115ff85828601611504565b9150509250929050565b61161281611b19565b82525050565b61162181611b2b565b82525050565b600061163282611a73565b61163c8185611a7e565b935061164c818560208601611b6e565b61165581611c31565b840191505092915050565b600061166d602583611a7e565b915061167882611c42565b604082019050919050565b6000611690602483611a7e565b915061169b82611c91565b604082019050919050565b60006116b3602683611a7e565b91506116be82611ce0565b604082019050919050565b60006116d6602883611a7e565b91506116e182611d2f565b604082019050919050565b60006116f9602d83611a7e565b915061170482611d7e565b604082019050919050565b600061171c601f83611a7e565b915061172782611dcd565b602082019050919050565b600061173f602083611a7e565b915061174a82611df6565b602082019050919050565b6000611762602483611a7e565b915061176d82611e1f565b604082019050919050565b6000611785602683611a7e565b915061179082611e6e565b604082019050919050565b60006117a8602383611a7e565b91506117b382611ebd565b604082019050919050565b60006117cb602583611a7e565b91506117d682611f0c565b604082019050919050565b60006117ee601983611a7e565b91506117f982611f5b565b602082019050919050565b6000611811602283611a7e565b915061181c82611f84565b604082019050919050565b61183081611b57565b82525050565b61183f81611b61565b82525050565b600060208201905061185a6000830184611609565b92915050565b60006020820190506118756000830184611618565b92915050565b600060208201905081810360008301526118958184611627565b905092915050565b600060208201905081810360008301526118b681611660565b9050919050565b600060208201905081810360008301526118d681611683565b9050919050565b600060208201905081810360008301526118f6816116a6565b9050919050565b60006020820190508181036000830152611916816116c9565b9050919050565b60006020820190508181036000830152611936816116ec565b9050919050565b600060208201905081810360008301526119568161170f565b9050919050565b6000602082019050818103600083015261197681611732565b9050919050565b6000602082019050818103600083015261199681611755565b9050919050565b600060208201905081810360008301526119b681611778565b9050919050565b600060208201905081810360008301526119d68161179b565b9050919050565b600060208201905081810360008301526119f6816117be565b9050919050565b60006020820190508181036000830152611a16816117e1565b9050919050565b60006020820190508181036000830152611a3681611804565b9050919050565b6000602082019050611a526000830184611827565b92915050565b6000602082019050611a6d6000830184611836565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a9a82611b57565b9150611aa583611b57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ada57611ad9611bd3565b5b828201905092915050565b6000611af082611b57565b9150611afb83611b57565b925082821015611b0e57611b0d611bd3565b5b828203905092915050565b6000611b2482611b37565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b8c578082015181840152602081019050611b71565b83811115611b9b576000848401525b50505050565b60006002820490506001821680611bb957607f821691505b60208210811415611bcd57611bcc611c02565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260008201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f42455032304361707065643a2063617020657863656564656400000000000000600082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b611fdc81611b19565b8114611fe757600080fd5b50565b611ff381611b57565b8114611ffe57600080fd5b5056fea2646970667358221220ddde98ef1a97820e890cc8c49781ba020c012787bfa2298ebf86d4d06fbb011664736f6c63430008010033

Deployed Bytecode Sourcemap

18569:496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8943:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10063:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11761:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3316:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9905:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18212:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12592:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18741:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3208:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2943:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10234:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2065:148;;;:::i;:::-;;1414:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9162:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13310:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10574:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10812:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2368:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8943:100;8997:13;9030:5;9023:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8943:100;:::o;11110:169::-;11193:4;11210:39;11219:12;:10;:12::i;:::-;11233:7;11242:6;11210:8;:39::i;:::-;11267:4;11260:11;;11110:169;;;;:::o;10063:108::-;10124:7;10151:12;;10144:19;;10063:108;:::o;11761:422::-;11867:4;11884:36;11894:6;11902:9;11913:6;11884:9;:36::i;:::-;11933:24;11960:11;:19;11972:6;11960:19;;;;;;;;;;;;;;;:33;11980:12;:10;:12::i;:::-;11960:33;;;;;;;;;;;;;;;;11933:60;;12032:6;12012:16;:26;;12004:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12094:57;12103:6;12111:12;:10;:12::i;:::-;12144:6;12125:16;:25;;;;:::i;:::-;12094:8;:57::i;:::-;12171:4;12164:11;;;11761:422;;;;;:::o;3316:115::-;1645:12;:10;:12::i;:::-;1634:23;;:7;:5;:7::i;:::-;:23;;;1626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3392:31:::1;3410:12;3392:17;:31::i;:::-;3316:115:::0;:::o;9905:93::-;9963:5;9988:2;9981:9;;9905:93;:::o;18212:83::-;18256:7;18283:4;18276:11;;18212:83;:::o;12592:215::-;12680:4;12697:80;12706:12;:10;:12::i;:::-;12720:7;12766:10;12729:11;:25;12741:12;:10;:12::i;:::-;12729:25;;;;;;;;;;;;;;;:34;12755:7;12729:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12697:8;:80::i;:::-;12795:4;12788:11;;12592:215;;;;:::o;18741:321::-;18848:4;3106:10;3093:23;;:9;;;;;;;;;;;:23;;;3071:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;18870:21:::1;18894;18904:10;18894:9;:21::i;:::-;18870:45;;18926:26;18932:10;18944:7;18926:5;:26::i;:::-;18963:20;18986:21;18996:10;18986:9;:21::i;:::-;18963:44;;19041:13;19025:12;:29;;19018:36;;;;18741:321:::0;;;;:::o;3208:100::-;3251:4;3291:9;;;;;;;;;;;3275:25;;:12;:10;:12::i;:::-;:25;;;3268:32;;3208:100;:::o;2943:85::-;2984:7;3011:9;;;;;;;;;;;3004:16;;2943:85;:::o;10234:127::-;10308:7;10335:9;:18;10345:7;10335:18;;;;;;;;;;;;;;;;10328:25;;10234:127;;;:::o;2065:148::-;1645:12;:10;:12::i;:::-;1634:23;;:7;:5;:7::i;:::-;:23;;;1626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2172:1:::1;2135:40;;2156:6;;;;;;;;;;;2135:40;;;;;;;;;;;;2203:1;2186:6;;:19;;;;;;;;;;;;;;;;;;2065:148::o:0;1414:87::-;1460:7;1487:6;;;;;;;;;;;1480:13;;1414:87;:::o;9162:104::-;9218:13;9251:7;9244:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9162:104;:::o;13310:377::-;13403:4;13420:24;13447:11;:25;13459:12;:10;:12::i;:::-;13447:25;;;;;;;;;;;;;;;:34;13473:7;13447:34;;;;;;;;;;;;;;;;13420:61;;13520:15;13500:16;:35;;13492:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13588:67;13597:12;:10;:12::i;:::-;13611:7;13639:15;13620:16;:34;;;;:::i;:::-;13588:8;:67::i;:::-;13675:4;13668:11;;;13310:377;;;;:::o;10574:175::-;10660:4;10677:42;10687:12;:10;:12::i;:::-;10701:9;10712:6;10677:9;:42::i;:::-;10737:4;10730:11;;10574:175;;;;:::o;10812:151::-;10901:7;10928:11;:18;10940:5;10928:18;;;;;;;;;;;;;;;:27;10947:7;10928:27;;;;;;;;;;;;;;;;10921:34;;10812:151;;;;:::o;2368:244::-;1645:12;:10;:12::i;:::-;1634:23;;:7;:5;:7::i;:::-;:23;;;1626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:1:::1;2457:22;;:8;:22;;;;2449:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2567:8;2538:38;;2559:6;;;;;;;;;;;2538:38;;;;;;;;;;;;2596:8;2587:6;;:17;;;;;;;;;;;;;;;;;;2368:244:::0;:::o;60:98::-;113:7;140:10;133:17;;60:98;:::o;16666:346::-;16785:1;16768:19;;:5;:19;;;;16760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16866:1;16847:21;;:7;:21;;;;16839:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16950:6;16920:11;:18;16932:5;16920:18;;;;;;;;;;;;;;;:27;16939:7;16920:27;;;;;;;;;;;;;;;:36;;;;16988:7;16972:32;;16981:5;16972:32;;;16997:6;16972:32;;;;;;:::i;:::-;;;;;;;;16666:346;;;:::o;14177:604::-;14301:1;14283:20;;:6;:20;;;;14275:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14385:1;14364:23;;:9;:23;;;;14356:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14440:47;14461:6;14469:9;14480:6;14440:20;:47::i;:::-;14500:21;14524:9;:17;14534:6;14524:17;;;;;;;;;;;;;;;;14500:41;;14577:6;14560:13;:23;;14552:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14673:6;14657:13;:22;;;;:::i;:::-;14637:9;:17;14647:6;14637:17;;;;;;;;;;;;;;;:42;;;;14714:6;14690:9;:20;14700:9;14690:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14755:9;14738:35;;14747:6;14738:35;;;14766:6;14738:35;;;;;;:::i;:::-;;;;;;;;14177:604;;;;:::o;3439:294::-;3554:1;3530:26;;:12;:26;;;;3508:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;3677:12;3645:45;;3673:1;3645:45;;;;;;;;;;;;3713:12;3701:9;;:24;;;;;;;;;;;;;;;;;;3439:294;:::o;18353:207::-;18478:5;:3;:5::i;:::-;18468:6;18446:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;18438:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18524:28;18536:7;18545:6;18524:11;:28::i;:::-;18353:207;;:::o;17615:92::-;;;;:::o;15063:338::-;15166:1;15147:21;;:7;:21;;;;15139:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15217:49;15246:1;15250:7;15259:6;15217:20;:49::i;:::-;15295:6;15279:12;;:22;;;;;;;:::i;:::-;;;;;;;;15334:6;15312:9;:18;15322:7;15312:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15377:7;15356:37;;15373:1;15356:37;;;15386:6;15356:37;;;;;;:::i;:::-;;;;;;;;15063:338;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:366::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2797:93;2886:3;2797:93;:::i;:::-;2915:2;2910:3;2906:12;2899:19;;2704:220;;;:::o;2930:366::-;;3093:67;3157:2;3152:3;3093:67;:::i;:::-;3086:74;;3169:93;3258:3;3169:93;:::i;:::-;3287:2;3282:3;3278:12;3271:19;;3076:220;;;:::o;3302:366::-;;3465:67;3529:2;3524:3;3465:67;:::i;:::-;3458:74;;3541:93;3630:3;3541:93;:::i;:::-;3659:2;3654:3;3650:12;3643:19;;3448:220;;;:::o;3674:366::-;;3837:67;3901:2;3896:3;3837:67;:::i;:::-;3830:74;;3913:93;4002:3;3913:93;:::i;:::-;4031:2;4026:3;4022:12;4015:19;;3820:220;;;:::o;4046:366::-;;4209:67;4273:2;4268:3;4209:67;:::i;:::-;4202:74;;4285:93;4374:3;4285:93;:::i;:::-;4403:2;4398:3;4394:12;4387:19;;4192:220;;;:::o;4418:366::-;;4581:67;4645:2;4640:3;4581:67;:::i;:::-;4574:74;;4657:93;4746:3;4657:93;:::i;:::-;4775:2;4770:3;4766:12;4759:19;;4564:220;;;:::o;4790:366::-;;4953:67;5017:2;5012:3;4953:67;:::i;:::-;4946:74;;5029:93;5118:3;5029:93;:::i;:::-;5147:2;5142:3;5138:12;5131:19;;4936:220;;;:::o;5162:366::-;;5325:67;5389:2;5384:3;5325:67;:::i;:::-;5318:74;;5401:93;5490:3;5401:93;:::i;:::-;5519:2;5514:3;5510:12;5503:19;;5308:220;;;:::o;5534:366::-;;5697:67;5761:2;5756:3;5697:67;:::i;:::-;5690:74;;5773:93;5862:3;5773:93;:::i;:::-;5891:2;5886:3;5882:12;5875:19;;5680:220;;;:::o;5906:366::-;;6069:67;6133:2;6128:3;6069:67;:::i;:::-;6062:74;;6145:93;6234:3;6145:93;:::i;:::-;6263:2;6258:3;6254:12;6247:19;;6052:220;;;:::o;6278:366::-;;6441:67;6505:2;6500:3;6441:67;:::i;:::-;6434:74;;6517:93;6606:3;6517:93;:::i;:::-;6635:2;6630:3;6626:12;6619:19;;6424:220;;;:::o;6650:366::-;;6813:67;6877:2;6872:3;6813:67;:::i;:::-;6806:74;;6889:93;6978:3;6889:93;:::i;:::-;7007:2;7002:3;6998:12;6991:19;;6796:220;;;:::o;7022:366::-;;7185:67;7249:2;7244:3;7185:67;:::i;:::-;7178:74;;7261:93;7350:3;7261:93;:::i;:::-;7379:2;7374:3;7370:12;7363:19;;7168:220;;;:::o;7394:118::-;7481:24;7499:5;7481:24;:::i;:::-;7476:3;7469:37;7459:53;;:::o;7518:112::-;7601:22;7617:5;7601:22;:::i;:::-;7596:3;7589:35;7579:51;;:::o;7636:222::-;;7767:2;7756:9;7752:18;7744:26;;7780:71;7848:1;7837:9;7833:17;7824:6;7780:71;:::i;:::-;7734:124;;;;:::o;7864:210::-;;7989:2;7978:9;7974:18;7966:26;;8002:65;8064:1;8053:9;8049:17;8040:6;8002:65;:::i;:::-;7956:118;;;;:::o;8080:313::-;;8231:2;8220:9;8216:18;8208:26;;8280:9;8274:4;8270:20;8266:1;8255:9;8251:17;8244:47;8308:78;8381:4;8372:6;8308:78;:::i;:::-;8300:86;;8198:195;;;;:::o;8399:419::-;;8603:2;8592:9;8588:18;8580:26;;8652:9;8646:4;8642:20;8638:1;8627:9;8623:17;8616:47;8680:131;8806:4;8680:131;:::i;:::-;8672:139;;8570:248;;;:::o;8824:419::-;;9028:2;9017:9;9013:18;9005:26;;9077:9;9071:4;9067:20;9063:1;9052:9;9048:17;9041:47;9105:131;9231:4;9105:131;:::i;:::-;9097:139;;8995:248;;;:::o;9249:419::-;;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9420:248;;;:::o;9674:419::-;;9878:2;9867:9;9863:18;9855:26;;9927:9;9921:4;9917:20;9913:1;9902:9;9898:17;9891:47;9955:131;10081:4;9955:131;:::i;:::-;9947:139;;9845:248;;;:::o;10099:419::-;;10303:2;10292:9;10288:18;10280:26;;10352:9;10346:4;10342:20;10338:1;10327:9;10323:17;10316:47;10380:131;10506:4;10380:131;:::i;:::-;10372:139;;10270:248;;;:::o;10524:419::-;;10728:2;10717:9;10713:18;10705:26;;10777:9;10771:4;10767:20;10763:1;10752:9;10748:17;10741:47;10805:131;10931:4;10805:131;:::i;:::-;10797:139;;10695:248;;;:::o;10949:419::-;;11153:2;11142:9;11138:18;11130:26;;11202:9;11196:4;11192:20;11188:1;11177:9;11173:17;11166:47;11230:131;11356:4;11230:131;:::i;:::-;11222:139;;11120:248;;;:::o;11374:419::-;;11578:2;11567:9;11563:18;11555:26;;11627:9;11621:4;11617:20;11613:1;11602:9;11598:17;11591:47;11655:131;11781:4;11655:131;:::i;:::-;11647:139;;11545:248;;;:::o;11799:419::-;;12003:2;11992:9;11988:18;11980:26;;12052:9;12046:4;12042:20;12038:1;12027:9;12023:17;12016:47;12080:131;12206:4;12080:131;:::i;:::-;12072:139;;11970:248;;;:::o;12224:419::-;;12428:2;12417:9;12413:18;12405:26;;12477:9;12471:4;12467:20;12463:1;12452:9;12448:17;12441:47;12505:131;12631:4;12505:131;:::i;:::-;12497:139;;12395:248;;;:::o;12649:419::-;;12853:2;12842:9;12838:18;12830:26;;12902:9;12896:4;12892:20;12888:1;12877:9;12873:17;12866:47;12930:131;13056:4;12930:131;:::i;:::-;12922:139;;12820:248;;;:::o;13074:419::-;;13278:2;13267:9;13263:18;13255:26;;13327:9;13321:4;13317:20;13313:1;13302:9;13298:17;13291:47;13355:131;13481:4;13355:131;:::i;:::-;13347:139;;13245:248;;;:::o;13499:419::-;;13703:2;13692:9;13688:18;13680:26;;13752:9;13746:4;13742:20;13738:1;13727:9;13723:17;13716:47;13780:131;13906:4;13780:131;:::i;:::-;13772:139;;13670:248;;;:::o;13924:222::-;;14055:2;14044:9;14040:18;14032:26;;14068:71;14136:1;14125:9;14121:17;14112:6;14068:71;:::i;:::-;14022:124;;;;:::o;14152:214::-;;14279:2;14268:9;14264:18;14256:26;;14292:67;14356:1;14345:9;14341:17;14332:6;14292:67;:::i;:::-;14246:120;;;;:::o;14372:99::-;;14458:5;14452:12;14442:22;;14431:40;;;:::o;14477:169::-;;14595:6;14590:3;14583:19;14635:4;14630:3;14626:14;14611:29;;14573:73;;;;:::o;14652:305::-;;14711:20;14729:1;14711:20;:::i;:::-;14706:25;;14745:20;14763:1;14745:20;:::i;:::-;14740:25;;14899:1;14831:66;14827:74;14824:1;14821:81;14818:2;;;14905:18;;:::i;:::-;14818:2;14949:1;14946;14942:9;14935:16;;14696:261;;;;:::o;14963:191::-;;15023:20;15041:1;15023:20;:::i;:::-;15018:25;;15057:20;15075:1;15057:20;:::i;:::-;15052:25;;15096:1;15093;15090:8;15087:2;;;15101:18;;:::i;:::-;15087:2;15146:1;15143;15139:9;15131:17;;15008:146;;;;:::o;15160:96::-;;15226:24;15244:5;15226:24;:::i;:::-;15215:35;;15205:51;;;:::o;15262:90::-;;15339:5;15332:13;15325:21;15314:32;;15304:48;;;:::o;15358:126::-;;15435:42;15428:5;15424:54;15413:65;;15403:81;;;:::o;15490:77::-;;15556:5;15545:16;;15535:32;;;:::o;15573:86::-;;15648:4;15641:5;15637:16;15626:27;;15616:43;;;:::o;15665:307::-;15733:1;15743:113;15757:6;15754:1;15751:13;15743:113;;;15842:1;15837:3;15833:11;15827:18;15823:1;15818:3;15814:11;15807:39;15779:2;15776:1;15772:10;15767:15;;15743:113;;;15874:6;15871:1;15868:13;15865:2;;;15954:1;15945:6;15940:3;15936:16;15929:27;15865:2;15714:258;;;;:::o;15978:320::-;;16059:1;16053:4;16049:12;16039:22;;16106:1;16100:4;16096:12;16127:18;16117:2;;16183:4;16175:6;16171:17;16161:27;;16117:2;16245;16237:6;16234:14;16214:18;16211:38;16208:2;;;16264:18;;:::i;:::-;16208:2;16029:269;;;;:::o;16304:180::-;16352:77;16349:1;16342:88;16449:4;16446:1;16439:15;16473:4;16470:1;16463:15;16490:180;16538:77;16535:1;16528:88;16635:4;16632:1;16625:15;16659:4;16656:1;16649:15;16676:102;;16768:2;16764:7;16759:2;16752:5;16748:14;16744:28;16734:38;;16724:54;;;:::o;16784:224::-;16924:34;16920:1;16912:6;16908:14;16901:58;16993:7;16988:2;16980:6;16976:15;16969:32;16890:118;:::o;17014:223::-;17154:34;17150:1;17142:6;17138:14;17131:58;17223:6;17218:2;17210:6;17206:15;17199:31;17120:117;:::o;17243:225::-;17383:34;17379:1;17371:6;17367:14;17360:58;17452:8;17447:2;17439:6;17435:15;17428:33;17349:119;:::o;17474:227::-;17614:34;17610:1;17602:6;17598:14;17591:58;17683:10;17678:2;17670:6;17666:15;17659:35;17580:121;:::o;17707:232::-;17847:34;17843:1;17835:6;17831:14;17824:58;17916:15;17911:2;17903:6;17899:15;17892:40;17813:126;:::o;17945:181::-;18085:33;18081:1;18073:6;18069:14;18062:57;18051:75;:::o;18132:182::-;18272:34;18268:1;18260:6;18256:14;18249:58;18238:76;:::o;18320:223::-;18460:34;18456:1;18448:6;18444:14;18437:58;18529:6;18524:2;18516:6;18512:15;18505:31;18426:117;:::o;18549:225::-;18689:34;18685:1;18677:6;18673:14;18666:58;18758:8;18753:2;18745:6;18741:15;18734:33;18655:119;:::o;18780:222::-;18920:34;18916:1;18908:6;18904:14;18897:58;18989:5;18984:2;18976:6;18972:15;18965:30;18886:116;:::o;19008:224::-;19148:34;19144:1;19136:6;19132:14;19125:58;19217:7;19212:2;19204:6;19200:15;19193:32;19114:118;:::o;19238:175::-;19378:27;19374:1;19366:6;19362:14;19355:51;19344:69;:::o;19419:221::-;19559:34;19555:1;19547:6;19543:14;19536:58;19628:4;19623:2;19615:6;19611:15;19604:29;19525:115;:::o;19646:122::-;19719:24;19737:5;19719:24;:::i;:::-;19712:5;19709:35;19699:2;;19758:1;19755;19748:12;19699:2;19689:79;:::o;19774:122::-;19847:24;19865:5;19847:24;:::i;:::-;19840:5;19837:35;19827:2;;19886:1;19883;19876:12;19827:2;19817:79;:::o

Swarm Source

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