ETH Price: $2,970.02 (+0.68%)
Gas: 6 Gwei

Token

Me Gusta (GUSTA)
 

Overview

Max Total Supply

7,736,107,944,570 GUSTA

Holders

789

Total Transfers

-

Market

Onchain 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
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MeGusta

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol



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) {
        return msg.data;
    }
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol



pragma solidity ^0.8.0;


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

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

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

    /**
     * @dev 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 {
        _transferOwnership(address(0));
    }

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

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

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;

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

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/IERC20Metadata.sol



pragma solidity ^0.8.0;


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

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol



pragma solidity ^0.8.0;




/**
 * @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 Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

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

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

// File: megustastoken.sol




contract MeGusta is Ownable, ERC20 {
    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;
    mapping(address => bool) public whitelists;

    constructor(uint256 _totalSupply) ERC20("Me Gusta", "GUSTA") {
        _mint(msg.sender, _totalSupply);
    }

    function blacklist(address[] calldata _addresses, bool _isBlacklisting) external onlyOwner {
        for (uint i; i < _addresses.length; i++) {
            blacklists[_addresses[i]] = _isBlacklisting;
        }
    }

    function whitelist(address[] calldata _addresses, bool _isWhitelisting) external onlyOwner {
        for (uint i; i < _addresses.length; i++) {
            whitelists[_addresses[i]] = _isWhitelisting;
        }
    }

    function setRule(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
        limited = _limited;
        uniswapV2Pair = _uniswapV2Pair;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (!whitelists[from] && !whitelists[to]) {
            if (limited && from == uniswapV2Pair) {
                require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
            }
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","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":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_minHoldingAmount","type":"uint256"}],"name":"setRule","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_isWhitelisting","type":"bool"}],"name":"whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620034d4380380620034d48339818101604052810190620000379190620007c6565b6040518060400160405280600881526020017f4d652047757374610000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4755535441000000000000000000000000000000000000000000000000000000815250620000c3620000b76200010260201b60201c565b6200010a60201b60201c565b8160049081620000d4919062000a68565b508060059081620000e6919062000a68565b505050620000fb3382620001ce60201b60201c565b5062000dc0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002379062000bb0565b60405180910390fd5b62000254600083836200034760201b60201c565b806003600082825462000268919062000c01565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002c0919062000c01565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000327919062000c4d565b60405180910390a362000343600083836200070f60201b60201c565b5050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620003ec5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6200042e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004259062000cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200055157620004956200071460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620005095750620004da6200071460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6200054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005429062000d2c565b60405180910390fd5b6200070a565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620005f65750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156200070957600660009054906101000a900460ff168015620006665750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000708576007548162000686846200073d60201b6200099d1760201c565b62000692919062000c01565b11158015620006c5575060085481620006b6846200073d60201b6200099d1760201c565b620006c2919062000c01565b10155b62000707576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006fe9062000d9e565b60405180910390fd5b5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080fd5b6000819050919050565b620007a0816200078b565b8114620007ac57600080fd5b50565b600081519050620007c08162000795565b92915050565b600060208284031215620007df57620007de62000786565b5b6000620007ef84828501620007af565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087a57607f821691505b60208210810362000890576200088f62000832565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008fa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008bb565b620009068683620008bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000949620009436200093d846200078b565b6200091e565b6200078b565b9050919050565b6000819050919050565b620009658362000928565b6200097d620009748262000950565b848454620008c8565b825550505050565b600090565b6200099462000985565b620009a18184846200095a565b505050565b5b81811015620009c957620009bd6000826200098a565b600181019050620009a7565b5050565b601f82111562000a1857620009e28162000896565b620009ed84620008ab565b81016020851015620009fd578190505b62000a1562000a0c85620008ab565b830182620009a6565b50505b505050565b600082821c905092915050565b600062000a3d6000198460080262000a1d565b1980831691505092915050565b600062000a58838362000a2a565b9150826002028217905092915050565b62000a7382620007f8565b67ffffffffffffffff81111562000a8f5762000a8e62000803565b5b62000a9b825462000861565b62000aa8828285620009cd565b600060209050601f83116001811462000ae0576000841562000acb578287015190505b62000ad7858262000a4a565b86555062000b47565b601f19841662000af08662000896565b60005b8281101562000b1a5784890151825560018201915060208501945060208101905062000af3565b8683101562000b3a578489015162000b36601f89168262000a2a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b98601f8362000b4f565b915062000ba58262000b60565b602082019050919050565b6000602082019050818103600083015262000bcb8162000b89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c0e826200078b565b915062000c1b836200078b565b925082820190508082111562000c365762000c3562000bd2565b5b92915050565b62000c47816200078b565b82525050565b600060208201905062000c64600083018462000c3c565b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600062000ca2600b8362000b4f565b915062000caf8262000c6a565b602082019050919050565b6000602082019050818103600083015262000cd58162000c93565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000d1460168362000b4f565b915062000d218262000cdc565b602082019050919050565b6000602082019050818103600083015262000d478162000d05565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b600062000d8660068362000b4f565b915062000d938262000d4e565b602082019050919050565b6000602082019050818103600083015262000db98162000d77565b9050919050565b6127048062000dd06000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806349bd5a5e116100c357806395d89b411161007c57806395d89b41146103cb578063a457c2d7146103e9578063a9059cbb14610419578063c997eb8d14610449578063dd62ed3e14610465578063f2fde38b1461049557610158565b806349bd5a5e1461031957806370a0823114610337578063715018a614610367578063860a32ec1461037157806389f9a1d31461038f5780638da5cb5b146103ad57610158565b80631e7be210116101155780631e7be2101461023357806323b872dd14610263578063313ce5671461029357806339509351146102b15780633aa633aa146102e157806342966c68146102fd57610158565b806301b38af51461015d57806306fdde0314610179578063095ea7b31461019757806316c02129146101c757806318160ddd146101f75780631ab99e1214610215575b600080fd5b61017760048036038101906101729190611a0d565b6104b1565b005b6101816105d2565b60405161018e9190611afd565b60405180910390f35b6101b160048036038101906101ac9190611bb3565b610664565b6040516101be9190611c02565b60405180910390f35b6101e160048036038101906101dc9190611c1d565b610682565b6040516101ee9190611c02565b60405180910390f35b6101ff6106a2565b60405161020c9190611c59565b60405180910390f35b61021d6106ac565b60405161022a9190611c59565b60405180910390f35b61024d60048036038101906102489190611c1d565b6106b2565b60405161025a9190611c02565b60405180910390f35b61027d60048036038101906102789190611c74565b6106d2565b60405161028a9190611c02565b60405180910390f35b61029b6107ca565b6040516102a89190611ce3565b60405180910390f35b6102cb60048036038101906102c69190611bb3565b6107d3565b6040516102d89190611c02565b60405180910390f35b6102fb60048036038101906102f69190611cfe565b61087f565b005b61031760048036038101906103129190611d65565b61096a565b005b610321610977565b60405161032e9190611da1565b60405180910390f35b610351600480360381019061034c9190611c1d565b61099d565b60405161035e9190611c59565b60405180910390f35b61036f6109e6565b005b610379610a6e565b6040516103869190611c02565b60405180910390f35b610397610a81565b6040516103a49190611c59565b60405180910390f35b6103b5610a87565b6040516103c29190611da1565b60405180910390f35b6103d3610ab0565b6040516103e09190611afd565b60405180910390f35b61040360048036038101906103fe9190611bb3565b610b42565b6040516104109190611c02565b60405180910390f35b610433600480360381019061042e9190611bb3565b610c2d565b6040516104409190611c02565b60405180910390f35b610463600480360381019061045e9190611a0d565b610c4b565b005b61047f600480360381019061047a9190611dbc565b610d6c565b60405161048c9190611c59565b60405180910390f35b6104af60048036038101906104aa9190611c1d565b610df3565b005b6104b9610eea565b73ffffffffffffffffffffffffffffffffffffffff166104d7610a87565b73ffffffffffffffffffffffffffffffffffffffff161461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052490611e48565b60405180910390fd5b60005b838390508110156105cc5781600b600086868581811061055357610552611e68565b5b90506020020160208101906105689190611c1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806105c490611ec6565b915050610530565b50505050565b6060600480546105e190611f3d565b80601f016020809104026020016040519081016040528092919081815260200182805461060d90611f3d565b801561065a5780601f1061062f5761010080835404028352916020019161065a565b820191906000526020600020905b81548152906001019060200180831161063d57829003601f168201915b5050505050905090565b6000610678610671610eea565b8484610ef2565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60085481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60006106df8484846110bb565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072a610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190611fe0565b60405180910390fd5b6107be856107b6610eea565b858403610ef2565b60019150509392505050565b60006012905090565b60006108756107e0610eea565b8484600260006107ee610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108709190612000565b610ef2565b6001905092915050565b610887610eea565b73ffffffffffffffffffffffffffffffffffffffff166108a5610a87565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290611e48565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b610974338261133d565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ee610eea565b73ffffffffffffffffffffffffffffffffffffffff16610a0c610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990611e48565b60405180910390fd5b610a6c6000611515565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610abf90611f3d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aeb90611f3d565b8015610b385780601f10610b0d57610100808354040283529160200191610b38565b820191906000526020600020905b815481529060010190602001808311610b1b57829003601f168201915b5050505050905090565b60008060026000610b51610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c05906120a6565b60405180910390fd5b610c22610c19610eea565b85858403610ef2565b600191505092915050565b6000610c41610c3a610eea565b84846110bb565b6001905092915050565b610c53610eea565b73ffffffffffffffffffffffffffffffffffffffff16610c71610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90611e48565b60405180910390fd5b60005b83839050811015610d665781600a6000868685818110610ced57610cec611e68565b5b9050602002016020810190610d029190611c1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d5e90611ec6565b915050610cca565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dfb610eea565b73ffffffffffffffffffffffffffffffffffffffff16610e19610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690611e48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612138565b60405180910390fd5b610ee781611515565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f58906121ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061225c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110ae9190611c59565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906122ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612380565b60405180910390fd5b6111a48383836115d9565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612412565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112c09190612000565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113249190611c59565b60405180910390a3611337848484611961565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906124a4565b60405180910390fd5b6113b8826000836115d9565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143690612536565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546114979190612556565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114fc9190611c59565b60405180910390a361151083600084611961565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561167d5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906125d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117c95761171a610a87565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806117855750611756610a87565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90612642565b60405180910390fd5b61195c565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561186d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561195b57600660009054906101000a900460ff1680156118db5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561195a57600754816118ed8461099d565b6118f79190612000565b1115801561191a57506008548161190d8461099d565b6119179190612000565b10155b611959576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611950906126ae565b60405180910390fd5b5b5b5b505050565b505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261199557611994611970565b5b8235905067ffffffffffffffff8111156119b2576119b1611975565b5b6020830191508360208202830111156119ce576119cd61197a565b5b9250929050565b60008115159050919050565b6119ea816119d5565b81146119f557600080fd5b50565b600081359050611a07816119e1565b92915050565b600080600060408486031215611a2657611a25611966565b5b600084013567ffffffffffffffff811115611a4457611a4361196b565b5b611a508682870161197f565b93509350506020611a63868287016119f8565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015611aa7578082015181840152602081019050611a8c565b60008484015250505050565b6000601f19601f8301169050919050565b6000611acf82611a6d565b611ad98185611a78565b9350611ae9818560208601611a89565b611af281611ab3565b840191505092915050565b60006020820190508181036000830152611b178184611ac4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b4a82611b1f565b9050919050565b611b5a81611b3f565b8114611b6557600080fd5b50565b600081359050611b7781611b51565b92915050565b6000819050919050565b611b9081611b7d565b8114611b9b57600080fd5b50565b600081359050611bad81611b87565b92915050565b60008060408385031215611bca57611bc9611966565b5b6000611bd885828601611b68565b9250506020611be985828601611b9e565b9150509250929050565b611bfc816119d5565b82525050565b6000602082019050611c176000830184611bf3565b92915050565b600060208284031215611c3357611c32611966565b5b6000611c4184828501611b68565b91505092915050565b611c5381611b7d565b82525050565b6000602082019050611c6e6000830184611c4a565b92915050565b600080600060608486031215611c8d57611c8c611966565b5b6000611c9b86828701611b68565b9350506020611cac86828701611b68565b9250506040611cbd86828701611b9e565b9150509250925092565b600060ff82169050919050565b611cdd81611cc7565b82525050565b6000602082019050611cf86000830184611cd4565b92915050565b60008060008060808587031215611d1857611d17611966565b5b6000611d26878288016119f8565b9450506020611d3787828801611b68565b9350506040611d4887828801611b9e565b9250506060611d5987828801611b9e565b91505092959194509250565b600060208284031215611d7b57611d7a611966565b5b6000611d8984828501611b9e565b91505092915050565b611d9b81611b3f565b82525050565b6000602082019050611db66000830184611d92565b92915050565b60008060408385031215611dd357611dd2611966565b5b6000611de185828601611b68565b9250506020611df285828601611b68565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e32602083611a78565b9150611e3d82611dfc565b602082019050919050565b60006020820190508181036000830152611e6181611e25565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ed182611b7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f0357611f02611e97565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f5557607f821691505b602082108103611f6857611f67611f0e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611fca602883611a78565b9150611fd582611f6e565b604082019050919050565b60006020820190508181036000830152611ff981611fbd565b9050919050565b600061200b82611b7d565b915061201683611b7d565b925082820190508082111561202e5761202d611e97565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612090602583611a78565b915061209b82612034565b604082019050919050565b600060208201905081810360008301526120bf81612083565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612122602683611a78565b915061212d826120c6565b604082019050919050565b6000602082019050818103600083015261215181612115565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121b4602483611a78565b91506121bf82612158565b604082019050919050565b600060208201905081810360008301526121e3816121a7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612246602283611a78565b9150612251826121ea565b604082019050919050565b6000602082019050818103600083015261227581612239565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122d8602583611a78565b91506122e38261227c565b604082019050919050565b60006020820190508181036000830152612307816122cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061236a602383611a78565b91506123758261230e565b604082019050919050565b600060208201905081810360008301526123998161235d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006123fc602683611a78565b9150612407826123a0565b604082019050919050565b6000602082019050818103600083015261242b816123ef565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061248e602183611a78565b915061249982612432565b604082019050919050565b600060208201905081810360008301526124bd81612481565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612520602283611a78565b915061252b826124c4565b604082019050919050565b6000602082019050818103600083015261254f81612513565b9050919050565b600061256182611b7d565b915061256c83611b7d565b925082820390508181111561258457612583611e97565b5b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006125c0600b83611a78565b91506125cb8261258a565b602082019050919050565b600060208201905081810360008301526125ef816125b3565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600061262c601683611a78565b9150612637826125f6565b602082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612698600683611a78565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b905091905056fea2646970667358221220c70daa000c43bc799baa12692c273f18ff96ee7cd6ff3c89cf41a5ce54fa531a64736f6c6343000812003300000000000000000000000000000000000000ab4de1dfd3d2494fcd42a00000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806349bd5a5e116100c357806395d89b411161007c57806395d89b41146103cb578063a457c2d7146103e9578063a9059cbb14610419578063c997eb8d14610449578063dd62ed3e14610465578063f2fde38b1461049557610158565b806349bd5a5e1461031957806370a0823114610337578063715018a614610367578063860a32ec1461037157806389f9a1d31461038f5780638da5cb5b146103ad57610158565b80631e7be210116101155780631e7be2101461023357806323b872dd14610263578063313ce5671461029357806339509351146102b15780633aa633aa146102e157806342966c68146102fd57610158565b806301b38af51461015d57806306fdde0314610179578063095ea7b31461019757806316c02129146101c757806318160ddd146101f75780631ab99e1214610215575b600080fd5b61017760048036038101906101729190611a0d565b6104b1565b005b6101816105d2565b60405161018e9190611afd565b60405180910390f35b6101b160048036038101906101ac9190611bb3565b610664565b6040516101be9190611c02565b60405180910390f35b6101e160048036038101906101dc9190611c1d565b610682565b6040516101ee9190611c02565b60405180910390f35b6101ff6106a2565b60405161020c9190611c59565b60405180910390f35b61021d6106ac565b60405161022a9190611c59565b60405180910390f35b61024d60048036038101906102489190611c1d565b6106b2565b60405161025a9190611c02565b60405180910390f35b61027d60048036038101906102789190611c74565b6106d2565b60405161028a9190611c02565b60405180910390f35b61029b6107ca565b6040516102a89190611ce3565b60405180910390f35b6102cb60048036038101906102c69190611bb3565b6107d3565b6040516102d89190611c02565b60405180910390f35b6102fb60048036038101906102f69190611cfe565b61087f565b005b61031760048036038101906103129190611d65565b61096a565b005b610321610977565b60405161032e9190611da1565b60405180910390f35b610351600480360381019061034c9190611c1d565b61099d565b60405161035e9190611c59565b60405180910390f35b61036f6109e6565b005b610379610a6e565b6040516103869190611c02565b60405180910390f35b610397610a81565b6040516103a49190611c59565b60405180910390f35b6103b5610a87565b6040516103c29190611da1565b60405180910390f35b6103d3610ab0565b6040516103e09190611afd565b60405180910390f35b61040360048036038101906103fe9190611bb3565b610b42565b6040516104109190611c02565b60405180910390f35b610433600480360381019061042e9190611bb3565b610c2d565b6040516104409190611c02565b60405180910390f35b610463600480360381019061045e9190611a0d565b610c4b565b005b61047f600480360381019061047a9190611dbc565b610d6c565b60405161048c9190611c59565b60405180910390f35b6104af60048036038101906104aa9190611c1d565b610df3565b005b6104b9610eea565b73ffffffffffffffffffffffffffffffffffffffff166104d7610a87565b73ffffffffffffffffffffffffffffffffffffffff161461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052490611e48565b60405180910390fd5b60005b838390508110156105cc5781600b600086868581811061055357610552611e68565b5b90506020020160208101906105689190611c1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806105c490611ec6565b915050610530565b50505050565b6060600480546105e190611f3d565b80601f016020809104026020016040519081016040528092919081815260200182805461060d90611f3d565b801561065a5780601f1061062f5761010080835404028352916020019161065a565b820191906000526020600020905b81548152906001019060200180831161063d57829003601f168201915b5050505050905090565b6000610678610671610eea565b8484610ef2565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60085481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60006106df8484846110bb565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072a610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190611fe0565b60405180910390fd5b6107be856107b6610eea565b858403610ef2565b60019150509392505050565b60006012905090565b60006108756107e0610eea565b8484600260006107ee610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108709190612000565b610ef2565b6001905092915050565b610887610eea565b73ffffffffffffffffffffffffffffffffffffffff166108a5610a87565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290611e48565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b610974338261133d565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ee610eea565b73ffffffffffffffffffffffffffffffffffffffff16610a0c610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990611e48565b60405180910390fd5b610a6c6000611515565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610abf90611f3d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aeb90611f3d565b8015610b385780601f10610b0d57610100808354040283529160200191610b38565b820191906000526020600020905b815481529060010190602001808311610b1b57829003601f168201915b5050505050905090565b60008060026000610b51610eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c05906120a6565b60405180910390fd5b610c22610c19610eea565b85858403610ef2565b600191505092915050565b6000610c41610c3a610eea565b84846110bb565b6001905092915050565b610c53610eea565b73ffffffffffffffffffffffffffffffffffffffff16610c71610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90611e48565b60405180910390fd5b60005b83839050811015610d665781600a6000868685818110610ced57610cec611e68565b5b9050602002016020810190610d029190611c1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d5e90611ec6565b915050610cca565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dfb610eea565b73ffffffffffffffffffffffffffffffffffffffff16610e19610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690611e48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612138565b60405180910390fd5b610ee781611515565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f58906121ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061225c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110ae9190611c59565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906122ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612380565b60405180910390fd5b6111a48383836115d9565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612412565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112c09190612000565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113249190611c59565b60405180910390a3611337848484611961565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906124a4565b60405180910390fd5b6113b8826000836115d9565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143690612536565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546114979190612556565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114fc9190611c59565b60405180910390a361151083600084611961565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561167d5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906125d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117c95761171a610a87565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806117855750611756610a87565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90612642565b60405180910390fd5b61195c565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561186d5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561195b57600660009054906101000a900460ff1680156118db5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561195a57600754816118ed8461099d565b6118f79190612000565b1115801561191a57506008548161190d8461099d565b6119179190612000565b10155b611959576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611950906126ae565b60405180910390fd5b5b5b5b505050565b505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261199557611994611970565b5b8235905067ffffffffffffffff8111156119b2576119b1611975565b5b6020830191508360208202830111156119ce576119cd61197a565b5b9250929050565b60008115159050919050565b6119ea816119d5565b81146119f557600080fd5b50565b600081359050611a07816119e1565b92915050565b600080600060408486031215611a2657611a25611966565b5b600084013567ffffffffffffffff811115611a4457611a4361196b565b5b611a508682870161197f565b93509350506020611a63868287016119f8565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015611aa7578082015181840152602081019050611a8c565b60008484015250505050565b6000601f19601f8301169050919050565b6000611acf82611a6d565b611ad98185611a78565b9350611ae9818560208601611a89565b611af281611ab3565b840191505092915050565b60006020820190508181036000830152611b178184611ac4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b4a82611b1f565b9050919050565b611b5a81611b3f565b8114611b6557600080fd5b50565b600081359050611b7781611b51565b92915050565b6000819050919050565b611b9081611b7d565b8114611b9b57600080fd5b50565b600081359050611bad81611b87565b92915050565b60008060408385031215611bca57611bc9611966565b5b6000611bd885828601611b68565b9250506020611be985828601611b9e565b9150509250929050565b611bfc816119d5565b82525050565b6000602082019050611c176000830184611bf3565b92915050565b600060208284031215611c3357611c32611966565b5b6000611c4184828501611b68565b91505092915050565b611c5381611b7d565b82525050565b6000602082019050611c6e6000830184611c4a565b92915050565b600080600060608486031215611c8d57611c8c611966565b5b6000611c9b86828701611b68565b9350506020611cac86828701611b68565b9250506040611cbd86828701611b9e565b9150509250925092565b600060ff82169050919050565b611cdd81611cc7565b82525050565b6000602082019050611cf86000830184611cd4565b92915050565b60008060008060808587031215611d1857611d17611966565b5b6000611d26878288016119f8565b9450506020611d3787828801611b68565b9350506040611d4887828801611b9e565b9250506060611d5987828801611b9e565b91505092959194509250565b600060208284031215611d7b57611d7a611966565b5b6000611d8984828501611b9e565b91505092915050565b611d9b81611b3f565b82525050565b6000602082019050611db66000830184611d92565b92915050565b60008060408385031215611dd357611dd2611966565b5b6000611de185828601611b68565b9250506020611df285828601611b68565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e32602083611a78565b9150611e3d82611dfc565b602082019050919050565b60006020820190508181036000830152611e6181611e25565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ed182611b7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f0357611f02611e97565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f5557607f821691505b602082108103611f6857611f67611f0e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611fca602883611a78565b9150611fd582611f6e565b604082019050919050565b60006020820190508181036000830152611ff981611fbd565b9050919050565b600061200b82611b7d565b915061201683611b7d565b925082820190508082111561202e5761202d611e97565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612090602583611a78565b915061209b82612034565b604082019050919050565b600060208201905081810360008301526120bf81612083565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612122602683611a78565b915061212d826120c6565b604082019050919050565b6000602082019050818103600083015261215181612115565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121b4602483611a78565b91506121bf82612158565b604082019050919050565b600060208201905081810360008301526121e3816121a7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612246602283611a78565b9150612251826121ea565b604082019050919050565b6000602082019050818103600083015261227581612239565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122d8602583611a78565b91506122e38261227c565b604082019050919050565b60006020820190508181036000830152612307816122cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061236a602383611a78565b91506123758261230e565b604082019050919050565b600060208201905081810360008301526123998161235d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006123fc602683611a78565b9150612407826123a0565b604082019050919050565b6000602082019050818103600083015261242b816123ef565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061248e602183611a78565b915061249982612432565b604082019050919050565b600060208201905081810360008301526124bd81612481565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612520602283611a78565b915061252b826124c4565b604082019050919050565b6000602082019050818103600083015261254f81612513565b9050919050565b600061256182611b7d565b915061256c83611b7d565b925082820390508181111561258457612583611e97565b5b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006125c0600b83611a78565b91506125cb8261258a565b602082019050919050565b600060208201905081810360008301526125ef816125b3565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600061262c601683611a78565b9150612637826125f6565b602082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612698600683611a78565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b905091905056fea2646970667358221220c70daa000c43bc799baa12692c273f18ff96ee7cd6ff3c89cf41a5ce54fa531a64736f6c63430008120033

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

00000000000000000000000000000000000000ab4de1dfd3d2494fcd42a00000

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 13572119201000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000ab4de1dfd3d2494fcd42a00000


Deployed Bytecode Sourcemap

19143:1898:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19769:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9146:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11313:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19322:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10266:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19249:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19371:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11964:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10108:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12865:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19997:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20957:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19287:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10437:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:103;;;:::i;:::-;;19185:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19211:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1952:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9365:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13583:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10777:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19541:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11015:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2861:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19769:220;2183:12;:10;:12::i;:::-;2172:23;;:7;:5;:7::i;:::-;:23;;;2164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19876:6:::1;19871:111;19888:10;;:17;;19884:1;:21;19871:111;;;19955:15;19927:10;:25;19938:10;;19949:1;19938:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19927:25;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19907:3;;;;;:::i;:::-;;;;19871:111;;;;19769:220:::0;;;:::o;9146:100::-;9200:13;9233:5;9226:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9146:100;:::o;11313:169::-;11396:4;11413:39;11422:12;:10;:12::i;:::-;11436:7;11445:6;11413:8;:39::i;:::-;11470:4;11463:11;;11313:169;;;;:::o;19322:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10266:108::-;10327:7;10354:12;;10347:19;;10266:108;:::o;19249:31::-;;;;:::o;19371:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;11964:492::-;12104:4;12121:36;12131:6;12139:9;12150:6;12121:9;:36::i;:::-;12170:24;12197:11;:19;12209:6;12197:19;;;;;;;;;;;;;;;:33;12217:12;:10;:12::i;:::-;12197:33;;;;;;;;;;;;;;;;12170:60;;12269:6;12249:16;:26;;12241:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12356:57;12365:6;12373:12;:10;:12::i;:::-;12406:6;12387:16;:25;12356:8;:57::i;:::-;12444:4;12437:11;;;11964:492;;;;;:::o;10108:93::-;10166:5;10191:2;10184:9;;10108:93;:::o;12865:215::-;12953:4;12970:80;12979:12;:10;:12::i;:::-;12993:7;13039:10;13002:11;:25;13014:12;:10;:12::i;:::-;13002:25;;;;;;;;;;;;;;;:34;13028:7;13002:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12970:8;:80::i;:::-;13068:4;13061:11;;12865:215;;;;:::o;19997:301::-;2183:12;:10;:12::i;:::-;2172:23;;:7;:5;:7::i;:::-;:23;;;2164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20147:8:::1;20137:7;;:18;;;;;;;;;;;;;;;;;;20182:14;20166:13;;:30;;;;;;;;;;;;;;;;;;20226:17;20207:16;:36;;;;20273:17;20254:16;:36;;;;19997:301:::0;;;;:::o;20957:81::-;21006:24;21012:10;21024:5;21006;:24::i;:::-;20957:81;:::o;19287:28::-;;;;;;;;;;;;;:::o;10437:127::-;10511:7;10538:9;:18;10548:7;10538:18;;;;;;;;;;;;;;;;10531:25;;10437:127;;;:::o;2603:103::-;2183:12;:10;:12::i;:::-;2172:23;;:7;:5;:7::i;:::-;:23;;;2164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2668:30:::1;2695:1;2668:18;:30::i;:::-;2603:103::o:0;19185:19::-;;;;;;;;;;;;;:::o;19211:31::-;;;;:::o;1952:87::-;1998:7;2025:6;;;;;;;;;;;2018:13;;1952:87;:::o;9365:104::-;9421:13;9454:7;9447:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9365:104;:::o;13583:413::-;13676:4;13693:24;13720:11;:25;13732:12;:10;:12::i;:::-;13720:25;;;;;;;;;;;;;;;:34;13746:7;13720:34;;;;;;;;;;;;;;;;13693:61;;13793:15;13773:16;:35;;13765:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13886:67;13895:12;:10;:12::i;:::-;13909:7;13937:15;13918:16;:34;13886:8;:67::i;:::-;13984:4;13977:11;;;13583:413;;;;:::o;10777:175::-;10863:4;10880:42;10890:12;:10;:12::i;:::-;10904:9;10915:6;10880:9;:42::i;:::-;10940:4;10933:11;;10777:175;;;;:::o;19541:220::-;2183:12;:10;:12::i;:::-;2172:23;;:7;:5;:7::i;:::-;:23;;;2164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19648:6:::1;19643:111;19660:10;;:17;;19656:1;:21;19643:111;;;19727:15;19699:10;:25;19710:10;;19721:1;19710:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19699:25;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19679:3;;;;;:::i;:::-;;;;19643:111;;;;19541:220:::0;;;:::o;11015:151::-;11104:7;11131:11;:18;11143:5;11131:18;;;;;;;;;;;;;;;:27;11150:7;11131:27;;;;;;;;;;;;;;;;11124:34;;11015:151;;;;:::o;2861:201::-;2183:12;:10;:12::i;:::-;2172:23;;:7;:5;:7::i;:::-;:23;;;2164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2970:1:::1;2950:22;;:8;:22;;::::0;2942:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3026:28;3045:8;3026:18;:28::i;:::-;2861:201:::0;:::o;678:98::-;731:7;758:10;751:17;;678:98;:::o;17267:380::-;17420:1;17403:19;;:5;:19;;;17395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17501:1;17482:21;;:7;:21;;;17474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17585:6;17555:11;:18;17567:5;17555:18;;;;;;;;;;;;;;;:27;17574:7;17555:27;;;;;;;;;;;;;;;:36;;;;17623:7;17607:32;;17616:5;17607:32;;;17632:6;17607:32;;;;;;:::i;:::-;;;;;;;;17267:380;;;:::o;14486:733::-;14644:1;14626:20;;:6;:20;;;14618:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14728:1;14707:23;;:9;:23;;;14699:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14783:47;14804:6;14812:9;14823:6;14783:20;:47::i;:::-;14843:21;14867:9;:17;14877:6;14867:17;;;;;;;;;;;;;;;;14843:41;;14920:6;14903:13;:23;;14895:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15041:6;15025:13;:22;15005:9;:17;15015:6;15005:17;;;;;;;;;;;;;;;:42;;;;15093:6;15069:9;:20;15079:9;15069:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15134:9;15117:35;;15126:6;15117:35;;;15145:6;15117:35;;;;;;:::i;:::-;;;;;;;;15165:46;15185:6;15193:9;15204:6;15165:19;:46::i;:::-;14607:612;14486:733;;;:::o;16238:591::-;16341:1;16322:21;;:7;:21;;;16314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16394:49;16415:7;16432:1;16436:6;16394:20;:49::i;:::-;16456:22;16481:9;:18;16491:7;16481:18;;;;;;;;;;;;;;;;16456:43;;16536:6;16518:14;:24;;16510:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16655:6;16638:14;:23;16617:9;:18;16627:7;16617:18;;;;;;;;;;;;;;;:44;;;;16699:6;16683:12;;:22;;;;;;;:::i;:::-;;;;;;;;16749:1;16723:37;;16732:7;16723:37;;;16753:6;16723:37;;;;;;:::i;:::-;;;;;;;;16773:48;16793:7;16810:1;16814:6;16773:19;:48::i;:::-;16303:526;16238:591;;:::o;3222:191::-;3296:16;3315:6;;;;;;;;;;;3296:25;;3341:8;3332:6;;:17;;;;;;;;;;;;;;;;;;3396:8;3365:40;;3386:8;3365:40;;;;;;;;;;;;3285:128;3222:191;:::o;20306:643::-;20458:10;:14;20469:2;20458:14;;;;;;;;;;;;;;;;;;;;;;;;;20457:15;:36;;;;;20477:10;:16;20488:4;20477:16;;;;;;;;;;;;;;;;;;;;;;;;;20476:17;20457:36;20449:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:1;20526:27;;:13;;;;;;;;;;;:27;;;20522:148;;20586:7;:5;:7::i;:::-;20578:15;;:4;:15;;;:32;;;;20603:7;:5;:7::i;:::-;20597:13;;:2;:13;;;20578:32;20570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20652:7;;20522:148;20687:10;:16;20698:4;20687:16;;;;;;;;;;;;;;;;;;;;;;;;;20686:17;:36;;;;;20708:10;:14;20719:2;20708:14;;;;;;;;;;;;;;;;;;;;;;;;;20707:15;20686:36;20682:260;;;20743:7;;;;;;;;;;;:32;;;;;20762:13;;;;;;;;;;;20754:21;;:4;:21;;;20743:32;20739:192;;;20836:16;;20826:6;20804:19;20820:2;20804:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20888:16;;20878:6;20856:19;20872:2;20856:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20804:100;20796:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20739:192;20682:260;20306:643;;;;:::o;18976:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:99::-;2407:6;2441:5;2435:12;2425:22;;2355:99;;;:::o;2460:169::-;2544:11;2578:6;2573:3;2566:19;2618:4;2613:3;2609:14;2594:29;;2460:169;;;;:::o;2635:246::-;2716:1;2726:113;2740:6;2737:1;2734:13;2726:113;;;2825:1;2820:3;2816:11;2810:18;2806:1;2801:3;2797:11;2790:39;2762:2;2759:1;2755:10;2750:15;;2726:113;;;2873:1;2864:6;2859:3;2855:16;2848:27;2697:184;2635:246;;;:::o;2887:102::-;2928:6;2979:2;2975:7;2970:2;2963:5;2959:14;2955:28;2945:38;;2887:102;;;:::o;2995:377::-;3083:3;3111:39;3144:5;3111:39;:::i;:::-;3166:71;3230:6;3225:3;3166:71;:::i;:::-;3159:78;;3246:65;3304:6;3299:3;3292:4;3285:5;3281:16;3246:65;:::i;:::-;3336:29;3358:6;3336:29;:::i;:::-;3331:3;3327:39;3320:46;;3087:285;2995:377;;;;:::o;3378:313::-;3491:4;3529:2;3518:9;3514:18;3506:26;;3578:9;3572:4;3568:20;3564:1;3553:9;3549:17;3542:47;3606:78;3679:4;3670:6;3606:78;:::i;:::-;3598:86;;3378:313;;;;:::o;3697:126::-;3734:7;3774:42;3767:5;3763:54;3752:65;;3697:126;;;:::o;3829:96::-;3866:7;3895:24;3913:5;3895:24;:::i;:::-;3884:35;;3829:96;;;:::o;3931:122::-;4004:24;4022:5;4004:24;:::i;:::-;3997:5;3994:35;3984:63;;4043:1;4040;4033:12;3984:63;3931:122;:::o;4059:139::-;4105:5;4143:6;4130:20;4121:29;;4159:33;4186:5;4159:33;:::i;:::-;4059:139;;;;:::o;4204:77::-;4241:7;4270:5;4259:16;;4204:77;;;:::o;4287:122::-;4360:24;4378:5;4360:24;:::i;:::-;4353:5;4350:35;4340:63;;4399:1;4396;4389:12;4340:63;4287:122;:::o;4415:139::-;4461:5;4499:6;4486:20;4477:29;;4515:33;4542:5;4515:33;:::i;:::-;4415:139;;;;:::o;4560:474::-;4628:6;4636;4685:2;4673:9;4664:7;4660:23;4656:32;4653:119;;;4691:79;;:::i;:::-;4653:119;4811:1;4836:53;4881:7;4872:6;4861:9;4857:22;4836:53;:::i;:::-;4826:63;;4782:117;4938:2;4964:53;5009:7;5000:6;4989:9;4985:22;4964:53;:::i;:::-;4954:63;;4909:118;4560:474;;;;;:::o;5040:109::-;5121:21;5136:5;5121:21;:::i;:::-;5116:3;5109:34;5040:109;;:::o;5155:210::-;5242:4;5280:2;5269:9;5265:18;5257:26;;5293:65;5355:1;5344:9;5340:17;5331:6;5293:65;:::i;:::-;5155:210;;;;:::o;5371:329::-;5430:6;5479:2;5467:9;5458:7;5454:23;5450:32;5447:119;;;5485:79;;:::i;:::-;5447:119;5605:1;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5576:117;5371:329;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5706:118;;:::o;5830:222::-;5923:4;5961:2;5950:9;5946:18;5938:26;;5974:71;6042:1;6031:9;6027:17;6018:6;5974:71;:::i;:::-;5830:222;;;;:::o;6058:619::-;6135:6;6143;6151;6200:2;6188:9;6179:7;6175:23;6171:32;6168:119;;;6206:79;;:::i;:::-;6168:119;6326:1;6351:53;6396:7;6387:6;6376:9;6372:22;6351:53;:::i;:::-;6341:63;;6297:117;6453:2;6479:53;6524:7;6515:6;6504:9;6500:22;6479:53;:::i;:::-;6469:63;;6424:118;6581:2;6607:53;6652:7;6643:6;6632:9;6628:22;6607:53;:::i;:::-;6597:63;;6552:118;6058:619;;;;;:::o;6683:86::-;6718:7;6758:4;6751:5;6747:16;6736:27;;6683:86;;;:::o;6775:112::-;6858:22;6874:5;6858:22;:::i;:::-;6853:3;6846:35;6775:112;;:::o;6893:214::-;6982:4;7020:2;7009:9;7005:18;6997:26;;7033:67;7097:1;7086:9;7082:17;7073:6;7033:67;:::i;:::-;6893:214;;;;:::o;7113:759::-;7196:6;7204;7212;7220;7269:3;7257:9;7248:7;7244:23;7240:33;7237:120;;;7276:79;;:::i;:::-;7237:120;7396:1;7421:50;7463:7;7454:6;7443:9;7439:22;7421:50;:::i;:::-;7411:60;;7367:114;7520:2;7546:53;7591:7;7582:6;7571:9;7567:22;7546:53;:::i;:::-;7536:63;;7491:118;7648:2;7674:53;7719:7;7710:6;7699:9;7695:22;7674:53;:::i;:::-;7664:63;;7619:118;7776:2;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7747:118;7113:759;;;;;;;:::o;7878:329::-;7937:6;7986:2;7974:9;7965:7;7961:23;7957:32;7954:119;;;7992:79;;:::i;:::-;7954:119;8112:1;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8083:117;7878:329;;;;:::o;8213:118::-;8300:24;8318:5;8300:24;:::i;:::-;8295:3;8288:37;8213:118;;:::o;8337:222::-;8430:4;8468:2;8457:9;8453:18;8445:26;;8481:71;8549:1;8538:9;8534:17;8525:6;8481:71;:::i;:::-;8337:222;;;;:::o;8565:474::-;8633:6;8641;8690:2;8678:9;8669:7;8665:23;8661:32;8658:119;;;8696:79;;:::i;:::-;8658:119;8816:1;8841:53;8886:7;8877:6;8866:9;8862:22;8841:53;:::i;:::-;8831:63;;8787:117;8943:2;8969:53;9014:7;9005:6;8994:9;8990:22;8969:53;:::i;:::-;8959:63;;8914:118;8565:474;;;;;:::o;9045:182::-;9185:34;9181:1;9173:6;9169:14;9162:58;9045:182;:::o;9233:366::-;9375:3;9396:67;9460:2;9455:3;9396:67;:::i;:::-;9389:74;;9472:93;9561:3;9472:93;:::i;:::-;9590:2;9585:3;9581:12;9574:19;;9233:366;;;:::o;9605:419::-;9771:4;9809:2;9798:9;9794:18;9786:26;;9858:9;9852:4;9848:20;9844:1;9833:9;9829:17;9822:47;9886:131;10012:4;9886:131;:::i;:::-;9878:139;;9605:419;;;:::o;10030:180::-;10078:77;10075:1;10068:88;10175:4;10172:1;10165:15;10199:4;10196:1;10189:15;10216:180;10264:77;10261:1;10254:88;10361:4;10358:1;10351:15;10385:4;10382:1;10375:15;10402:233;10441:3;10464:24;10482:5;10464:24;:::i;:::-;10455:33;;10510:66;10503:5;10500:77;10497:103;;10580:18;;:::i;:::-;10497:103;10627:1;10620:5;10616:13;10609:20;;10402:233;;;:::o;10641:180::-;10689:77;10686:1;10679:88;10786:4;10783:1;10776:15;10810:4;10807:1;10800:15;10827:320;10871:6;10908:1;10902:4;10898:12;10888:22;;10955:1;10949:4;10945:12;10976:18;10966:81;;11032:4;11024:6;11020:17;11010:27;;10966:81;11094:2;11086:6;11083:14;11063:18;11060:38;11057:84;;11113:18;;:::i;:::-;11057:84;10878:269;10827:320;;;:::o;11153:227::-;11293:34;11289:1;11281:6;11277:14;11270:58;11362:10;11357:2;11349:6;11345:15;11338:35;11153:227;:::o;11386:366::-;11528:3;11549:67;11613:2;11608:3;11549:67;:::i;:::-;11542:74;;11625:93;11714:3;11625:93;:::i;:::-;11743:2;11738:3;11734:12;11727:19;;11386:366;;;:::o;11758:419::-;11924:4;11962:2;11951:9;11947:18;11939:26;;12011:9;12005:4;12001:20;11997:1;11986:9;11982:17;11975:47;12039:131;12165:4;12039:131;:::i;:::-;12031:139;;11758:419;;;:::o;12183:191::-;12223:3;12242:20;12260:1;12242:20;:::i;:::-;12237:25;;12276:20;12294:1;12276:20;:::i;:::-;12271:25;;12319:1;12316;12312:9;12305:16;;12340:3;12337:1;12334:10;12331:36;;;12347:18;;:::i;:::-;12331:36;12183:191;;;;:::o;12380:224::-;12520:34;12516:1;12508:6;12504:14;12497:58;12589:7;12584:2;12576:6;12572:15;12565:32;12380:224;:::o;12610:366::-;12752:3;12773:67;12837:2;12832:3;12773:67;:::i;:::-;12766:74;;12849:93;12938:3;12849:93;:::i;:::-;12967:2;12962:3;12958:12;12951:19;;12610:366;;;:::o;12982:419::-;13148:4;13186:2;13175:9;13171:18;13163:26;;13235:9;13229:4;13225:20;13221:1;13210:9;13206:17;13199:47;13263:131;13389:4;13263:131;:::i;:::-;13255:139;;12982:419;;;:::o;13407:225::-;13547:34;13543:1;13535:6;13531:14;13524:58;13616:8;13611:2;13603:6;13599:15;13592:33;13407:225;:::o;13638:366::-;13780:3;13801:67;13865:2;13860:3;13801:67;:::i;:::-;13794:74;;13877:93;13966:3;13877:93;:::i;:::-;13995:2;13990:3;13986:12;13979:19;;13638:366;;;:::o;14010:419::-;14176:4;14214:2;14203:9;14199:18;14191:26;;14263:9;14257:4;14253:20;14249:1;14238:9;14234:17;14227:47;14291:131;14417:4;14291:131;:::i;:::-;14283:139;;14010:419;;;:::o;14435:223::-;14575:34;14571:1;14563:6;14559:14;14552:58;14644:6;14639:2;14631:6;14627:15;14620:31;14435:223;:::o;14664:366::-;14806:3;14827:67;14891:2;14886:3;14827:67;:::i;:::-;14820:74;;14903:93;14992:3;14903:93;:::i;:::-;15021:2;15016:3;15012:12;15005:19;;14664:366;;;:::o;15036:419::-;15202:4;15240:2;15229:9;15225:18;15217:26;;15289:9;15283:4;15279:20;15275:1;15264:9;15260:17;15253:47;15317:131;15443:4;15317:131;:::i;:::-;15309:139;;15036:419;;;:::o;15461:221::-;15601:34;15597:1;15589:6;15585:14;15578:58;15670:4;15665:2;15657:6;15653:15;15646:29;15461:221;:::o;15688:366::-;15830:3;15851:67;15915:2;15910:3;15851:67;:::i;:::-;15844:74;;15927:93;16016:3;15927:93;:::i;:::-;16045:2;16040:3;16036:12;16029:19;;15688:366;;;:::o;16060:419::-;16226:4;16264:2;16253:9;16249:18;16241:26;;16313:9;16307:4;16303:20;16299:1;16288:9;16284:17;16277:47;16341:131;16467:4;16341:131;:::i;:::-;16333:139;;16060:419;;;:::o;16485:224::-;16625:34;16621:1;16613:6;16609:14;16602:58;16694:7;16689:2;16681:6;16677:15;16670:32;16485:224;:::o;16715:366::-;16857:3;16878:67;16942:2;16937:3;16878:67;:::i;:::-;16871:74;;16954:93;17043:3;16954:93;:::i;:::-;17072:2;17067:3;17063:12;17056:19;;16715:366;;;:::o;17087:419::-;17253:4;17291:2;17280:9;17276:18;17268:26;;17340:9;17334:4;17330:20;17326:1;17315:9;17311:17;17304:47;17368:131;17494:4;17368:131;:::i;:::-;17360:139;;17087:419;;;:::o;17512:222::-;17652:34;17648:1;17640:6;17636:14;17629:58;17721:5;17716:2;17708:6;17704:15;17697:30;17512:222;:::o;17740:366::-;17882:3;17903:67;17967:2;17962:3;17903:67;:::i;:::-;17896:74;;17979:93;18068:3;17979:93;:::i;:::-;18097:2;18092:3;18088:12;18081:19;;17740:366;;;:::o;18112:419::-;18278:4;18316:2;18305:9;18301:18;18293:26;;18365:9;18359:4;18355:20;18351:1;18340:9;18336:17;18329:47;18393:131;18519:4;18393:131;:::i;:::-;18385:139;;18112:419;;;:::o;18537:225::-;18677:34;18673:1;18665:6;18661:14;18654:58;18746:8;18741:2;18733:6;18729:15;18722:33;18537:225;:::o;18768:366::-;18910:3;18931:67;18995:2;18990:3;18931:67;:::i;:::-;18924:74;;19007:93;19096:3;19007:93;:::i;:::-;19125:2;19120:3;19116:12;19109:19;;18768:366;;;:::o;19140:419::-;19306:4;19344:2;19333:9;19329:18;19321:26;;19393:9;19387:4;19383:20;19379:1;19368:9;19364:17;19357:47;19421:131;19547:4;19421:131;:::i;:::-;19413:139;;19140:419;;;:::o;19565:220::-;19705:34;19701:1;19693:6;19689:14;19682:58;19774:3;19769:2;19761:6;19757:15;19750:28;19565:220;:::o;19791:366::-;19933:3;19954:67;20018:2;20013:3;19954:67;:::i;:::-;19947:74;;20030:93;20119:3;20030:93;:::i;:::-;20148:2;20143:3;20139:12;20132:19;;19791:366;;;:::o;20163:419::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:221::-;20728:34;20724:1;20716:6;20712:14;20705:58;20797:4;20792:2;20784:6;20780:15;20773:29;20588:221;:::o;20815:366::-;20957:3;20978:67;21042:2;21037:3;20978:67;:::i;:::-;20971:74;;21054:93;21143:3;21054:93;:::i;:::-;21172:2;21167:3;21163:12;21156:19;;20815:366;;;:::o;21187:419::-;21353:4;21391:2;21380:9;21376:18;21368:26;;21440:9;21434:4;21430:20;21426:1;21415:9;21411:17;21404:47;21468:131;21594:4;21468:131;:::i;:::-;21460:139;;21187:419;;;:::o;21612:194::-;21652:4;21672:20;21690:1;21672:20;:::i;:::-;21667:25;;21706:20;21724:1;21706:20;:::i;:::-;21701:25;;21750:1;21747;21743:9;21735:17;;21774:1;21768:4;21765:11;21762:37;;;21779:18;;:::i;:::-;21762:37;21612:194;;;;:::o;21812:161::-;21952:13;21948:1;21940:6;21936:14;21929:37;21812:161;:::o;21979:366::-;22121:3;22142:67;22206:2;22201:3;22142:67;:::i;:::-;22135:74;;22218:93;22307:3;22218:93;:::i;:::-;22336:2;22331:3;22327:12;22320:19;;21979:366;;;:::o;22351:419::-;22517:4;22555:2;22544:9;22540:18;22532:26;;22604:9;22598:4;22594:20;22590:1;22579:9;22575:17;22568:47;22632:131;22758:4;22632:131;:::i;:::-;22624:139;;22351:419;;;:::o;22776:172::-;22916:24;22912:1;22904:6;22900:14;22893:48;22776:172;:::o;22954:366::-;23096:3;23117:67;23181:2;23176:3;23117:67;:::i;:::-;23110:74;;23193:93;23282:3;23193:93;:::i;:::-;23311:2;23306:3;23302:12;23295:19;;22954:366;;;:::o;23326:419::-;23492:4;23530:2;23519:9;23515:18;23507:26;;23579:9;23573:4;23569:20;23565:1;23554:9;23550:17;23543:47;23607:131;23733:4;23607:131;:::i;:::-;23599:139;;23326:419;;;:::o;23751:156::-;23891:8;23887:1;23879:6;23875:14;23868:32;23751:156;:::o;23913:365::-;24055:3;24076:66;24140:1;24135:3;24076:66;:::i;:::-;24069:73;;24151:93;24240:3;24151:93;:::i;:::-;24269:2;24264:3;24260:12;24253:19;;23913:365;;;:::o;24284:419::-;24450:4;24488:2;24477:9;24473:18;24465:26;;24537:9;24531:4;24527:20;24523:1;24512:9;24508:17;24501:47;24565:131;24691:4;24565:131;:::i;:::-;24557:139;;24284:419;;;:::o

Swarm Source

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