ETH Price: $3,666.25 (+0.72%)

Token

Pepe Predator (SNAKE)
 

Overview

Max Total Supply

100,000,000 SNAKE

Holders

1,523

Market

Price

$0.00 @ 0.000000 ETH (-2.32%)

Onchain Market Cap

$149,434.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 SNAKE

Value
$0.00
0x7f4bd29e032e2bfb85af2e7293091a20aa005fff
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:
PepePredator

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// Website: https://pepepredator.com/

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (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/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (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 @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (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 @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (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/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.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.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 contracts/PepePredatorToken.sol



pragma solidity ^0.8.0;


contract PepePredator is Ownable, ERC20 {
    bool public limited;
    uint256 public maxHoldingAmount = 2 * 10 ** 6 * 10 ** 18;
    address public uniswapV2Pair;

    constructor() ERC20("Pepe Predator", "SNAKE") {
        _mint(msg.sender, 10 ** 8 * 10 ** 18);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount, "Forbid");
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"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"}],"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"}]

60806040526a01a784379d99db420000006007553480156200002057600080fd5b506040518060400160405280600d81526020017f50657065205072656461746f72000000000000000000000000000000000000008152506040518060400160405280600581526020017f534e414b45000000000000000000000000000000000000000000000000000000815250620000ad620000a1620000f660201b60201c565b620000fe60201b60201c565b8160049081620000be91906200082b565b508060059081620000d091906200082b565b505050620000f0336a52b7d2dcc80cd2e4000000620001c260201b60201c565b62000b11565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000234576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022b9062000973565b60405180910390fd5b62000248600083836200033b60201b60201c565b80600360008282546200025c9190620009c4565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002b49190620009c4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200031b919062000a10565b60405180910390a362000337600083836200053a60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200045e57620003a26200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004165750620003e76200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200044f9062000a7d565b60405180910390fd5b62000535565b600660009054906101000a900460ff168015620004c85750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620005345760075481620004e3846200056860201b60201c565b620004ef9190620009c4565b111562000533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200052a9062000aef565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063357607f821691505b602082108103620006495762000648620005eb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000674565b620006bf868362000674565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200070c620007066200070084620006d7565b620006e1565b620006d7565b9050919050565b6000819050919050565b6200072883620006eb565b62000740620007378262000713565b84845462000681565b825550505050565b600090565b6200075762000748565b620007648184846200071d565b505050565b5b818110156200078c57620007806000826200074d565b6001810190506200076a565b5050565b601f821115620007db57620007a5816200064f565b620007b08462000664565b81016020851015620007c0578190505b620007d8620007cf8562000664565b83018262000769565b50505b505050565b600082821c905092915050565b60006200080060001984600802620007e0565b1980831691505092915050565b60006200081b8383620007ed565b9150826002028217905092915050565b6200083682620005b1565b67ffffffffffffffff811115620008525762000851620005bc565b5b6200085e82546200061a565b6200086b82828562000790565b600060209050601f831160018114620008a357600084156200088e578287015190505b6200089a85826200080d565b8655506200090a565b601f198416620008b3866200064f565b60005b82811015620008dd57848901518255600182019150602085019450602081019050620008b6565b86831015620008fd5784890151620008f9601f891682620007ed565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200095b601f8362000912565b9150620009688262000923565b602082019050919050565b600060208201905081810360008301526200098e816200094c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009d182620006d7565b9150620009de83620006d7565b9250828201905080821115620009f957620009f862000995565b5b92915050565b62000a0a81620006d7565b82525050565b600060208201905062000a276000830184620009ff565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000a6560168362000912565b915062000a728262000a2d565b602082019050919050565b6000602082019050818103600083015262000a988162000a56565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b600062000ad760068362000912565b915062000ae48262000a9f565b602082019050919050565b6000602082019050818103600083015262000b0a8162000ac8565b9050919050565b6120188062000b216000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad57806395d89b411161007157806395d89b41146102fa578063a457c2d714610318578063a9059cbb14610348578063dd62ed3e14610378578063f2fde38b146103a857610121565b8063715018a61461027a5780637abf9d2614610284578063860a32ec146102a057806389f9a1d3146102be5780638da5cb5b146102dc57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806349bd5a5e1461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c4565b60405161013b91906114cb565b60405180910390f35b61015e60048036038101906101599190611586565b610456565b60405161016b91906115e1565b60405180910390f35b61017c610474565b604051610189919061160b565b60405180910390f35b6101ac60048036038101906101a79190611626565b61047e565b6040516101b991906115e1565b60405180910390f35b6101ca610576565b6040516101d79190611695565b60405180910390f35b6101fa60048036038101906101f59190611586565b61057f565b60405161020791906115e1565b60405180910390f35b61022a600480360381019061022591906116b0565b61062b565b005b610234610638565b60405161024191906116ec565b60405180910390f35b610264600480360381019061025f9190611707565b61065e565b604051610271919061160b565b60405180910390f35b6102826106a7565b005b61029e60048036038101906102999190611760565b61072f565b005b6102a8610812565b6040516102b591906115e1565b60405180910390f35b6102c6610825565b6040516102d3919061160b565b60405180910390f35b6102e461082b565b6040516102f191906116ec565b60405180910390f35b610302610854565b60405161030f91906114cb565b60405180910390f35b610332600480360381019061032d9190611586565b6108e6565b60405161033f91906115e1565b60405180910390f35b610362600480360381019061035d9190611586565b6109d1565b60405161036f91906115e1565b60405180910390f35b610392600480360381019061038d91906117b3565b6109ef565b60405161039f919061160b565b60405180910390f35b6103c260048036038101906103bd9190611707565b610a76565b005b6060600480546103d390611822565b80601f01602080910402602001604051908101604052809291908181526020018280546103ff90611822565b801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b5050505050905090565b600061046a610463610b6d565b8484610b75565b6001905092915050565b6000600354905090565b600061048b848484610d3e565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d6610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054d906118c5565b60405180910390fd5b61056a85610562610b6d565b858403610b75565b60019150509392505050565b60006012905090565b600061062161058c610b6d565b84846002600061059a610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461061c9190611914565b610b75565b6001905092915050565b6106353382610fc0565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106af610b6d565b73ffffffffffffffffffffffffffffffffffffffff166106cd61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611994565b60405180910390fd5b61072d6000611198565b565b610737610b6d565b73ffffffffffffffffffffffffffffffffffffffff1661075561082b565b73ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290611994565b60405180910390fd5b82600660006101000a81548160ff02191690831515021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600781905550505050565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461086390611822565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90611822565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b5050505050905090565b600080600260006108f5610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990611a26565b60405180910390fd5b6109c66109bd610b6d565b85858403610b75565b600191505092915050565b60006109e56109de610b6d565b8484610d3e565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a7e610b6d565b73ffffffffffffffffffffffffffffffffffffffff16610a9c61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990611994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890611ab8565b60405180910390fd5b610b6a81611198565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611b4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90611bdc565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d31919061160b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490611c6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390611d00565b60405180910390fd5b610e2783838361125c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590611d92565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f439190611914565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fa7919061160b565b60405180910390a3610fba848484611436565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690611e24565b60405180910390fd5b61103b8260008361125c565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990611eb6565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816003600082825461111a9190611ed6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117f919061160b565b60405180910390a361119383600084611436565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611369576112ba61082b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132557506112f661082b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90611f56565b60405180910390fd5b611431565b600660009054906101000a900460ff1680156113d25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561143057600754816113e48461065e565b6113ee9190611914565b111561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690611fc2565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561147557808201518184015260208101905061145a565b60008484015250505050565b6000601f19601f8301169050919050565b600061149d8261143b565b6114a78185611446565b93506114b7818560208601611457565b6114c081611481565b840191505092915050565b600060208201905081810360008301526114e58184611492565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061151d826114f2565b9050919050565b61152d81611512565b811461153857600080fd5b50565b60008135905061154a81611524565b92915050565b6000819050919050565b61156381611550565b811461156e57600080fd5b50565b6000813590506115808161155a565b92915050565b6000806040838503121561159d5761159c6114ed565b5b60006115ab8582860161153b565b92505060206115bc85828601611571565b9150509250929050565b60008115159050919050565b6115db816115c6565b82525050565b60006020820190506115f660008301846115d2565b92915050565b61160581611550565b82525050565b600060208201905061162060008301846115fc565b92915050565b60008060006060848603121561163f5761163e6114ed565b5b600061164d8682870161153b565b935050602061165e8682870161153b565b925050604061166f86828701611571565b9150509250925092565b600060ff82169050919050565b61168f81611679565b82525050565b60006020820190506116aa6000830184611686565b92915050565b6000602082840312156116c6576116c56114ed565b5b60006116d484828501611571565b91505092915050565b6116e681611512565b82525050565b600060208201905061170160008301846116dd565b92915050565b60006020828403121561171d5761171c6114ed565b5b600061172b8482850161153b565b91505092915050565b61173d816115c6565b811461174857600080fd5b50565b60008135905061175a81611734565b92915050565b600080600060608486031215611779576117786114ed565b5b60006117878682870161174b565b93505060206117988682870161153b565b92505060406117a986828701611571565b9150509250925092565b600080604083850312156117ca576117c96114ed565b5b60006117d88582860161153b565b92505060206117e98582860161153b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061183a57607f821691505b60208210810361184d5761184c6117f3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006118af602883611446565b91506118ba82611853565b604082019050919050565b600060208201905081810360008301526118de816118a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061191f82611550565b915061192a83611550565b9250828201905080821115611942576119416118e5565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061197e602083611446565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a10602583611446565b9150611a1b826119b4565b604082019050919050565b60006020820190508181036000830152611a3f81611a03565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611aa2602683611446565b9150611aad82611a46565b604082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b34602483611446565b9150611b3f82611ad8565b604082019050919050565b60006020820190508181036000830152611b6381611b27565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bc6602283611446565b9150611bd182611b6a565b604082019050919050565b60006020820190508181036000830152611bf581611bb9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c58602583611446565b9150611c6382611bfc565b604082019050919050565b60006020820190508181036000830152611c8781611c4b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611cea602383611446565b9150611cf582611c8e565b604082019050919050565b60006020820190508181036000830152611d1981611cdd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d7c602683611446565b9150611d8782611d20565b604082019050919050565b60006020820190508181036000830152611dab81611d6f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0e602183611446565b9150611e1982611db2565b604082019050919050565b60006020820190508181036000830152611e3d81611e01565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ea0602283611446565b9150611eab82611e44565b604082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b6000611ee182611550565b9150611eec83611550565b9250828203905081811115611f0457611f036118e5565b5b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000611f40601683611446565b9150611f4b82611f0a565b602082019050919050565b60006020820190508181036000830152611f6f81611f33565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000611fac600683611446565b9150611fb782611f76565b602082019050919050565b60006020820190508181036000830152611fdb81611f9f565b905091905056fea2646970667358221220fd03b577a113f5126f802ae4927974b3201bef5d9f13083bba8b2f2959d0e89664736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad57806395d89b411161007157806395d89b41146102fa578063a457c2d714610318578063a9059cbb14610348578063dd62ed3e14610378578063f2fde38b146103a857610121565b8063715018a61461027a5780637abf9d2614610284578063860a32ec146102a057806389f9a1d3146102be5780638da5cb5b146102dc57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806349bd5a5e1461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c4565b60405161013b91906114cb565b60405180910390f35b61015e60048036038101906101599190611586565b610456565b60405161016b91906115e1565b60405180910390f35b61017c610474565b604051610189919061160b565b60405180910390f35b6101ac60048036038101906101a79190611626565b61047e565b6040516101b991906115e1565b60405180910390f35b6101ca610576565b6040516101d79190611695565b60405180910390f35b6101fa60048036038101906101f59190611586565b61057f565b60405161020791906115e1565b60405180910390f35b61022a600480360381019061022591906116b0565b61062b565b005b610234610638565b60405161024191906116ec565b60405180910390f35b610264600480360381019061025f9190611707565b61065e565b604051610271919061160b565b60405180910390f35b6102826106a7565b005b61029e60048036038101906102999190611760565b61072f565b005b6102a8610812565b6040516102b591906115e1565b60405180910390f35b6102c6610825565b6040516102d3919061160b565b60405180910390f35b6102e461082b565b6040516102f191906116ec565b60405180910390f35b610302610854565b60405161030f91906114cb565b60405180910390f35b610332600480360381019061032d9190611586565b6108e6565b60405161033f91906115e1565b60405180910390f35b610362600480360381019061035d9190611586565b6109d1565b60405161036f91906115e1565b60405180910390f35b610392600480360381019061038d91906117b3565b6109ef565b60405161039f919061160b565b60405180910390f35b6103c260048036038101906103bd9190611707565b610a76565b005b6060600480546103d390611822565b80601f01602080910402602001604051908101604052809291908181526020018280546103ff90611822565b801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b5050505050905090565b600061046a610463610b6d565b8484610b75565b6001905092915050565b6000600354905090565b600061048b848484610d3e565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d6610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054d906118c5565b60405180910390fd5b61056a85610562610b6d565b858403610b75565b60019150509392505050565b60006012905090565b600061062161058c610b6d565b84846002600061059a610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461061c9190611914565b610b75565b6001905092915050565b6106353382610fc0565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106af610b6d565b73ffffffffffffffffffffffffffffffffffffffff166106cd61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611994565b60405180910390fd5b61072d6000611198565b565b610737610b6d565b73ffffffffffffffffffffffffffffffffffffffff1661075561082b565b73ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290611994565b60405180910390fd5b82600660006101000a81548160ff02191690831515021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600781905550505050565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461086390611822565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90611822565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b5050505050905090565b600080600260006108f5610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990611a26565b60405180910390fd5b6109c66109bd610b6d565b85858403610b75565b600191505092915050565b60006109e56109de610b6d565b8484610d3e565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a7e610b6d565b73ffffffffffffffffffffffffffffffffffffffff16610a9c61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990611994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890611ab8565b60405180910390fd5b610b6a81611198565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611b4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90611bdc565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d31919061160b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490611c6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390611d00565b60405180910390fd5b610e2783838361125c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590611d92565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f439190611914565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fa7919061160b565b60405180910390a3610fba848484611436565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690611e24565b60405180910390fd5b61103b8260008361125c565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990611eb6565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816003600082825461111a9190611ed6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117f919061160b565b60405180910390a361119383600084611436565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611369576112ba61082b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132557506112f661082b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90611f56565b60405180910390fd5b611431565b600660009054906101000a900460ff1680156113d25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561143057600754816113e48461065e565b6113ee9190611914565b111561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690611fc2565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561147557808201518184015260208101905061145a565b60008484015250505050565b6000601f19601f8301169050919050565b600061149d8261143b565b6114a78185611446565b93506114b7818560208601611457565b6114c081611481565b840191505092915050565b600060208201905081810360008301526114e58184611492565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061151d826114f2565b9050919050565b61152d81611512565b811461153857600080fd5b50565b60008135905061154a81611524565b92915050565b6000819050919050565b61156381611550565b811461156e57600080fd5b50565b6000813590506115808161155a565b92915050565b6000806040838503121561159d5761159c6114ed565b5b60006115ab8582860161153b565b92505060206115bc85828601611571565b9150509250929050565b60008115159050919050565b6115db816115c6565b82525050565b60006020820190506115f660008301846115d2565b92915050565b61160581611550565b82525050565b600060208201905061162060008301846115fc565b92915050565b60008060006060848603121561163f5761163e6114ed565b5b600061164d8682870161153b565b935050602061165e8682870161153b565b925050604061166f86828701611571565b9150509250925092565b600060ff82169050919050565b61168f81611679565b82525050565b60006020820190506116aa6000830184611686565b92915050565b6000602082840312156116c6576116c56114ed565b5b60006116d484828501611571565b91505092915050565b6116e681611512565b82525050565b600060208201905061170160008301846116dd565b92915050565b60006020828403121561171d5761171c6114ed565b5b600061172b8482850161153b565b91505092915050565b61173d816115c6565b811461174857600080fd5b50565b60008135905061175a81611734565b92915050565b600080600060608486031215611779576117786114ed565b5b60006117878682870161174b565b93505060206117988682870161153b565b92505060406117a986828701611571565b9150509250925092565b600080604083850312156117ca576117c96114ed565b5b60006117d88582860161153b565b92505060206117e98582860161153b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061183a57607f821691505b60208210810361184d5761184c6117f3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006118af602883611446565b91506118ba82611853565b604082019050919050565b600060208201905081810360008301526118de816118a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061191f82611550565b915061192a83611550565b9250828201905080821115611942576119416118e5565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061197e602083611446565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a10602583611446565b9150611a1b826119b4565b604082019050919050565b60006020820190508181036000830152611a3f81611a03565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611aa2602683611446565b9150611aad82611a46565b604082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b34602483611446565b9150611b3f82611ad8565b604082019050919050565b60006020820190508181036000830152611b6381611b27565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bc6602283611446565b9150611bd182611b6a565b604082019050919050565b60006020820190508181036000830152611bf581611bb9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c58602583611446565b9150611c6382611bfc565b604082019050919050565b60006020820190508181036000830152611c8781611c4b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611cea602383611446565b9150611cf582611c8e565b604082019050919050565b60006020820190508181036000830152611d1981611cdd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d7c602683611446565b9150611d8782611d20565b604082019050919050565b60006020820190508181036000830152611dab81611d6f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0e602183611446565b9150611e1982611db2565b604082019050919050565b60006020820190508181036000830152611e3d81611e01565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ea0602283611446565b9150611eab82611e44565b604082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b6000611ee182611550565b9150611eec83611550565b9250828203905081811115611f0457611f036118e5565b5b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000611f40601683611446565b9150611f4b82611f0a565b602082019050919050565b60006020820190508181036000830152611f6f81611f33565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000611fac600683611446565b9150611fb782611f76565b602082019050919050565b60006020820190508181036000830152611fdb81611f9f565b905091905056fea2646970667358221220fd03b577a113f5126f802ae4927974b3201bef5d9f13083bba8b2f2959d0e89664736f6c63430008130033

Deployed Bytecode Sourcemap

19392:1052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9353:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11520:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10473:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12171:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10315:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13072:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20360:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19528:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10644:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2754:103;;;:::i;:::-;;19675:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19439:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19465:56;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2103:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9572:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13790:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10984:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11222:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9353:100;9407:13;9440:5;9433:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9353:100;:::o;11520:169::-;11603:4;11620:39;11629:12;:10;:12::i;:::-;11643:7;11652:6;11620:8;:39::i;:::-;11677:4;11670:11;;11520:169;;;;:::o;10473:108::-;10534:7;10561:12;;10554:19;;10473:108;:::o;12171:492::-;12311:4;12328:36;12338:6;12346:9;12357:6;12328:9;:36::i;:::-;12377:24;12404:11;:19;12416:6;12404:19;;;;;;;;;;;;;;;:33;12424:12;:10;:12::i;:::-;12404:33;;;;;;;;;;;;;;;;12377:60;;12476:6;12456:16;:26;;12448:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12563:57;12572:6;12580:12;:10;:12::i;:::-;12613:6;12594:16;:25;12563:8;:57::i;:::-;12651:4;12644:11;;;12171:492;;;;;:::o;10315:93::-;10373:5;10398:2;10391:9;;10315:93;:::o;13072:215::-;13160:4;13177:80;13186:12;:10;:12::i;:::-;13200:7;13246:10;13209:11;:25;13221:12;:10;:12::i;:::-;13209:25;;;;;;;;;;;;;;;:34;13235:7;13209:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13177:8;:80::i;:::-;13275:4;13268:11;;13072:215;;;;:::o;20360:81::-;20409:24;20415:10;20427:5;20409;:24::i;:::-;20360:81;:::o;19528:28::-;;;;;;;;;;;;;:::o;10644:127::-;10718:7;10745:9;:18;10755:7;10745:18;;;;;;;;;;;;;;;;10738:25;;10644:127;;;:::o;2754:103::-;2334:12;:10;:12::i;:::-;2323:23;;:7;:5;:7::i;:::-;:23;;;2315:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2819:30:::1;2846:1;2819:18;:30::i;:::-;2754:103::o:0;19675:227::-;2334:12;:10;:12::i;:::-;2323:23;;:7;:5;:7::i;:::-;:23;;;2315:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19798:8:::1;19788:7;;:18;;;;;;;;;;;;;;;;;;19833:14;19817:13;;:30;;;;;;;;;;;;;;;;;;19877:17;19858:16;:36;;;;19675:227:::0;;;:::o;19439:19::-;;;;;;;;;;;;;:::o;19465:56::-;;;;:::o;2103:87::-;2149:7;2176:6;;;;;;;;;;;2169:13;;2103:87;:::o;9572:104::-;9628:13;9661:7;9654:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9572:104;:::o;13790:413::-;13883:4;13900:24;13927:11;:25;13939:12;:10;:12::i;:::-;13927:25;;;;;;;;;;;;;;;:34;13953:7;13927:34;;;;;;;;;;;;;;;;13900:61;;14000:15;13980:16;:35;;13972:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14093:67;14102:12;:10;:12::i;:::-;14116:7;14144:15;14125:16;:34;14093:8;:67::i;:::-;14191:4;14184:11;;;13790:413;;;;:::o;10984:175::-;11070:4;11087:42;11097:12;:10;:12::i;:::-;11111:9;11122:6;11087:9;:42::i;:::-;11147:4;11140:11;;10984:175;;;;:::o;11222:151::-;11311:7;11338:11;:18;11350:5;11338:18;;;;;;;;;;;;;;;:27;11357:7;11338:27;;;;;;;;;;;;;;;;11331:34;;11222:151;;;;:::o;3012:201::-;2334:12;:10;:12::i;:::-;2323:23;;:7;:5;:7::i;:::-;:23;;;2315:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3121:1:::1;3101:22;;:8;:22;;::::0;3093:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3177:28;3196:8;3177:18;:28::i;:::-;3012:201:::0;:::o;821:98::-;874:7;901:10;894:17;;821:98;:::o;17474:380::-;17627:1;17610:19;;:5;:19;;;17602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17708:1;17689:21;;:7;:21;;;17681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17792:6;17762:11;:18;17774:5;17762:18;;;;;;;;;;;;;;;:27;17781:7;17762:27;;;;;;;;;;;;;;;:36;;;;17830:7;17814:32;;17823:5;17814:32;;;17839:6;17814:32;;;;;;:::i;:::-;;;;;;;;17474:380;;;:::o;14693:733::-;14851:1;14833:20;;:6;:20;;;14825:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14935:1;14914:23;;:9;:23;;;14906:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14990:47;15011:6;15019:9;15030:6;14990:20;:47::i;:::-;15050:21;15074:9;:17;15084:6;15074:17;;;;;;;;;;;;;;;;15050:41;;15127:6;15110:13;:23;;15102:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15248:6;15232:13;:22;15212:9;:17;15222:6;15212:17;;;;;;;;;;;;;;;:42;;;;15300:6;15276:9;:20;15286:9;15276:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15341:9;15324:35;;15333:6;15324:35;;;15352:6;15324:35;;;;;;:::i;:::-;;;;;;;;15372:46;15392:6;15400:9;15411:6;15372:19;:46::i;:::-;14814:612;14693:733;;;:::o;16445:591::-;16548:1;16529:21;;:7;:21;;;16521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16601:49;16622:7;16639:1;16643:6;16601:20;:49::i;:::-;16663:22;16688:9;:18;16698:7;16688:18;;;;;;;;;;;;;;;;16663:43;;16743:6;16725:14;:24;;16717:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16862:6;16845:14;:23;16824:9;:18;16834:7;16824:18;;;;;;;;;;;;;;;:44;;;;16906:6;16890:12;;:22;;;;;;;:::i;:::-;;;;;;;;16956:1;16930:37;;16939:7;16930:37;;;16960:6;16930:37;;;;;;:::i;:::-;;;;;;;;16980:48;17000:7;17017:1;17021:6;16980:19;:48::i;:::-;16510:526;16445:591;;:::o;3373:191::-;3447:16;3466:6;;;;;;;;;;;3447:25;;3492:8;3483:6;;:17;;;;;;;;;;;;;;;;;;3547:8;3516:40;;3537:8;3516:40;;;;;;;;;;;;3436:128;3373:191;:::o;19910:442::-;20082:1;20057:27;;:13;;;;;;;;;;;:27;;;20053:148;;20117:7;:5;:7::i;:::-;20109:15;;:4;:15;;;:32;;;;20134:7;:5;:7::i;:::-;20128:13;;:2;:13;;;20109:32;20101:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20183:7;;20053:148;20217:7;;;;;;;;;;;:32;;;;;20236:13;;;;;;;;;;;20228:21;;:4;:21;;;20217:32;20213:132;;;20306:16;;20296:6;20274:19;20290:2;20274:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20266:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20213:132;19910:442;;;;:::o;19183:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:613::-;6210:6;6218;6226;6275:2;6263:9;6254:7;6250:23;6246:32;6243:119;;;6281:79;;:::i;:::-;6243:119;6401:1;6426:50;6468:7;6459:6;6448:9;6444:22;6426:50;:::i;:::-;6416:60;;6372:114;6525:2;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6496:118;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6136:613;;;;;:::o;6755:474::-;6823:6;6831;6880:2;6868:9;6859:7;6855:23;6851:32;6848:119;;;6886:79;;:::i;:::-;6848:119;7006:1;7031:53;7076:7;7067:6;7056:9;7052:22;7031:53;:::i;:::-;7021:63;;6977:117;7133:2;7159:53;7204:7;7195:6;7184:9;7180:22;7159:53;:::i;:::-;7149:63;;7104:118;6755:474;;;;;:::o;7235:180::-;7283:77;7280:1;7273:88;7380:4;7377:1;7370:15;7404:4;7401:1;7394:15;7421:320;7465:6;7502:1;7496:4;7492:12;7482:22;;7549:1;7543:4;7539:12;7570:18;7560:81;;7626:4;7618:6;7614:17;7604:27;;7560:81;7688:2;7680:6;7677:14;7657:18;7654:38;7651:84;;7707:18;;:::i;:::-;7651:84;7472:269;7421:320;;;:::o;7747:227::-;7887:34;7883:1;7875:6;7871:14;7864:58;7956:10;7951:2;7943:6;7939:15;7932:35;7747:227;:::o;7980:366::-;8122:3;8143:67;8207:2;8202:3;8143:67;:::i;:::-;8136:74;;8219:93;8308:3;8219:93;:::i;:::-;8337:2;8332:3;8328:12;8321:19;;7980:366;;;:::o;8352:419::-;8518:4;8556:2;8545:9;8541:18;8533:26;;8605:9;8599:4;8595:20;8591:1;8580:9;8576:17;8569:47;8633:131;8759:4;8633:131;:::i;:::-;8625:139;;8352:419;;;:::o;8777:180::-;8825:77;8822:1;8815:88;8922:4;8919:1;8912:15;8946:4;8943:1;8936:15;8963:191;9003:3;9022:20;9040:1;9022:20;:::i;:::-;9017:25;;9056:20;9074:1;9056:20;:::i;:::-;9051:25;;9099:1;9096;9092:9;9085:16;;9120:3;9117:1;9114:10;9111:36;;;9127:18;;:::i;:::-;9111:36;8963:191;;;;:::o;9160:182::-;9300:34;9296:1;9288:6;9284:14;9277:58;9160:182;:::o;9348:366::-;9490:3;9511:67;9575:2;9570:3;9511:67;:::i;:::-;9504:74;;9587:93;9676:3;9587:93;:::i;:::-;9705:2;9700:3;9696:12;9689:19;;9348:366;;;:::o;9720:419::-;9886:4;9924:2;9913:9;9909:18;9901:26;;9973:9;9967:4;9963:20;9959:1;9948:9;9944:17;9937:47;10001:131;10127:4;10001:131;:::i;:::-;9993:139;;9720:419;;;:::o;10145:224::-;10285:34;10281:1;10273:6;10269:14;10262:58;10354:7;10349:2;10341:6;10337:15;10330:32;10145:224;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10375:366;;;:::o;10747:419::-;10913:4;10951:2;10940:9;10936:18;10928:26;;11000:9;10994:4;10990:20;10986:1;10975:9;10971:17;10964:47;11028:131;11154:4;11028:131;:::i;:::-;11020:139;;10747:419;;;:::o;11172:225::-;11312:34;11308:1;11300:6;11296:14;11289:58;11381:8;11376:2;11368:6;11364:15;11357:33;11172:225;:::o;11403:366::-;11545:3;11566:67;11630:2;11625:3;11566:67;:::i;:::-;11559:74;;11642:93;11731:3;11642:93;:::i;:::-;11760:2;11755:3;11751:12;11744:19;;11403:366;;;:::o;11775:419::-;11941:4;11979:2;11968:9;11964:18;11956:26;;12028:9;12022:4;12018:20;12014:1;12003:9;11999:17;11992:47;12056:131;12182:4;12056:131;:::i;:::-;12048:139;;11775:419;;;:::o;12200:223::-;12340:34;12336:1;12328:6;12324:14;12317:58;12409:6;12404:2;12396:6;12392:15;12385:31;12200:223;:::o;12429:366::-;12571:3;12592:67;12656:2;12651:3;12592:67;:::i;:::-;12585:74;;12668:93;12757:3;12668:93;:::i;:::-;12786:2;12781:3;12777:12;12770:19;;12429:366;;;:::o;12801:419::-;12967:4;13005:2;12994:9;12990:18;12982:26;;13054:9;13048:4;13044:20;13040:1;13029:9;13025:17;13018:47;13082:131;13208:4;13082:131;:::i;:::-;13074:139;;12801:419;;;:::o;13226:221::-;13366:34;13362:1;13354:6;13350:14;13343:58;13435:4;13430:2;13422:6;13418:15;13411:29;13226:221;:::o;13453:366::-;13595:3;13616:67;13680:2;13675:3;13616:67;:::i;:::-;13609:74;;13692:93;13781:3;13692:93;:::i;:::-;13810:2;13805:3;13801:12;13794:19;;13453:366;;;:::o;13825:419::-;13991:4;14029:2;14018:9;14014:18;14006:26;;14078:9;14072:4;14068:20;14064:1;14053:9;14049:17;14042:47;14106:131;14232:4;14106:131;:::i;:::-;14098:139;;13825:419;;;:::o;14250:224::-;14390:34;14386:1;14378:6;14374:14;14367:58;14459:7;14454:2;14446:6;14442:15;14435:32;14250:224;:::o;14480:366::-;14622:3;14643:67;14707:2;14702:3;14643:67;:::i;:::-;14636:74;;14719:93;14808:3;14719:93;:::i;:::-;14837:2;14832:3;14828:12;14821:19;;14480:366;;;:::o;14852:419::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:131;15259:4;15133:131;:::i;:::-;15125:139;;14852:419;;;:::o;15277:222::-;15417:34;15413:1;15405:6;15401:14;15394:58;15486:5;15481:2;15473:6;15469:15;15462:30;15277:222;:::o;15505:366::-;15647:3;15668:67;15732:2;15727:3;15668:67;:::i;:::-;15661:74;;15744:93;15833:3;15744:93;:::i;:::-;15862:2;15857:3;15853:12;15846:19;;15505:366;;;:::o;15877:419::-;16043:4;16081:2;16070:9;16066:18;16058:26;;16130:9;16124:4;16120:20;16116:1;16105:9;16101:17;16094:47;16158:131;16284:4;16158:131;:::i;:::-;16150:139;;15877:419;;;:::o;16302:225::-;16442:34;16438:1;16430:6;16426:14;16419:58;16511:8;16506:2;16498:6;16494:15;16487:33;16302:225;:::o;16533:366::-;16675:3;16696:67;16760:2;16755:3;16696:67;:::i;:::-;16689:74;;16772:93;16861:3;16772:93;:::i;:::-;16890:2;16885:3;16881:12;16874:19;;16533:366;;;:::o;16905:419::-;17071:4;17109:2;17098:9;17094:18;17086:26;;17158:9;17152:4;17148:20;17144:1;17133:9;17129:17;17122:47;17186:131;17312:4;17186:131;:::i;:::-;17178:139;;16905:419;;;:::o;17330:220::-;17470:34;17466:1;17458:6;17454:14;17447:58;17539:3;17534:2;17526:6;17522:15;17515:28;17330:220;:::o;17556:366::-;17698:3;17719:67;17783:2;17778:3;17719:67;:::i;:::-;17712:74;;17795:93;17884:3;17795:93;:::i;:::-;17913:2;17908:3;17904:12;17897:19;;17556:366;;;:::o;17928:419::-;18094:4;18132:2;18121:9;18117:18;18109:26;;18181:9;18175:4;18171:20;18167:1;18156:9;18152:17;18145:47;18209:131;18335:4;18209:131;:::i;:::-;18201:139;;17928:419;;;:::o;18353:221::-;18493:34;18489:1;18481:6;18477:14;18470:58;18562:4;18557:2;18549:6;18545:15;18538:29;18353:221;:::o;18580:366::-;18722:3;18743:67;18807:2;18802:3;18743:67;:::i;:::-;18736:74;;18819:93;18908:3;18819:93;:::i;:::-;18937:2;18932:3;18928:12;18921:19;;18580:366;;;:::o;18952:419::-;19118:4;19156:2;19145:9;19141:18;19133:26;;19205:9;19199:4;19195:20;19191:1;19180:9;19176:17;19169:47;19233:131;19359:4;19233:131;:::i;:::-;19225:139;;18952:419;;;:::o;19377:194::-;19417:4;19437:20;19455:1;19437:20;:::i;:::-;19432:25;;19471:20;19489:1;19471:20;:::i;:::-;19466:25;;19515:1;19512;19508:9;19500:17;;19539:1;19533:4;19530:11;19527:37;;;19544:18;;:::i;:::-;19527:37;19377:194;;;;:::o;19577:172::-;19717:24;19713:1;19705:6;19701:14;19694:48;19577:172;:::o;19755:366::-;19897:3;19918:67;19982:2;19977:3;19918:67;:::i;:::-;19911:74;;19994:93;20083:3;19994:93;:::i;:::-;20112:2;20107:3;20103:12;20096:19;;19755:366;;;:::o;20127:419::-;20293:4;20331:2;20320:9;20316:18;20308:26;;20380:9;20374:4;20370:20;20366:1;20355:9;20351:17;20344:47;20408:131;20534:4;20408:131;:::i;:::-;20400:139;;20127:419;;;:::o;20552:156::-;20692:8;20688:1;20680:6;20676:14;20669:32;20552:156;:::o;20714:365::-;20856:3;20877:66;20941:1;20936:3;20877:66;:::i;:::-;20870:73;;20952:93;21041:3;20952:93;:::i;:::-;21070:2;21065:3;21061:12;21054:19;;20714:365;;;:::o;21085:419::-;21251:4;21289:2;21278:9;21274:18;21266:26;;21338:9;21332:4;21328:20;21324:1;21313:9;21309:17;21302:47;21366:131;21492:4;21366:131;:::i;:::-;21358:139;;21085:419;;;:::o

Swarm Source

ipfs://fd03b577a113f5126f802ae4927974b3201bef5d9f13083bba8b2f2959d0e896
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.