Token

MAZAFAKAT (MAZA)

Overview

Max Total Supply

1,000,000,000 MAZA

Holders

80

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000,000 MAZA

Value
$0.00
0x86f3f0f94fd532283a926f870cb94dc74339e423
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Mazafakat

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-18
*/

/**
 *Submitted for verification at scrollscan.com on 2024-01-08
*/

// SPDX-License-Identifier: Unidentified

// File: @openzeppelin\contracts\token\ERC20\IERC20.sol

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

// File: @openzeppelin\contracts\token\ERC20\extensions\IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (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: @openzeppelin\contracts\utils\Context.sol

// OpenZeppelin Contracts v4.4.1 (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: @openzeppelin\contracts\token\ERC20\ERC20.sol

// OpenZeppelin Contracts (last updated v4.9.0) (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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

// File: contracts\Scrolly.sol


pragma solidity ^0.8.0;
contract Mazafakat is Context, ERC20 {
    address public owner;
    address private liquidityPoolAddress;
    uint256 public constant _maxTotalSupply = 1_000_000_000 * 1e18; // 1 billion
    uint256 private maxWalletToken; // Define var
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event LiquidityPoolAddressChanged(address indexed newLiquidityPoolAddress);
 

    modifier onlyOwner() {
        require(_msgSender() == owner, " caller is not the owner");
        _;
    }

    constructor() ERC20("MAZAFAKAT", "MAZA") {
        owner = _msgSender();
        _mint(_msgSender(), 1_000_000_000 * 1e18); // Initial mint
        emit OwnershipTransferred(address(0), _msgSender());
        maxWalletToken = _maxTotalSupply * 100 / 100; // Initial MaxWallet
    }
    function setMaxWalletToken(uint256 newMaxWalletTokenPercentage) public onlyOwner {
        require(newMaxWalletTokenPercentage > 0 && newMaxWalletTokenPercentage <= 100, "invalid percent");
        maxWalletToken = _maxTotalSupply * newMaxWalletTokenPercentage / 100;
    }

    function getMaxWalletToken() public view returns (uint256) {
        return maxWalletToken;
    }
    // Transfer ownership to a new address
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), " new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
   // Function to set the liquidity pool address
    function setLiquidityPoolAddress(address _liquidityPoolAddress) public onlyOwner {
        require(_liquidityPoolAddress != address(0), " liquidity pool address is the zero address");
        liquidityPoolAddress = _liquidityPoolAddress;
        emit LiquidityPoolAddressChanged(_liquidityPoolAddress);
        }
        
    // Renounce ownership of the contract
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }

    // Override the transfer function
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        require(balanceOf(to) + amount <= maxWalletToken, " transfer amount exceeds the maxWalletToken limit");
        return super.transfer(to, amount);
    }

 // Override the transferFrom function
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        if (to != liquidityPoolAddress) {
            require(balanceOf(to) + amount <= maxWalletToken, " transfer amount exceeds the maxWalletToken limit");
        }
        return super.transferFrom(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityPoolAddress","type":"address"}],"name":"LiquidityPoolAddressChanged","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":[],"name":"_maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityPoolAddress","type":"address"}],"name":"setLiquidityPoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletTokenPercentage","type":"uint256"}],"name":"setMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4d415a4146414b415400000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d415a41000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200034d565b508060049080519060200190620000af9291906200034d565b505050620000c2620001cd60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012f62000116620001cd60201b60201c565b6b033b2e3c9fd0803ce8000000620001d560201b60201c565b6200013f620001cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36064806b033b2e3c9fd0803ce8000000620001b5919062000535565b620001c19190620004fd565b60078190555062000663565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023f9062000450565b60405180910390fd5b6200025c600083836200034360201b60201c565b8060026000828254620002709190620004a0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000323919062000472565b60405180910390a36200033f600083836200034860201b60201c565b5050565b505050565b505050565b8280546200035b90620005a0565b90600052602060002090601f0160209004810192826200037f5760008555620003cb565b82601f106200039a57805160ff1916838001178555620003cb565b82800160010185558215620003cb579182015b82811115620003ca578251825591602001919060010190620003ad565b5b509050620003da9190620003de565b5090565b5b80821115620003f9576000816000905550600101620003df565b5090565b60006200040c601f836200048f565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200044a8162000596565b82525050565b600060208201905081810360008301526200046b81620003fd565b9050919050565b60006020820190506200048960008301846200043f565b92915050565b600082825260208201905092915050565b6000620004ad8262000596565b9150620004ba8362000596565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004f257620004f1620005d6565b5b828201905092915050565b60006200050a8262000596565b9150620005178362000596565b9250826200052a576200052962000605565b5b828204905092915050565b6000620005428262000596565b91506200054f8362000596565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200058b576200058a620005d6565b5b828202905092915050565b6000819050919050565b60006002820490506001821680620005b957607f821691505b60208210811415620005d057620005cf62000634565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611d8580620006736000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a257806395d89b411161007157806395d89b41146102d1578063a457c2d7146102ef578063a9059cbb1461031f578063dd62ed3e1461034f578063f2fde38b1461037f57610116565b806370a082311461025d578063715018a61461028d5780638da5cb5b1461029757806391d55f41146102b557610116565b8063313ce567116100e9578063313ce567146101b75780633730837c146101d557806339509351146101f35780635587964e1461022357806363986aba1461024157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b61012361039b565b60405161013091906118f4565b60405180910390f35b610153600480360381019061014e91906113b4565b61042d565b60405161016091906118d9565b60405180910390f35b610171610450565b60405161017e9190611a96565b60405180910390f35b6101a1600480360381019061019c9190611365565b61045a565b6040516101ae91906118d9565b60405180910390f35b6101bf61051e565b6040516101cc9190611ab1565b60405180910390f35b6101dd610527565b6040516101ea9190611a96565b60405180910390f35b61020d600480360381019061020891906113b4565b610537565b60405161021a91906118d9565b60405180910390f35b61022b61056e565b6040516102389190611a96565b60405180910390f35b61025b60048036038101906102569190611300565b610578565b005b61027760048036038101906102729190611300565b610706565b6040516102849190611a96565b60405180910390f35b61029561074e565b005b61029f6108a6565b6040516102ac91906118be565b60405180910390f35b6102cf60048036038101906102ca91906113f0565b6108cc565b005b6102d96109e0565b6040516102e691906118f4565b60405180910390f35b610309600480360381019061030491906113b4565b610a72565b60405161031691906118d9565b60405180910390f35b610339600480360381019061033491906113b4565b610ae9565b60405161034691906118d9565b60405180910390f35b61036960048036038101906103649190611329565b610b55565b6040516103769190611a96565b60405180910390f35b61039960048036038101906103949190611300565b610bdc565b005b6060600380546103aa90611c51565b80601f01602080910402602001604051908101604052809291908181526020018280546103d690611c51565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b5050505050905090565b600080610438610da3565b9050610445818585610dab565b600191505092915050565b6000600254905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461050a57600754826104be85610706565b6104c89190611ae8565b1115610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090611a16565b60405180910390fd5b5b610515848484610f76565b90509392505050565b60006012905090565b6b033b2e3c9fd0803ce800000081565b600080610542610da3565b90506105638185856105548589610b55565b61055e9190611ae8565b610dab565b600191505092915050565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105b9610da3565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060690611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611956565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f13ef15815f72600feb0456a2b1dd0abf68442ff89dc454ccb656f16bc9cf177160405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661078f610da3565b73ffffffffffffffffffffffffffffffffffffffff16146107e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dc90611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661090d610da3565b73ffffffffffffffffffffffffffffffffffffffff1614610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90611976565b60405180910390fd5b600081118015610974575060648111155b6109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90611996565b60405180910390fd5b6064816b033b2e3c9fd0803ce80000006109cd9190611b6f565b6109d79190611b3e565b60078190555050565b6060600480546109ef90611c51565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90611c51565b8015610a685780601f10610a3d57610100808354040283529160200191610a68565b820191906000526020600020905b815481529060010190602001808311610a4b57829003601f168201915b5050505050905090565b600080610a7d610da3565b90506000610a8b8286610b55565b905083811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790611a76565b60405180910390fd5b610add8286868403610dab565b60019250505092915050565b600060075482610af885610706565b610b029190611ae8565b1115610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a90611a16565b60405180910390fd5b610b4d8383610fa5565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1d610da3565b73ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906119d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290611a56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8290611936565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f699190611a96565b60405180910390a3505050565b600080610f81610da3565b9050610f8e858285610fc8565b610f99858585611054565b60019150509392505050565b600080610fb0610da3565b9050610fbd818585611054565b600191505092915050565b6000610fd48484610b55565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104e5781811015611040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611037906119b6565b60405180910390fd5b61104d8484848403610dab565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90611a36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90611916565b60405180910390fd5b61113f8383836112cc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc906119f6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112b39190611a96565b60405180910390a36112c68484846112d1565b50505050565b505050565b505050565b6000813590506112e581611d21565b92915050565b6000813590506112fa81611d38565b92915050565b60006020828403121561131257600080fd5b6000611320848285016112d6565b91505092915050565b6000806040838503121561133c57600080fd5b600061134a858286016112d6565b925050602061135b858286016112d6565b9150509250929050565b60008060006060848603121561137a57600080fd5b6000611388868287016112d6565b9350506020611399868287016112d6565b92505060406113aa868287016112eb565b9150509250925092565b600080604083850312156113c757600080fd5b60006113d5858286016112d6565b92505060206113e6858286016112eb565b9150509250929050565b60006020828403121561140257600080fd5b6000611410848285016112eb565b91505092915050565b61142281611bc9565b82525050565b61143181611bdb565b82525050565b600061144282611acc565b61144c8185611ad7565b935061145c818560208601611c1e565b61146581611d10565b840191505092915050565b600061147d602383611ad7565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114e3602283611ad7565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611549602b83611ad7565b91507f206c697175696469747920706f6f6c206164647265737320697320746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b60006115af601883611ad7565b91507f2063616c6c6572206973206e6f7420746865206f776e657200000000000000006000830152602082019050919050565b60006115ef600f83611ad7565b91507f696e76616c69642070657263656e7400000000000000000000000000000000006000830152602082019050919050565b600061162f601d83611ad7565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b600061166f601e83611ad7565b91507f206e6577206f776e657220697320746865207a65726f206164647265737300006000830152602082019050919050565b60006116af602683611ad7565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611715603183611ad7565b91507f207472616e7366657220616d6f756e74206578636565647320746865206d617860008301527f57616c6c6574546f6b656e206c696d69740000000000000000000000000000006020830152604082019050919050565b600061177b602583611ad7565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117e1602483611ad7565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611847602583611ad7565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6118a981611c07565b82525050565b6118b881611c11565b82525050565b60006020820190506118d36000830184611419565b92915050565b60006020820190506118ee6000830184611428565b92915050565b6000602082019050818103600083015261190e8184611437565b905092915050565b6000602082019050818103600083015261192f81611470565b9050919050565b6000602082019050818103600083015261194f816114d6565b9050919050565b6000602082019050818103600083015261196f8161153c565b9050919050565b6000602082019050818103600083015261198f816115a2565b9050919050565b600060208201905081810360008301526119af816115e2565b9050919050565b600060208201905081810360008301526119cf81611622565b9050919050565b600060208201905081810360008301526119ef81611662565b9050919050565b60006020820190508181036000830152611a0f816116a2565b9050919050565b60006020820190508181036000830152611a2f81611708565b9050919050565b60006020820190508181036000830152611a4f8161176e565b9050919050565b60006020820190508181036000830152611a6f816117d4565b9050919050565b60006020820190508181036000830152611a8f8161183a565b9050919050565b6000602082019050611aab60008301846118a0565b92915050565b6000602082019050611ac660008301846118af565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611af382611c07565b9150611afe83611c07565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b3357611b32611c83565b5b828201905092915050565b6000611b4982611c07565b9150611b5483611c07565b925082611b6457611b63611cb2565b5b828204905092915050565b6000611b7a82611c07565b9150611b8583611c07565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611bbe57611bbd611c83565b5b828202905092915050565b6000611bd482611be7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c3c578082015181840152602081019050611c21565b83811115611c4b576000848401525b50505050565b60006002820490506001821680611c6957607f821691505b60208210811415611c7d57611c7c611ce1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611d2a81611bc9565b8114611d3557600080fd5b50565b611d4181611c07565b8114611d4c57600080fd5b5056fea2646970667358221220b0422bf65da114bab9a25ad25ebdabacbd4bda2d2ca587c699e12a98b5298cb064736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a257806395d89b411161007157806395d89b41146102d1578063a457c2d7146102ef578063a9059cbb1461031f578063dd62ed3e1461034f578063f2fde38b1461037f57610116565b806370a082311461025d578063715018a61461028d5780638da5cb5b1461029757806391d55f41146102b557610116565b8063313ce567116100e9578063313ce567146101b75780633730837c146101d557806339509351146101f35780635587964e1461022357806363986aba1461024157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b61012361039b565b60405161013091906118f4565b60405180910390f35b610153600480360381019061014e91906113b4565b61042d565b60405161016091906118d9565b60405180910390f35b610171610450565b60405161017e9190611a96565b60405180910390f35b6101a1600480360381019061019c9190611365565b61045a565b6040516101ae91906118d9565b60405180910390f35b6101bf61051e565b6040516101cc9190611ab1565b60405180910390f35b6101dd610527565b6040516101ea9190611a96565b60405180910390f35b61020d600480360381019061020891906113b4565b610537565b60405161021a91906118d9565b60405180910390f35b61022b61056e565b6040516102389190611a96565b60405180910390f35b61025b60048036038101906102569190611300565b610578565b005b61027760048036038101906102729190611300565b610706565b6040516102849190611a96565b60405180910390f35b61029561074e565b005b61029f6108a6565b6040516102ac91906118be565b60405180910390f35b6102cf60048036038101906102ca91906113f0565b6108cc565b005b6102d96109e0565b6040516102e691906118f4565b60405180910390f35b610309600480360381019061030491906113b4565b610a72565b60405161031691906118d9565b60405180910390f35b610339600480360381019061033491906113b4565b610ae9565b60405161034691906118d9565b60405180910390f35b61036960048036038101906103649190611329565b610b55565b6040516103769190611a96565b60405180910390f35b61039960048036038101906103949190611300565b610bdc565b005b6060600380546103aa90611c51565b80601f01602080910402602001604051908101604052809291908181526020018280546103d690611c51565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b5050505050905090565b600080610438610da3565b9050610445818585610dab565b600191505092915050565b6000600254905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461050a57600754826104be85610706565b6104c89190611ae8565b1115610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090611a16565b60405180910390fd5b5b610515848484610f76565b90509392505050565b60006012905090565b6b033b2e3c9fd0803ce800000081565b600080610542610da3565b90506105638185856105548589610b55565b61055e9190611ae8565b610dab565b600191505092915050565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105b9610da3565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060690611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611956565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f13ef15815f72600feb0456a2b1dd0abf68442ff89dc454ccb656f16bc9cf177160405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661078f610da3565b73ffffffffffffffffffffffffffffffffffffffff16146107e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dc90611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661090d610da3565b73ffffffffffffffffffffffffffffffffffffffff1614610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90611976565b60405180910390fd5b600081118015610974575060648111155b6109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90611996565b60405180910390fd5b6064816b033b2e3c9fd0803ce80000006109cd9190611b6f565b6109d79190611b3e565b60078190555050565b6060600480546109ef90611c51565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90611c51565b8015610a685780601f10610a3d57610100808354040283529160200191610a68565b820191906000526020600020905b815481529060010190602001808311610a4b57829003601f168201915b5050505050905090565b600080610a7d610da3565b90506000610a8b8286610b55565b905083811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790611a76565b60405180910390fd5b610add8286868403610dab565b60019250505092915050565b600060075482610af885610706565b610b029190611ae8565b1115610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a90611a16565b60405180910390fd5b610b4d8383610fa5565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1d610da3565b73ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90611976565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906119d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290611a56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8290611936565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f699190611a96565b60405180910390a3505050565b600080610f81610da3565b9050610f8e858285610fc8565b610f99858585611054565b60019150509392505050565b600080610fb0610da3565b9050610fbd818585611054565b600191505092915050565b6000610fd48484610b55565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104e5781811015611040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611037906119b6565b60405180910390fd5b61104d8484848403610dab565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90611a36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90611916565b60405180910390fd5b61113f8383836112cc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc906119f6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112b39190611a96565b60405180910390a36112c68484846112d1565b50505050565b505050565b505050565b6000813590506112e581611d21565b92915050565b6000813590506112fa81611d38565b92915050565b60006020828403121561131257600080fd5b6000611320848285016112d6565b91505092915050565b6000806040838503121561133c57600080fd5b600061134a858286016112d6565b925050602061135b858286016112d6565b9150509250929050565b60008060006060848603121561137a57600080fd5b6000611388868287016112d6565b9350506020611399868287016112d6565b92505060406113aa868287016112eb565b9150509250925092565b600080604083850312156113c757600080fd5b60006113d5858286016112d6565b92505060206113e6858286016112eb565b9150509250929050565b60006020828403121561140257600080fd5b6000611410848285016112eb565b91505092915050565b61142281611bc9565b82525050565b61143181611bdb565b82525050565b600061144282611acc565b61144c8185611ad7565b935061145c818560208601611c1e565b61146581611d10565b840191505092915050565b600061147d602383611ad7565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114e3602283611ad7565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611549602b83611ad7565b91507f206c697175696469747920706f6f6c206164647265737320697320746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b60006115af601883611ad7565b91507f2063616c6c6572206973206e6f7420746865206f776e657200000000000000006000830152602082019050919050565b60006115ef600f83611ad7565b91507f696e76616c69642070657263656e7400000000000000000000000000000000006000830152602082019050919050565b600061162f601d83611ad7565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b600061166f601e83611ad7565b91507f206e6577206f776e657220697320746865207a65726f206164647265737300006000830152602082019050919050565b60006116af602683611ad7565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611715603183611ad7565b91507f207472616e7366657220616d6f756e74206578636565647320746865206d617860008301527f57616c6c6574546f6b656e206c696d69740000000000000000000000000000006020830152604082019050919050565b600061177b602583611ad7565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117e1602483611ad7565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611847602583611ad7565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6118a981611c07565b82525050565b6118b881611c11565b82525050565b60006020820190506118d36000830184611419565b92915050565b60006020820190506118ee6000830184611428565b92915050565b6000602082019050818103600083015261190e8184611437565b905092915050565b6000602082019050818103600083015261192f81611470565b9050919050565b6000602082019050818103600083015261194f816114d6565b9050919050565b6000602082019050818103600083015261196f8161153c565b9050919050565b6000602082019050818103600083015261198f816115a2565b9050919050565b600060208201905081810360008301526119af816115e2565b9050919050565b600060208201905081810360008301526119cf81611622565b9050919050565b600060208201905081810360008301526119ef81611662565b9050919050565b60006020820190508181036000830152611a0f816116a2565b9050919050565b60006020820190508181036000830152611a2f81611708565b9050919050565b60006020820190508181036000830152611a4f8161176e565b9050919050565b60006020820190508181036000830152611a6f816117d4565b9050919050565b60006020820190508181036000830152611a8f8161183a565b9050919050565b6000602082019050611aab60008301846118a0565b92915050565b6000602082019050611ac660008301846118af565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611af382611c07565b9150611afe83611c07565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b3357611b32611c83565b5b828201905092915050565b6000611b4982611c07565b9150611b5483611c07565b925082611b6457611b63611cb2565b5b828204905092915050565b6000611b7a82611c07565b9150611b8583611c07565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611bbe57611bbd611c83565b5b828202905092915050565b6000611bd482611be7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c3c578082015181840152602081019050611c21565b83811115611c4b576000848401525b50505050565b60006002820490506001821680611c6957607f821691505b60208210811415611c7d57611c7c611ce1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611d2a81611bc9565b8114611d3557600080fd5b50565b611d4181611c07565b8114611d4c57600080fd5b5056fea2646970667358221220b0422bf65da114bab9a25ad25ebdabacbd4bda2d2ca587c699e12a98b5298cb064736f6c63430008000033

Deployed Bytecode Sourcemap

17704:2745:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9010:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7779:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20110:336;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7621:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17818:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10461:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18821:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19252:316;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7950:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19627:138;;;:::i;:::-;;17748:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18537:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6869:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11202:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19812:250;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8539:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18970:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6650:100;6704:13;6737:5;6730:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:100;:::o;9010:201::-;9093:4;9110:13;9126:12;:10;:12::i;:::-;9110:28;;9149:32;9158:5;9165:7;9174:6;9149:8;:32::i;:::-;9199:4;9192:11;;;9010:201;;;;:::o;7779:108::-;7840:7;7867:12;;7860:19;;7779:108;:::o;20110:336::-;20207:4;20234:20;;;;;;;;;;;20228:26;;:2;:26;;;20224:161;;20305:14;;20295:6;20279:13;20289:2;20279:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20271:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;20224:161;20402:36;20421:4;20427:2;20431:6;20402:18;:36::i;:::-;20395:43;;20110:336;;;;;:::o;7621:93::-;7679:5;7704:2;7697:9;;7621:93;:::o;17818:62::-;17860:20;17818:62;:::o;10461:238::-;10549:4;10566:13;10582:12;:10;:12::i;:::-;10566:28;;10605:64;10614:5;10621:7;10658:10;10630:25;10640:5;10647:7;10630:9;:25::i;:::-;:38;;;;:::i;:::-;10605:8;:64::i;:::-;10687:4;10680:11;;;10461:238;;;;:::o;18821:99::-;18871:7;18898:14;;18891:21;;18821:99;:::o;19252:316::-;18183:5;;;;;;;;;;;18167:21;;:12;:10;:12::i;:::-;:21;;;18159:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19385:1:::1;19352:35;;:21;:35;;;;19344:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19469:21;19446:20;;:44;;;;;;;;;;;;;;;;;;19534:21;19506:50;;;;;;;;;;;;19252:316:::0;:::o;7950:127::-;8024:7;8051:9;:18;8061:7;8051:18;;;;;;;;;;;;;;;;8044:25;;7950:127;;;:::o;19627:138::-;18183:5;;;;;;;;;;;18167:21;;:12;:10;:12::i;:::-;:21;;;18159:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19725:1:::1;19689:39;;19710:5;;;;;;;;;;;19689:39;;;;;;;;;;;;19755:1;19739:5;;:18;;;;;;;;;;;;;;;;;;19627:138::o:0;17748:20::-;;;;;;;;;;;;;:::o;18537:276::-;18183:5;;;;;;;;;;;18167:21;;:12;:10;:12::i;:::-;:21;;;18159:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18667:1:::1;18637:27;:31;:69;;;;;18703:3;18672:27;:34;;18637:69;18629:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;18802:3;18772:27;17860:20;18754:45;;;;:::i;:::-;:51;;;;:::i;:::-;18737:14;:68;;;;18537:276:::0;:::o;6869:104::-;6925:13;6958:7;6951:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6869:104;:::o;11202:436::-;11295:4;11312:13;11328:12;:10;:12::i;:::-;11312:28;;11351:24;11378:25;11388:5;11395:7;11378:9;:25::i;:::-;11351:52;;11442:15;11422:16;:35;;11414:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11535:60;11544:5;11551:7;11579:15;11560:16;:34;11535:8;:60::i;:::-;11626:4;11619:11;;;;11202:436;;;;:::o;19812:250::-;19891:4;19942:14;;19932:6;19916:13;19926:2;19916:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19908:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;20028:26;20043:2;20047:6;20028:14;:26::i;:::-;20021:33;;19812:250;;;;:::o;8539:151::-;8628:7;8655:11;:18;8667:5;8655:18;;;;;;;;;;;;;;;:27;8674:7;8655:27;;;;;;;;;;;;;;;;8648:34;;8539:151;;;;:::o;18970:226::-;18183:5;;;;;;;;;;;18167:21;;:12;:10;:12::i;:::-;:21;;;18159:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19071:1:::1;19051:22;;:8;:22;;;;19043:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:8;19124:37;;19145:5;;;;;;;;;;;19124:37;;;;;;;;;;;;19180:8;19172:5;;:16;;;;;;;;;;;;;;;;;;18970:226:::0;:::o;4292:98::-;4345:7;4372:10;4365:17;;4292:98;:::o;15195:346::-;15314:1;15297:19;;:5;:19;;;;15289:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15395:1;15376:21;;:7;:21;;;;15368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15479:6;15449:11;:18;15461:5;15449:18;;;;;;;;;;;;;;;:27;15468:7;15449:27;;;;;;;;;;;;;;;:36;;;;15517:7;15501:32;;15510:5;15501:32;;;15526:6;15501:32;;;;;;:::i;:::-;;;;;;;;15195:346;;;:::o;9791:261::-;9888:4;9905:15;9923:12;:10;:12::i;:::-;9905:30;;9946:38;9962:4;9968:7;9977:6;9946:15;:38::i;:::-;9995:27;10005:4;10011:2;10015:6;9995:9;:27::i;:::-;10040:4;10033:11;;;9791:261;;;;;:::o;8283:193::-;8362:4;8379:13;8395:12;:10;:12::i;:::-;8379:28;;8418;8428:5;8435:2;8439:6;8418:9;:28::i;:::-;8464:4;8457:11;;;8283:193;;;;:::o;15832:419::-;15933:24;15960:25;15970:5;15977:7;15960:9;:25::i;:::-;15933:52;;16020:17;16000:16;:37;15996:248;;16082:6;16062:16;:26;;16054:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16166:51;16175:5;16182:7;16210:6;16191:16;:25;16166:8;:51::i;:::-;15996:248;15832:419;;;;:::o;12108:806::-;12221:1;12205:18;;:4;:18;;;;12197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12298:1;12284:16;;:2;:16;;;;12276:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12353:38;12374:4;12380:2;12384:6;12353:20;:38::i;:::-;12404:19;12426:9;:15;12436:4;12426:15;;;;;;;;;;;;;;;;12404:37;;12475:6;12460:11;:21;;12452:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12592:6;12578:11;:20;12560:9;:15;12570:4;12560:15;;;;;;;;;;;;;;;:38;;;;12795:6;12778:9;:13;12788:2;12778:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12845:2;12830:26;;12839:4;12830:26;;;12849:6;12830:26;;;;;;:::i;:::-;;;;;;;;12869:37;12889:4;12895:2;12899:6;12869:19;:37::i;:::-;12108:806;;;;:::o;16851:91::-;;;;:::o;17546:90::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:367::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3086:34;3082:1;3077:3;3073:11;3066:55;3152:5;3147:2;3142:3;3138:12;3131:27;3184:2;3179:3;3175:12;3168:19;;2972:221;;;:::o;3199:366::-;;3362:67;3426:2;3421:3;3362:67;:::i;:::-;3355:74;;3459:34;3455:1;3450:3;3446:11;3439:55;3525:4;3520:2;3515:3;3511:12;3504:26;3556:2;3551:3;3547:12;3540:19;;3345:220;;;:::o;3571:375::-;;3734:67;3798:2;3793:3;3734:67;:::i;:::-;3727:74;;3831:34;3827:1;3822:3;3818:11;3811:55;3897:13;3892:2;3887:3;3883:12;3876:35;3937:2;3932:3;3928:12;3921:19;;3717:229;;;:::o;3952:322::-;;4115:67;4179:2;4174:3;4115:67;:::i;:::-;4108:74;;4212:26;4208:1;4203:3;4199:11;4192:47;4265:2;4260:3;4256:12;4249:19;;4098:176;;;:::o;4280:313::-;;4443:67;4507:2;4502:3;4443:67;:::i;:::-;4436:74;;4540:17;4536:1;4531:3;4527:11;4520:38;4584:2;4579:3;4575:12;4568:19;;4426:167;;;:::o;4599:327::-;;4762:67;4826:2;4821:3;4762:67;:::i;:::-;4755:74;;4859:31;4855:1;4850:3;4846:11;4839:52;4917:2;4912:3;4908:12;4901:19;;4745:181;;;:::o;4932:328::-;;5095:67;5159:2;5154:3;5095:67;:::i;:::-;5088:74;;5192:32;5188:1;5183:3;5179:11;5172:53;5251:2;5246:3;5242:12;5235:19;;5078:182;;;:::o;5266:370::-;;5429:67;5493:2;5488:3;5429:67;:::i;:::-;5422:74;;5526:34;5522:1;5517:3;5513:11;5506:55;5592:8;5587:2;5582:3;5578:12;5571:30;5627:2;5622:3;5618:12;5611:19;;5412:224;;;:::o;5642:381::-;;5805:67;5869:2;5864:3;5805:67;:::i;:::-;5798:74;;5902:34;5898:1;5893:3;5889:11;5882:55;5968:19;5963:2;5958:3;5954:12;5947:41;6014:2;6009:3;6005:12;5998:19;;5788:235;;;:::o;6029:369::-;;6192:67;6256:2;6251:3;6192:67;:::i;:::-;6185:74;;6289:34;6285:1;6280:3;6276:11;6269:55;6355:7;6350:2;6345:3;6341:12;6334:29;6389:2;6384:3;6380:12;6373:19;;6175:223;;;:::o;6404:368::-;;6567:67;6631:2;6626:3;6567:67;:::i;:::-;6560:74;;6664:34;6660:1;6655:3;6651:11;6644:55;6730:6;6725:2;6720:3;6716:12;6709:28;6763:2;6758:3;6754:12;6747:19;;6550:222;;;:::o;6778:369::-;;6941:67;7005:2;7000:3;6941:67;:::i;:::-;6934:74;;7038:34;7034:1;7029:3;7025:11;7018:55;7104:7;7099:2;7094:3;7090:12;7083:29;7138:2;7133:3;7129:12;7122:19;;6924:223;;;:::o;7153:118::-;7240:24;7258:5;7240:24;:::i;:::-;7235:3;7228:37;7218:53;;:::o;7277:112::-;7360:22;7376:5;7360:22;:::i;:::-;7355:3;7348:35;7338:51;;:::o;7395:222::-;;7526:2;7515:9;7511:18;7503:26;;7539:71;7607:1;7596:9;7592:17;7583:6;7539:71;:::i;:::-;7493:124;;;;:::o;7623:210::-;;7748:2;7737:9;7733:18;7725:26;;7761:65;7823:1;7812:9;7808:17;7799:6;7761:65;:::i;:::-;7715:118;;;;:::o;7839:313::-;;7990:2;7979:9;7975:18;7967:26;;8039:9;8033:4;8029:20;8025:1;8014:9;8010:17;8003:47;8067:78;8140:4;8131:6;8067:78;:::i;:::-;8059:86;;7957:195;;;;:::o;8158:419::-;;8362:2;8351:9;8347:18;8339:26;;8411:9;8405:4;8401:20;8397:1;8386:9;8382:17;8375:47;8439:131;8565:4;8439:131;:::i;:::-;8431:139;;8329:248;;;:::o;8583:419::-;;8787:2;8776:9;8772:18;8764:26;;8836:9;8830:4;8826:20;8822:1;8811:9;8807:17;8800:47;8864:131;8990:4;8864:131;:::i;:::-;8856:139;;8754:248;;;:::o;9008:419::-;;9212:2;9201:9;9197:18;9189:26;;9261:9;9255:4;9251:20;9247:1;9236:9;9232:17;9225:47;9289:131;9415:4;9289:131;:::i;:::-;9281:139;;9179:248;;;:::o;9433:419::-;;9637:2;9626:9;9622:18;9614:26;;9686:9;9680:4;9676:20;9672:1;9661:9;9657:17;9650:47;9714:131;9840:4;9714:131;:::i;:::-;9706:139;;9604:248;;;:::o;9858:419::-;;10062:2;10051:9;10047:18;10039:26;;10111:9;10105:4;10101:20;10097:1;10086:9;10082:17;10075:47;10139:131;10265:4;10139:131;:::i;:::-;10131:139;;10029:248;;;:::o;10283:419::-;;10487:2;10476:9;10472:18;10464:26;;10536:9;10530:4;10526:20;10522:1;10511:9;10507:17;10500:47;10564:131;10690:4;10564:131;:::i;:::-;10556:139;;10454:248;;;:::o;10708:419::-;;10912:2;10901:9;10897:18;10889:26;;10961:9;10955:4;10951:20;10947:1;10936:9;10932:17;10925:47;10989:131;11115:4;10989:131;:::i;:::-;10981:139;;10879:248;;;:::o;11133:419::-;;11337:2;11326:9;11322:18;11314:26;;11386:9;11380:4;11376:20;11372:1;11361:9;11357:17;11350:47;11414:131;11540:4;11414:131;:::i;:::-;11406:139;;11304:248;;;:::o;11558:419::-;;11762:2;11751:9;11747:18;11739:26;;11811:9;11805:4;11801:20;11797:1;11786:9;11782:17;11775:47;11839:131;11965:4;11839:131;:::i;:::-;11831:139;;11729:248;;;:::o;11983:419::-;;12187:2;12176:9;12172:18;12164:26;;12236:9;12230:4;12226:20;12222:1;12211:9;12207:17;12200:47;12264:131;12390:4;12264:131;:::i;:::-;12256:139;;12154:248;;;:::o;12408:419::-;;12612:2;12601:9;12597:18;12589:26;;12661:9;12655:4;12651:20;12647:1;12636:9;12632:17;12625:47;12689:131;12815:4;12689:131;:::i;:::-;12681:139;;12579:248;;;:::o;12833:419::-;;13037:2;13026:9;13022:18;13014:26;;13086:9;13080:4;13076:20;13072:1;13061:9;13057:17;13050:47;13114:131;13240:4;13114:131;:::i;:::-;13106:139;;13004:248;;;:::o;13258:222::-;;13389:2;13378:9;13374:18;13366:26;;13402:71;13470:1;13459:9;13455:17;13446:6;13402:71;:::i;:::-;13356:124;;;;:::o;13486:214::-;;13613:2;13602:9;13598:18;13590:26;;13626:67;13690:1;13679:9;13675:17;13666:6;13626:67;:::i;:::-;13580:120;;;;:::o;13706:99::-;;13792:5;13786:12;13776:22;;13765:40;;;:::o;13811:169::-;;13929:6;13924:3;13917:19;13969:4;13964:3;13960:14;13945:29;;13907:73;;;;:::o;13986:305::-;;14045:20;14063:1;14045:20;:::i;:::-;14040:25;;14079:20;14097:1;14079:20;:::i;:::-;14074:25;;14233:1;14165:66;14161:74;14158:1;14155:81;14152:2;;;14239:18;;:::i;:::-;14152:2;14283:1;14280;14276:9;14269:16;;14030:261;;;;:::o;14297:185::-;;14354:20;14372:1;14354:20;:::i;:::-;14349:25;;14388:20;14406:1;14388:20;:::i;:::-;14383:25;;14427:1;14417:2;;14432:18;;:::i;:::-;14417:2;14474:1;14471;14467:9;14462:14;;14339:143;;;;:::o;14488:348::-;;14551:20;14569:1;14551:20;:::i;:::-;14546:25;;14585:20;14603:1;14585:20;:::i;:::-;14580:25;;14773:1;14705:66;14701:74;14698:1;14695:81;14690:1;14683:9;14676:17;14672:105;14669:2;;;14780:18;;:::i;:::-;14669:2;14828:1;14825;14821:9;14810:20;;14536:300;;;;:::o;14842:96::-;;14908:24;14926:5;14908:24;:::i;:::-;14897:35;;14887:51;;;:::o;14944:90::-;;15021:5;15014:13;15007:21;14996:32;;14986:48;;;:::o;15040:126::-;;15117:42;15110:5;15106:54;15095:65;;15085:81;;;:::o;15172:77::-;;15238:5;15227:16;;15217:32;;;:::o;15255:86::-;;15330:4;15323:5;15319:16;15308:27;;15298:43;;;:::o;15347:307::-;15415:1;15425:113;15439:6;15436:1;15433:13;15425:113;;;15524:1;15519:3;15515:11;15509:18;15505:1;15500:3;15496:11;15489:39;15461:2;15458:1;15454:10;15449:15;;15425:113;;;15556:6;15553:1;15550:13;15547:2;;;15636:1;15627:6;15622:3;15618:16;15611:27;15547:2;15396:258;;;;:::o;15660:320::-;;15741:1;15735:4;15731:12;15721:22;;15788:1;15782:4;15778:12;15809:18;15799:2;;15865:4;15857:6;15853:17;15843:27;;15799:2;15927;15919:6;15916:14;15896:18;15893:38;15890:2;;;15946:18;;:::i;:::-;15890:2;15711:269;;;;:::o;15986:180::-;16034:77;16031:1;16024:88;16131:4;16128:1;16121:15;16155:4;16152:1;16145:15;16172:180;16220:77;16217:1;16210:88;16317:4;16314:1;16307:15;16341:4;16338:1;16331:15;16358:180;16406:77;16403:1;16396:88;16503:4;16500:1;16493:15;16527:4;16524:1;16517:15;16544:102;;16636:2;16632:7;16627:2;16620:5;16616:14;16612:28;16602:38;;16592:54;;;:::o;16652:122::-;16725:24;16743:5;16725:24;:::i;:::-;16718:5;16715:35;16705:2;;16764:1;16761;16754:12;16705:2;16695:79;:::o;16780:122::-;16853:24;16871:5;16853:24;:::i;:::-;16846:5;16843:35;16833:2;;16892:1;16889;16882:12;16833:2;16823:79;:::o

Swarm Source

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