ETH Price: $3,607.28 (+9.27%)

Token

Pepe Johns Pizza (PEPEJON)
 

Overview

Max Total Supply

1,000,000,000,000 PEPEJON

Holders

336

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,000,000 PEPEJON

Value
$0.00
0xa70f6a79ff50ac6a2df64463d2984b60e19e7fd7
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:
PEPEJON

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract PEPEJON is IERC20, Ownable {

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;
    
    uint256 private _maxAddressAmt;
    mapping (address => bool) private _maxAddressAmtExcluded;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    mapping (address => bool) public _blacklisted;

    constructor() {

        _name = "Pepe Johns Pizza";
        _symbol = "PEPEJON";

        _decimals = 18;
        _totalSupply = 1000000000000e18;

        _maxAddressAmt = _totalSupply;

        setMaxAddressAmtExcluded(_msgSender(), true);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function setMaxAddressAmt(uint256 amount) public onlyOwner {
        require(amount > 0 && amount <= _totalSupply, "Invalid max amount per address");
        _maxAddressAmt = amount;
    }

    function setMaxAddressAmtExcluded(address a, bool excluded) public onlyOwner {
        require(a != address(0), "Address must not be zero address");
        _maxAddressAmtExcluded[a] = excluded;
    }

    function setBlacklisted(address[] calldata a, bool blacklisted) external onlyOwner() {
        for (uint256 i = 0; i < a.length; i++) {
            _blacklisted[a[i]] = blacklisted;
        }
    }

    function burn(uint256 amount) external {
        _burn(_msgSender(), 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);
    }

    function _beforeTokenTransfer(address sender, address recipient, uint256 amount) internal virtual {
        require(!_blacklisted[sender] && !_blacklisted[recipient], "Blacklisted");
    }

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {
        if (!_maxAddressAmtExcluded[to]) {
            require(balanceOf(to) <= _maxAddressAmt, "Cannot exceed max amount per address");
        }
    }
	
    /**
     * @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);
    }

    function name() public view override returns (string memory) {
        return _name;
    }

    function symbol() public view override returns (string memory) {
        return _symbol;
    }

    function decimals() public view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

}

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":"","type":"address"}],"name":"_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"amount","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":"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":"a","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxAddressAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setMaxAddressAmtExcluded","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":"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"}]

60806040523480156200001157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152601081526f50657065204a6f686e732050697a7a6160801b6020820152600690620000899082620002c7565b50604080518082019091526007808252662822a822a527a760c91b602083015290620000b69082620002c7565b506008805460ff191660121790556c0c9f2c9cd04674edea400000006003819055600455620000ee620000e63390565b60016200013f565b60035433600081815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000393565b6000546001600160a01b031633146200019f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038216620001f75760405162461bcd60e51b815260206004820181905260248201527f41646472657373206d757374206e6f74206265207a65726f2061646472657373604482015260640162000196565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024d57607f821691505b6020821081036200026e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002c257600081815260208120601f850160051c810160208610156200029d5750805b601f850160051c820191505b81811015620002be57828155600101620002a9565b5050505b505050565b81516001600160401b03811115620002e357620002e362000222565b620002fb81620002f4845462000238565b8462000274565b602080601f8311600181146200033357600084156200031a5750858301515b600019600386901b1c1916600185901b178555620002be565b600085815260208120601f198616915b82811015620003645788860151825594840194600190910190840162000343565b5085821015620003835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61107880620003a36000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637a6d69b4116100ad578063a457c2d711610071578063a457c2d714610266578063a9059cbb14610279578063dd62ed3e1461028c578063e1baae1f1461029f578063f2fde38b146102b257600080fd5b80637a6d69b4146101fa5780638da5cb5b1461021d57806395d89b4114610238578063a2b85d7214610240578063a32e7d461461025357600080fd5b8063313ce567116100f4578063313ce5671461018c57806339509351146101a157806342966c68146101b457806370a08231146101c9578063715018a6146101f257600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102c5565b60405161013b9190610d7f565b60405180910390f35b610157610152366004610de9565b610357565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610e13565b61036e565b60085460405160ff909116815260200161013b565b6101576101af366004610de9565b610392565b6101c76101c2366004610e4f565b6103be565b005b61016b6101d7366004610e68565b6001600160a01b031660009081526001602052604090205490565b6101c76103cb565b610157610208366004610e68565b60096020526000908152604090205460ff1681565b6000546040516001600160a01b03909116815260200161013b565b61012e610448565b6101c761024e366004610e4f565b610457565b6101c7610261366004610e9a565b6104e4565b610157610274366004610de9565b61058f565b610157610287366004610de9565b61060a565b61016b61029a366004610ecd565b610617565b6101c76102ad366004610ef7565b610642565b6101c76102c0366004610e68565b6106e3565b6060600680546102d490610f7b565b80601f016020809104026020016040519081016040528092919081815260200182805461030090610f7b565b801561034d5780601f106103225761010080835404028352916020019161034d565b820191906000526020600020905b81548152906001019060200180831161033057829003601f168201915b5050505050905090565b60006103643384846107cd565b5060015b92915050565b60003361037c8582856108f1565b610387858585610965565b506001949350505050565b6000336103b48185856103a58383610617565b6103af9190610fcb565b6107cd565b5060019392505050565b6103c83382610b21565b50565b6000546001600160a01b031633146103fe5760405162461bcd60e51b81526004016103f590610fde565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600780546102d490610f7b565b6000546001600160a01b031633146104815760405162461bcd60e51b81526004016103f590610fde565b60008111801561049357506003548111155b6104df5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206d617820616d6f756e74207065722061646472657373000060448201526064016103f5565b600455565b6000546001600160a01b0316331461050e5760405162461bcd60e51b81526004016103f590610fde565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820181905260248201527f41646472657373206d757374206e6f74206265207a65726f206164647265737360448201526064016103f5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000338161059d8286610617565b9050838110156105fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f5565b61038782868684036107cd565b6000610364338484610965565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b0316331461066c5760405162461bcd60e51b81526004016103f590610fde565b60005b828110156106dd57816009600086868581811061068e5761068e611013565b90506020020160208101906106a39190610e68565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806106d581611029565b91505061066f565b50505050565b6000546001600160a01b0316331461070d5760405162461bcd60e51b81526004016103f590610fde565b6001600160a01b0381166107725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661082f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f5565b6001600160a01b0382166108905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f5565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108fd8484610617565b905060001981146106dd57818110156109585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f5565b6106dd84848484036107cd565b6001600160a01b0383166109c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f5565b6001600160a01b038216610a2b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f5565b610a36838383610c6d565b6001600160a01b03831660009081526001602052604090205481811015610aae5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f5565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b0e9086815260200190565b60405180910390a36106dd848484610ce9565b6001600160a01b038216610b815760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103f5565b610b8d82600083610c6d565b6001600160a01b03821660009081526001602052604090205481811015610c015760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103f5565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c6883600084610ce9565b505050565b6001600160a01b03831660009081526009602052604090205460ff16158015610caf57506001600160a01b03821660009081526009602052604090205460ff16155b610c685760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016103f5565b6001600160a01b03821660009081526005602052604090205460ff16610c68576004546001600160a01b0383166000908152600160205260409020541115610c685760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420657863656564206d617820616d6f756e7420706572206164646044820152637265737360e01b60648201526084016103f5565b600060208083528351808285015260005b81811015610dac57858101830151858201604001528201610d90565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de457600080fd5b919050565b60008060408385031215610dfc57600080fd5b610e0583610dcd565b946020939093013593505050565b600080600060608486031215610e2857600080fd5b610e3184610dcd565b9250610e3f60208501610dcd565b9150604084013590509250925092565b600060208284031215610e6157600080fd5b5035919050565b600060208284031215610e7a57600080fd5b610e8382610dcd565b9392505050565b80358015158114610de457600080fd5b60008060408385031215610ead57600080fd5b610eb683610dcd565b9150610ec460208401610e8a565b90509250929050565b60008060408385031215610ee057600080fd5b610ee983610dcd565b9150610ec460208401610dcd565b600080600060408486031215610f0c57600080fd5b833567ffffffffffffffff80821115610f2457600080fd5b818601915086601f830112610f3857600080fd5b813581811115610f4757600080fd5b8760208260051b8501011115610f5c57600080fd5b602092830195509350610f729186019050610e8a565b90509250925092565b600181811c90821680610f8f57607f821691505b602082108103610faf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561036857610368610fb5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161103b5761103b610fb5565b506001019056fea26469706673582212201e2240a8e54d308470113783bde8d3561549e88f51b196a3780747e19b8b7ba764736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637a6d69b4116100ad578063a457c2d711610071578063a457c2d714610266578063a9059cbb14610279578063dd62ed3e1461028c578063e1baae1f1461029f578063f2fde38b146102b257600080fd5b80637a6d69b4146101fa5780638da5cb5b1461021d57806395d89b4114610238578063a2b85d7214610240578063a32e7d461461025357600080fd5b8063313ce567116100f4578063313ce5671461018c57806339509351146101a157806342966c68146101b457806370a08231146101c9578063715018a6146101f257600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102c5565b60405161013b9190610d7f565b60405180910390f35b610157610152366004610de9565b610357565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610e13565b61036e565b60085460405160ff909116815260200161013b565b6101576101af366004610de9565b610392565b6101c76101c2366004610e4f565b6103be565b005b61016b6101d7366004610e68565b6001600160a01b031660009081526001602052604090205490565b6101c76103cb565b610157610208366004610e68565b60096020526000908152604090205460ff1681565b6000546040516001600160a01b03909116815260200161013b565b61012e610448565b6101c761024e366004610e4f565b610457565b6101c7610261366004610e9a565b6104e4565b610157610274366004610de9565b61058f565b610157610287366004610de9565b61060a565b61016b61029a366004610ecd565b610617565b6101c76102ad366004610ef7565b610642565b6101c76102c0366004610e68565b6106e3565b6060600680546102d490610f7b565b80601f016020809104026020016040519081016040528092919081815260200182805461030090610f7b565b801561034d5780601f106103225761010080835404028352916020019161034d565b820191906000526020600020905b81548152906001019060200180831161033057829003601f168201915b5050505050905090565b60006103643384846107cd565b5060015b92915050565b60003361037c8582856108f1565b610387858585610965565b506001949350505050565b6000336103b48185856103a58383610617565b6103af9190610fcb565b6107cd565b5060019392505050565b6103c83382610b21565b50565b6000546001600160a01b031633146103fe5760405162461bcd60e51b81526004016103f590610fde565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600780546102d490610f7b565b6000546001600160a01b031633146104815760405162461bcd60e51b81526004016103f590610fde565b60008111801561049357506003548111155b6104df5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206d617820616d6f756e74207065722061646472657373000060448201526064016103f5565b600455565b6000546001600160a01b0316331461050e5760405162461bcd60e51b81526004016103f590610fde565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820181905260248201527f41646472657373206d757374206e6f74206265207a65726f206164647265737360448201526064016103f5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000338161059d8286610617565b9050838110156105fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f5565b61038782868684036107cd565b6000610364338484610965565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b0316331461066c5760405162461bcd60e51b81526004016103f590610fde565b60005b828110156106dd57816009600086868581811061068e5761068e611013565b90506020020160208101906106a39190610e68565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806106d581611029565b91505061066f565b50505050565b6000546001600160a01b0316331461070d5760405162461bcd60e51b81526004016103f590610fde565b6001600160a01b0381166107725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661082f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f5565b6001600160a01b0382166108905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f5565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108fd8484610617565b905060001981146106dd57818110156109585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f5565b6106dd84848484036107cd565b6001600160a01b0383166109c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f5565b6001600160a01b038216610a2b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f5565b610a36838383610c6d565b6001600160a01b03831660009081526001602052604090205481811015610aae5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f5565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b0e9086815260200190565b60405180910390a36106dd848484610ce9565b6001600160a01b038216610b815760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103f5565b610b8d82600083610c6d565b6001600160a01b03821660009081526001602052604090205481811015610c015760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103f5565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c6883600084610ce9565b505050565b6001600160a01b03831660009081526009602052604090205460ff16158015610caf57506001600160a01b03821660009081526009602052604090205460ff16155b610c685760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016103f5565b6001600160a01b03821660009081526005602052604090205460ff16610c68576004546001600160a01b0383166000908152600160205260409020541115610c685760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420657863656564206d617820616d6f756e7420706572206164646044820152637265737360e01b60648201526084016103f5565b600060208083528351808285015260005b81811015610dac57858101830151858201604001528201610d90565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de457600080fd5b919050565b60008060408385031215610dfc57600080fd5b610e0583610dcd565b946020939093013593505050565b600080600060608486031215610e2857600080fd5b610e3184610dcd565b9250610e3f60208501610dcd565b9150604084013590509250925092565b600060208284031215610e6157600080fd5b5035919050565b600060208284031215610e7a57600080fd5b610e8382610dcd565b9392505050565b80358015158114610de457600080fd5b60008060408385031215610ead57600080fd5b610eb683610dcd565b9150610ec460208401610e8a565b90509250929050565b60008060408385031215610ee057600080fd5b610ee983610dcd565b9150610ec460208401610dcd565b600080600060408486031215610f0c57600080fd5b833567ffffffffffffffff80821115610f2457600080fd5b818601915086601f830112610f3857600080fd5b813581811115610f4757600080fd5b8760208260051b8501011115610f5c57600080fd5b602092830195509350610f729186019050610e8a565b90509250925092565b600181811c90821680610f8f57607f821691505b602082108103610faf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561036857610368610fb5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161103b5761103b610fb5565b506001019056fea26469706673582212201e2240a8e54d308470113783bde8d3561549e88f51b196a3780747e19b8b7ba764736f6c63430008120033

Deployed Bytecode Sourcemap

4073:9308:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9189:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10070:169;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;10070:169:0;1004:187:1;9493:100:0;9573:12;;9493:100;;;1342:25:1;;;1330:2;1315:18;9493:100:0;1196:177:1;11529:261:0;;;;;;:::i;:::-;;:::i;9393:92::-;9468:9;;9393:92;;9468:9;;;;1853:36:1;;1841:2;1826:18;9393:92:0;1711:184:1;12199:238:0;;;;;;:::i;:::-;;:::i;5541:85::-;;;;;;:::i;:::-;;:::i;:::-;;9601:119;;;;;;:::i;:::-;-1:-1:-1;;;;;9694:18:0;9667:7;9694:18;;;:9;:18;;;;;;;9601:119;2663:148;;;:::i;4486:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2012:87;2058:7;2085:6;2012:87;;-1:-1:-1;;;;;2085:6:0;;;2422:51:1;;2410:2;2395:18;2012:87:0;2276:203:1;9289:96:0;;;:::i;4922:191::-;;;;;;:::i;:::-;;:::i;5121:203::-;;;;;;:::i;:::-;;:::i;12940:436::-;;;;;;:::i;:::-;;:::i;9728:175::-;;;;;;:::i;:::-;;:::i;9911:151::-;;;;;;:::i;:::-;;:::i;5332:201::-;;;;;;:::i;:::-;;:::i;2966:244::-;;;;;;:::i;:::-;;:::i;9189:92::-;9235:13;9268:5;9261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9189:92;:::o;10070:169::-;10153:4;10170:39;681:10;10193:7;10202:6;10170:8;:39::i;:::-;-1:-1:-1;10227:4:0;10070:169;;;;;:::o;11529:261::-;11626:4;681:10;11684:38;11700:4;681:10;11715:6;11684:15;:38::i;:::-;11733:27;11743:4;11749:2;11753:6;11733:9;:27::i;:::-;-1:-1:-1;11778:4:0;;11529:261;-1:-1:-1;;;;11529:261:0:o;12199:238::-;12287:4;681:10;12343:64;681:10;12359:7;12396:10;12368:25;681:10;12359:7;12368:9;:25::i;:::-;:38;;;;:::i;:::-;12343:8;:64::i;:::-;-1:-1:-1;12425:4:0;;12199:238;-1:-1:-1;;;12199:238:0:o;5541:85::-;5591:27;681:10;5611:6;5591:5;:27::i;:::-;5541:85;:::o;2663:148::-;2058:7;2085:6;-1:-1:-1;;;;;2085:6:0;681:10;2232:23;2224:68;;;;-1:-1:-1;;;2224:68:0;;;;;;;:::i;:::-;;;;;;;;;2770:1:::1;2754:6:::0;;2733:40:::1;::::0;-1:-1:-1;;;;;2754:6:0;;::::1;::::0;2733:40:::1;::::0;2770:1;;2733:40:::1;2801:1;2784:19:::0;;-1:-1:-1;;;;;;2784:19:0::1;::::0;;2663:148::o;9289:96::-;9337:13;9370:7;9363:14;;;;;:::i;4922:191::-;2058:7;2085:6;-1:-1:-1;;;;;2085:6:0;681:10;2232:23;2224:68;;;;-1:-1:-1;;;2224:68:0;;;;;;;:::i;:::-;5009:1:::1;5000:6;:10;:36;;;;;5024:12;;5014:6;:22;;5000:36;4992:79;;;::::0;-1:-1:-1;;;4992:79:0;;5077:2:1;4992:79:0::1;::::0;::::1;5059:21:1::0;5116:2;5096:18;;;5089:30;5155:32;5135:18;;;5128:60;5205:18;;4992:79:0::1;4875:354:1::0;4992:79:0::1;5082:14;:23:::0;4922:191::o;5121:203::-;2058:7;2085:6;-1:-1:-1;;;;;2085:6:0;681:10;2232:23;2224:68;;;;-1:-1:-1;;;2224:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5217:15:0;::::1;5209:60;;;::::0;-1:-1:-1;;;5209:60:0;;5436:2:1;5209:60:0::1;::::0;::::1;5418:21:1::0;;;5455:18;;;5448:30;5514:34;5494:18;;;5487:62;5566:18;;5209:60:0::1;5234:356:1::0;5209:60:0::1;-1:-1:-1::0;;;;;5280:25:0;;;::::1;;::::0;;;:22:::1;:25;::::0;;;;:36;;-1:-1:-1;;5280:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5121:203::o;12940:436::-;13033:4;681:10;13033:4;13116:25;681:10;13133:7;13116:9;:25::i;:::-;13089:52;;13180:15;13160:16;:35;;13152:85;;;;-1:-1:-1;;;13152:85:0;;5797:2:1;13152:85:0;;;5779:21:1;5836:2;5816:18;;;5809:30;5875:34;5855:18;;;5848:62;-1:-1:-1;;;5926:18:1;;;5919:35;5971:19;;13152:85:0;5595:401:1;13152:85:0;13273:60;13282:5;13289:7;13317:15;13298:16;:34;13273:8;:60::i;9728:175::-;9814:4;9831:42;681:10;9855:9;9866:6;9831:9;:42::i;9911:151::-;-1:-1:-1;;;;;10027:18:0;;;10000:7;10027:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9911:151::o;5332:201::-;2058:7;2085:6;-1:-1:-1;;;;;2085:6:0;681:10;2232:23;2224:68;;;;-1:-1:-1;;;2224:68:0;;;;;;;:::i;:::-;5433:9:::1;5428:98;5448:12:::0;;::::1;5428:98;;;5503:11;5482:12;:18;5495:1;;5497;5495:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5482:18:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;5482:18:0;:32;;-1:-1:-1;;5482:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5462:3;::::1;::::0;::::1;:::i;:::-;;;;5428:98;;;;5332:201:::0;;;:::o;2966:244::-;2058:7;2085:6;-1:-1:-1;;;;;2085:6:0;681:10;2232:23;2224:68;;;;-1:-1:-1;;;2224:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3055:22:0;::::1;3047:73;;;::::0;-1:-1:-1;;;3047:73:0;;6475:2:1;3047:73:0::1;::::0;::::1;6457:21:1::0;6514:2;6494:18;;;6487:30;6553:34;6533:18;;;6526:62;-1:-1:-1;;;6604:18:1;;;6597:36;6650:19;;3047:73:0::1;6273:402:1::0;3047:73:0::1;3157:6;::::0;;3136:38:::1;::::0;-1:-1:-1;;;;;3136:38:0;;::::1;::::0;3157:6;::::1;::::0;3136:38:::1;::::0;::::1;3185:6;:17:::0;;-1:-1:-1;;;;;;3185:17:0::1;-1:-1:-1::0;;;;;3185:17:0;;;::::1;::::0;;;::::1;::::0;;2966:244::o;7072:346::-;-1:-1:-1;;;;;7174:19:0;;7166:68;;;;-1:-1:-1;;;7166:68:0;;6882:2:1;7166:68:0;;;6864:21:1;6921:2;6901:18;;;6894:30;6960:34;6940:18;;;6933:62;-1:-1:-1;;;7011:18:1;;;7004:34;7055:19;;7166:68:0;6680:400:1;7166:68:0;-1:-1:-1;;;;;7253:21:0;;7245:68;;;;-1:-1:-1;;;7245:68:0;;7287:2:1;7245:68:0;;;7269:21:1;7326:2;7306:18;;;7299:30;7365:34;7345:18;;;7338:62;-1:-1:-1;;;7416:18:1;;;7409:32;7458:19;;7245:68:0;7085:398:1;7245:68:0;-1:-1:-1;;;;;7326:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7378:32;;1342:25:1;;;7378:32:0;;1315:18:1;7378:32:0;;;;;;;7072:346;;;:::o;10530:419::-;10631:24;10658:25;10668:5;10675:7;10658:9;:25::i;:::-;10631:52;;-1:-1:-1;;10698:16:0;:37;10694:248;;10780:6;10760:16;:26;;10752:68;;;;-1:-1:-1;;;10752:68:0;;7690:2:1;10752:68:0;;;7672:21:1;7729:2;7709:18;;;7702:30;7768:31;7748:18;;;7741:59;7817:18;;10752:68:0;7488:353:1;10752:68:0;10864:51;10873:5;10880:7;10908:6;10889:16;:25;10864:8;:51::i;8341:840::-;-1:-1:-1;;;;;8472:18:0;;8464:68;;;;-1:-1:-1;;;8464:68:0;;8048:2:1;8464:68:0;;;8030:21:1;8087:2;8067:18;;;8060:30;8126:34;8106:18;;;8099:62;-1:-1:-1;;;8177:18:1;;;8170:35;8222:19;;8464:68:0;7846:401:1;8464:68:0;-1:-1:-1;;;;;8551:16:0;;8543:64;;;;-1:-1:-1;;;8543:64:0;;8454:2:1;8543:64:0;;;8436:21:1;8493:2;8473:18;;;8466:30;8532:34;8512:18;;;8505:62;-1:-1:-1;;;8583:18:1;;;8576:33;8626:19;;8543:64:0;8252:399:1;8543:64:0;8620:38;8641:4;8647:2;8651:6;8620:20;:38::i;:::-;-1:-1:-1;;;;;8693:15:0;;8671:19;8693:15;;;:9;:15;;;;;;8727:21;;;;8719:72;;;;-1:-1:-1;;;8719:72:0;;8858:2:1;8719:72:0;;;8840:21:1;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:1;;;8980:36;9033:19;;8719:72:0;8656:402:1;8719:72:0;-1:-1:-1;;;;;8827:15:0;;;;;;;:9;:15;;;;;;8845:20;;;8827:38;;9045:13;;;;;;;;;;:23;;;;;;9097:26;;;;;;8859:6;1342:25:1;;1330:2;1315:18;;1196:177;9097:26:0;;;;;;;;9136:37;9156:4;9162:2;9166:6;9136:19;:37::i;5959:675::-;-1:-1:-1;;;;;6043:21:0;;6035:67;;;;-1:-1:-1;;;6035:67:0;;9265:2:1;6035:67:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:31;9435:19;;6035:67:0;9063:397:1;6035:67:0;6115:49;6136:7;6153:1;6157:6;6115:20;:49::i;:::-;-1:-1:-1;;;;;6202:18:0;;6177:22;6202:18;;;:9;:18;;;;;;6239:24;;;;6231:71;;;;-1:-1:-1;;;6231:71:0;;9667:2:1;6231:71:0;;;9649:21:1;9706:2;9686:18;;;9679:30;9745:34;9725:18;;;9718:62;-1:-1:-1;;;9796:18:1;;;9789:32;9838:19;;6231:71:0;9465:398:1;6231:71:0;-1:-1:-1;;;;;6338:18:0;;;;;;:9;:18;;;;;;;;6359:23;;;6338:44;;6477:12;:22;;;;;;;6528:37;1342:25:1;;;6338:18:0;;;6528:37;;1315:18:1;6528:37:0;;;;;;;6578:48;6598:7;6615:1;6619:6;6578:19;:48::i;:::-;6024:610;5959:675;;:::o;7426:190::-;-1:-1:-1;;;;;7544:20:0;;;;;;:12;:20;;;;;;;;7543:21;:49;;;;-1:-1:-1;;;;;;7569:23:0;;;;;;:12;:23;;;;;;;;7568:24;7543:49;7535:73;;;;-1:-1:-1;;;7535:73:0;;10070:2:1;7535:73:0;;;10052:21:1;10109:2;10089:18;;;10082:30;-1:-1:-1;;;10128:18:1;;;10121:41;10179:18;;7535:73:0;9868:335:1;7624:246:0;-1:-1:-1;;;;;7728:26:0;;;;;;:22;:26;;;;;;;;7723:140;;7796:14;;-1:-1:-1;;;;;9694:18:0;;9667:7;9694:18;;;:9;:18;;;;;;7779:31;;7771:80;;;;-1:-1:-1;;;7771:80:0;;10410:2:1;7771:80:0;;;10392:21:1;10449:2;10429:18;;;10422:30;10488:34;10468:18;;;10461:62;-1:-1:-1;;;10539:18:1;;;10532:34;10583:19;;7771:80:0;10208:400:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:1:o;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2649:254;2714:6;2722;2775:2;2763:9;2754:7;2750:23;2746:32;2743:52;;;2791:1;2788;2781:12;2743:52;2814:29;2833:9;2814:29;:::i;:::-;2804:39;;2862:35;2893:2;2882:9;2878:18;2862:35;:::i;:::-;2852:45;;2649:254;;;;;:::o;2908:260::-;2976:6;2984;3037:2;3025:9;3016:7;3012:23;3008:32;3005:52;;;3053:1;3050;3043:12;3005:52;3076:29;3095:9;3076:29;:::i;:::-;3066:39;;3124:38;3158:2;3147:9;3143:18;3124:38;:::i;3173:689::-;3265:6;3273;3281;3334:2;3322:9;3313:7;3309:23;3305:32;3302:52;;;3350:1;3347;3340:12;3302:52;3390:9;3377:23;3419:18;3460:2;3452:6;3449:14;3446:34;;;3476:1;3473;3466:12;3446:34;3514:6;3503:9;3499:22;3489:32;;3559:7;3552:4;3548:2;3544:13;3540:27;3530:55;;3581:1;3578;3571:12;3530:55;3621:2;3608:16;3647:2;3639:6;3636:14;3633:34;;;3663:1;3660;3653:12;3633:34;3718:7;3711:4;3701:6;3698:1;3694:14;3690:2;3686:23;3682:34;3679:47;3676:67;;;3739:1;3736;3729:12;3676:67;3770:4;3762:13;;;;-1:-1:-1;3794:6:1;-1:-1:-1;3819:37:1;;3835:20;;;-1:-1:-1;3819:37:1;:::i;:::-;3809:47;;3173:689;;;;;:::o;3867:380::-;3946:1;3942:12;;;;3989;;;4010:61;;4064:4;4056:6;4052:17;4042:27;;4010:61;4117:2;4109:6;4106:14;4086:18;4083:38;4080:161;;4163:10;4158:3;4154:20;4151:1;4144:31;4198:4;4195:1;4188:15;4226:4;4223:1;4216:15;4080:161;;3867:380;;;:::o;4252:127::-;4313:10;4308:3;4304:20;4301:1;4294:31;4344:4;4341:1;4334:15;4368:4;4365:1;4358:15;4384:125;4449:9;;;4470:10;;;4467:36;;;4483:18;;:::i;4514:356::-;4716:2;4698:21;;;4735:18;;;4728:30;4794:34;4789:2;4774:18;;4767:62;4861:2;4846:18;;4514:356::o;6001:127::-;6062:10;6057:3;6053:20;6050:1;6043:31;6093:4;6090:1;6083:15;6117:4;6114:1;6107:15;6133:135;6172:3;6193:17;;;6190:43;;6213:18;;:::i;:::-;-1:-1:-1;6260:1:1;6249:13;;6133:135::o

Swarm Source

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