ETH Price: $3,182.10 (+3.11%)

Token

Psyop (PSYOP)
 

Overview

Max Total Supply

550,000,000,000 PSYOP

Holders

8,013

Market

Price

$0.00 @ 0.000000 ETH (+20.81%)

Onchain Market Cap

$20,805,220.47

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
42,617.845141302766485809 PSYOP

Value
$1.61 ( ~0.000505955838522671 Eth) [0.0000%]
0x93e8eE38B82CCbD8994D02804a417c6f25a4b678
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$101.45
Market Capitalization:$0.00
Circulating Supply:0.00 PSYOP
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Psyop

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 8 : Psyop.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

contract Psyop is Ownable, Pausable, ERC20, ERC20Burnable {

  /** Total amount of tokens */
  uint256 private constant  TOTAL_SUPPLY    = 550_000_000_000 ether;
  /** Reserve amount of tokens for future development */
  uint256 private constant  RESERVE         = 522_500_000_000 ether;
  /** Allocation for presale buyers and LP */
  uint256 private constant  DISTRIBUTION    = 27_500_000_000 ether;
  /** Max buy amount per tx */
  uint256 public constant   MAX_BUY         = 137_500_000 ether;
  /** Number of blocks to count as dead land */
  uint256 public constant   DEADBLOCK_COUNT = 3;

  /** Developer wallet map with super access */
  mapping(address => bool) private whitelist;
  /** List of available pools */
  mapping(address => bool) private poolList;
  /** Used to watch for sandwiches */
  mapping(address => uint) private _lastBlockTransfer;

  /** Deadblock start blocknum */
  uint256 public deadblockStart;
  /** Block contracts? */
  bool private _blockContracts;
  /** Limit buys? */
  bool private _limitBuys;
  /** Crowd control measures? */
  bool private _unrestricted;

  /** Emit on LP address set */
  event LiquidityPoolSet(address);

  /** Amount must be greater than zero */
  error NoZeroTransfers();
  /** Amount exceeds max transaction */
  error LimitExceeded();
  /** Not allowed */
  error NotAllowed();
  /** Paused */
  error ContractPaused();
  /** Reserve + Distribution must equal Total Supply (sanity check) */
  error IncorrectSum();

  constructor(address _ben) ERC20("Psyop", "PSYOP") Ownable() {
    whitelist[msg.sender] = true;
    whitelist[_ben] = true;

    if (RESERVE + DISTRIBUTION != TOTAL_SUPPLY) { revert IncorrectSum(); }

    _mint(_ben, RESERVE);
    _mint(msg.sender, DISTRIBUTION);

    _blockContracts = true;
    _limitBuys = true;

    _pause();
  }

  /**
   * Sets pool addresseses for reference
   * @param _val Uniswap V3 Pool address
   * @dev Set this after initializing LP
   */
  function setPools(address[] calldata _val) external onlyOwner {
    for (uint256 i = 0; i < _val.length; i++) {
      address _pool = _val[i];
      poolList[_pool] = true;
      emit LiquidityPoolSet(address(_pool));
    }
  }

  /**
   * Sets a supplied address as whitelisted or not
   * @param _address Address to whitelist
   * @param _allow Allow?
   * @dev Revoke after setup completed
   */
  function setAddressToWhiteList(address _address, bool _allow) external onlyOwner {
    whitelist[_address] = _allow;
  }

 /**
   * Sets contract blocker
   * @param _val Should we block contracts?
   */
  function setBlockContracts(bool _val) external onlyOwner {
    _blockContracts = _val;
  }

  /**
   * Sets buy limiter
   * @param _val Limited?
   */
  function setLimitBuys(bool _val) external onlyOwner {
    _limitBuys = _val;
  }

  /**
   * Unleash Psyop
   */
  function unleashPsyop() external onlyOwner {
    _unrestricted = true;
    renounceOwnership();
  }

  /**
   * Pause activity
   */
  function pause() external onlyOwner {
    _pause();
  }

  /**
   * Unpause activity
   */
  function unpause() external onlyOwner {
    deadblockStart = block.number;
    _unpause();
  }

  /**
   * Checks if address is contract
   * @param _address Address in question
   * @dev Contract will have codesize
   */
  function _isContract(address _address) internal view returns (bool) {
    uint32 size;
    assembly {
        size := extcodesize(_address)
    }
    return (size > 0);
  }

  /**
   * Checks if address has inhuman reflexes or if it's a contract
   * @param _address Address in question
   */
  function _checkIfBot(address _address) internal view returns (bool) {
    return (block.number < DEADBLOCK_COUNT + deadblockStart || _isContract(_address)) && !whitelist[_address];
  }

  /**
   * @dev Hook that is called before any transfer of tokens.  This includes
   * minting and burning.
   *
   * Checks:
   * - transfer amount is non-zero
   * - contract is not paused.
   * - whitelisted addresses allowed during pause to setup LP etc.
   * - buy/sell are not executed during the same block to help alleviate sandwiches
   * - buy amount does not exceed max buy during limited period
   * - check for bots to alleviate snipes
   */
  function _beforeTokenTransfer(address sender, address recipient, uint256 amount) internal override {
    if (amount == 0) { revert NoZeroTransfers(); }
    super._beforeTokenTransfer(sender, recipient, amount);

    if (_unrestricted) { return; }
    if (paused() && !whitelist[sender]) { revert ContractPaused(); }

    // Watch for sandwich
    if (block.number == _lastBlockTransfer[sender] || block.number == _lastBlockTransfer[recipient]) {
      revert NotAllowed();
    }

    bool isBuy = poolList[sender];
    bool isSell = poolList[recipient];

    if (isBuy) {
      // Watch for bots
      if (_blockContracts && _checkIfBot(recipient)) { revert NotAllowed(); }
      // Watch for buys exceeding max during limited period
      if (_limitBuys && amount > MAX_BUY) { revert LimitExceeded(); }
      _lastBlockTransfer[recipient] = block.number;
    } else if (isSell) {
      _lastBlockTransfer[sender] = block.number;
    }
  }
}

File 2 of 8 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

File 3 of 8 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 4 of 8 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @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 5 of 8 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 6 of 8 : ERC20Burnable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;

import "../ERC20.sol";
import "../../../utils/Context.sol";

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

File 7 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 8 of 8 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

Settings
{
  "metadata": {
    "useLiteralContent": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ben","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[],"name":"IncorrectSum","type":"error"},{"inputs":[],"name":"LimitExceeded","type":"error"},{"inputs":[],"name":"NoZeroTransfers","type":"error"},{"inputs":[],"name":"NotAllowed","type":"error"},{"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":false,"internalType":"address","name":"","type":"address"}],"name":"LiquidityPoolSet","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEADBLOCK_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BUY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadblockStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"setAddressToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setBlockContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setLimitBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_val","type":"address[]"}],"name":"setPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unleashPsyop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200359b3803806200359b833981810160405281019062000037919062000ab1565b6040518060400160405280600581526020017f5073796f700000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5053594f50000000000000000000000000000000000000000000000000000000815250620000c3620000b7620002aa60201b60201c565b620002b260201b60201c565b60008060146101000a81548160ff0219169083151502179055508160049081620000ee919062000d5d565b50806005908162000100919062000d5d565b5050506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506c06f125563f59f382da700000006b58db77832ae5c68aec0000006c069849debc2f0dbc4f84000000620001e8919062000e73565b1462000220576040517f077548bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200023f816c069849debc2f0dbc4f840000006200037660201b60201c565b6200025d336b58db77832ae5c68aec0000006200037660201b60201c565b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550620002a3620004e460201b60201c565b5062000fff565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003df9062000f0f565b60405180910390fd5b620003fc600083836200055960201b60201c565b806003600082825462000410919062000e73565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004c4919062000f42565b60405180910390a3620004e0600083836200092d60201b60201c565b5050565b620004f46200093260201b60201c565b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25862000540620002aa60201b60201c565b6040516200054f919062000f70565b60405180910390a1565b6000810362000594576040517f7713e26f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620005ac8383836200098760201b62000b351760201c565b600a60029054906101000a900460ff166200092857620005d16200098c60201b60201c565b8015620006285750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000660576040517fab35696f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054431480620006ec5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443145b1562000724576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508115620008d857600a60009054906101000a900460ff168015620007f75750620007f684620009a260201b60201c565b5b156200082f576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60019054906101000a900460ff1680156200085657506a71bcc1ef9311a1f980000083115b156200088e576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b43600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000925565b8015620009245743600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50505b505050565b505050565b620009426200098c60201b60201c565b1562000985576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097c9062000fdd565b60405180910390fd5b565b505050565b60008060149054906101000a900460ff16905090565b60006009546003620009b5919062000e73565b431080620009d05750620009cf8262000a2e60201b60201c565b5b801562000a275750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600080823b905060008163ffffffff1611915050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a798262000a4c565b9050919050565b62000a8b8162000a6c565b811462000a9757600080fd5b50565b60008151905062000aab8162000a80565b92915050565b60006020828403121562000aca5762000ac962000a47565b5b600062000ada8482850162000a9a565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b6557607f821691505b60208210810362000b7b5762000b7a62000b1d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000be57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ba6565b62000bf1868362000ba6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c3e62000c3862000c328462000c09565b62000c13565b62000c09565b9050919050565b6000819050919050565b62000c5a8362000c1d565b62000c7262000c698262000c45565b84845462000bb3565b825550505050565b600090565b62000c8962000c7a565b62000c9681848462000c4f565b505050565b5b8181101562000cbe5762000cb260008262000c7f565b60018101905062000c9c565b5050565b601f82111562000d0d5762000cd78162000b81565b62000ce28462000b96565b8101602085101562000cf2578190505b62000d0a62000d018562000b96565b83018262000c9b565b50505b505050565b600082821c905092915050565b600062000d326000198460080262000d12565b1980831691505092915050565b600062000d4d838362000d1f565b9150826002028217905092915050565b62000d688262000ae3565b67ffffffffffffffff81111562000d845762000d8362000aee565b5b62000d90825462000b4c565b62000d9d82828562000cc2565b600060209050601f83116001811462000dd5576000841562000dc0578287015190505b62000dcc858262000d3f565b86555062000e3c565b601f19841662000de58662000b81565b60005b8281101562000e0f5784890151825560018201915060208501945060208101905062000de8565b8683101562000e2f578489015162000e2b601f89168262000d1f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e808262000c09565b915062000e8d8362000c09565b925082820190508082111562000ea85762000ea762000e44565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ef7601f8362000eae565b915062000f048262000ebf565b602082019050919050565b6000602082019050818103600083015262000f2a8162000ee8565b9050919050565b62000f3c8162000c09565b82525050565b600060208201905062000f59600083018462000f31565b92915050565b62000f6a8162000a6c565b82525050565b600060208201905062000f87600083018462000f5f565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600062000fc560108362000eae565b915062000fd28262000f8d565b602082019050919050565b6000602082019050818103600083015262000ff88162000fb6565b9050919050565b61258c806200100f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638456cb59116100f9578063b5e0315511610097578063dd62ed3e11610071578063dd62ed3e14610474578063e3b23964146104a4578063ed66a0ad146104c0578063f2fde38b146104dc576101a9565b8063b5e031551461041a578063c459fbb814610438578063d46b136c14610456576101a9565b806395d89b41116100d357806395d89b4114610392578063a457c2d7146103b0578063a7195fb1146103e0578063a9059cbb146103ea576101a9565b80638456cb591461034e5780638544c53b146103585780638da5cb5b14610374576101a9565b80633f4ba83a116101665780635c975abb116101405780635c975abb146102da57806370a08231146102f8578063715018a61461032857806379cc679014610332576101a9565b80633f4ba83a1461029857806342966c68146102a257806353866824146102be576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063313ce5671461024a5780633950935114610268575b600080fd5b6101b66104f8565b6040516101c39190611951565b60405180910390f35b6101e660048036038101906101e19190611a11565b61058a565b6040516101f39190611a6c565b60405180910390f35b6102046105ad565b6040516102119190611a96565b60405180910390f35b610234600480360381019061022f9190611ab1565b6105b7565b6040516102419190611a6c565b60405180910390f35b6102526105e6565b60405161025f9190611b20565b60405180910390f35b610282600480360381019061027d9190611a11565b6105ef565b60405161028f9190611a6c565b60405180910390f35b6102a0610626565b005b6102bc60048036038101906102b79190611b3b565b61063f565b005b6102d860048036038101906102d39190611b94565b610653565b005b6102e2610678565b6040516102ef9190611a6c565b60405180910390f35b610312600480360381019061030d9190611bc1565b61068e565b60405161031f9190611a96565b60405180910390f35b6103306106d7565b005b61034c60048036038101906103479190611a11565b6106eb565b005b61035661070b565b005b610372600480360381019061036d9190611c53565b61071d565b005b61037c610807565b6040516103899190611caf565b60405180910390f35b61039a610830565b6040516103a79190611951565b60405180910390f35b6103ca60048036038101906103c59190611a11565b6108c2565b6040516103d79190611a6c565b60405180910390f35b6103e8610939565b005b61040460048036038101906103ff9190611a11565b610966565b6040516104119190611a6c565b60405180910390f35b610422610989565b60405161042f9190611a96565b60405180910390f35b61044061098e565b60405161044d9190611a96565b60405180910390f35b61045e610994565b60405161046b9190611a96565b60405180910390f35b61048e60048036038101906104899190611cca565b6109a3565b60405161049b9190611a96565b60405180910390f35b6104be60048036038101906104b99190611b94565b610a2a565b005b6104da60048036038101906104d59190611d0a565b610a4f565b005b6104f660048036038101906104f19190611bc1565b610ab2565b005b60606004805461050790611d79565b80601f016020809104026020016040519081016040528092919081815260200182805461053390611d79565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b5050505050905090565b600080610595610b3a565b90506105a2818585610b42565b600191505092915050565b6000600354905090565b6000806105c2610b3a565b90506105cf858285610d0b565b6105da858585610d97565b60019150509392505050565b60006012905090565b6000806105fa610b3a565b905061061b81858561060c85896109a3565b6106169190611dd9565b610b42565b600191505092915050565b61062e611010565b4360098190555061063d61108e565b565b61065061064a610b3a565b826110f0565b50565b61065b611010565b80600a60006101000a81548160ff02191690831515021790555050565b60008060149054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106df611010565b6106e960006112bf565b565b6106fd826106f7610b3a565b83610d0b565b61070782826110f0565b5050565b610713611010565b61071b611383565b565b610725611010565b60005b8282905081101561080257600083838381811061074857610747611e0d565b5b905060200201602081019061075d9190611bc1565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a816040516107e69190611caf565b60405180910390a15080806107fa90611e3c565b915050610728565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461083f90611d79565b80601f016020809104026020016040519081016040528092919081815260200182805461086b90611d79565b80156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b5050505050905090565b6000806108cd610b3a565b905060006108db82866109a3565b905083811015610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790611ef6565b60405180910390fd5b61092d8286868403610b42565b60019250505092915050565b610941611010565b6001600a60026101000a81548160ff0219169083151502179055506109646106d7565b565b600080610971610b3a565b905061097e818585610d97565b600191505092915050565b600381565b60095481565b6a71bcc1ef9311a1f980000081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a32611010565b80600a60016101000a81548160ff02191690831515021790555050565b610a57611010565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610aba611010565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2090611f88565b60405180910390fd5b610b32816112bf565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061201a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906120ac565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cfe9190611a96565b60405180910390a3505050565b6000610d1784846109a3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d915781811015610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612118565b60405180910390fd5b610d908484848403610b42565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd906121aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c9061223c565b60405180910390fd5b610e808383836113e6565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe906122ce565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ff79190611a96565b60405180910390a361100a848484611790565b50505050565b611018610b3a565b73ffffffffffffffffffffffffffffffffffffffff16611036610807565b73ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110839061233a565b60405180910390fd5b565b611096611795565b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6110d9610b3a565b6040516110e69190611caf565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361115f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611156906123cc565b60405180910390fd5b61116b826000836113e6565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061245e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112a69190611a96565b60405180910390a36112ba83600084611790565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61138b6117de565b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113cf610b3a565b6040516113dc9190611caf565b60405180910390a1565b60008103611420576040517f7713e26f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61142b838383610b35565b600a60029054906101000a900460ff1661178b57611447610678565b801561149d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114d4576040517fab35696f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443148061155f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443145b15611596576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050811561173c57600a60009054906101000a900460ff16801561165f575061165e84611828565b5b15611696576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60019054906101000a900460ff1680156116bc57506a71bcc1ef9311a1f980000083115b156116f3576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b43600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611788565b80156117875743600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50505b505050565b505050565b61179d610678565b6117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d3906124ca565b60405180910390fd5b565b6117e6610678565b15611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d90612536565b60405180910390fd5b565b600060095460036118399190611dd9565b43108061184b575061184a826118a8565b5b80156118a15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600080823b905060008163ffffffff1611915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118fb5780820151818401526020810190506118e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611923826118c1565b61192d81856118cc565b935061193d8185602086016118dd565b61194681611907565b840191505092915050565b6000602082019050818103600083015261196b8184611918565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119a88261197d565b9050919050565b6119b88161199d565b81146119c357600080fd5b50565b6000813590506119d5816119af565b92915050565b6000819050919050565b6119ee816119db565b81146119f957600080fd5b50565b600081359050611a0b816119e5565b92915050565b60008060408385031215611a2857611a27611973565b5b6000611a36858286016119c6565b9250506020611a47858286016119fc565b9150509250929050565b60008115159050919050565b611a6681611a51565b82525050565b6000602082019050611a816000830184611a5d565b92915050565b611a90816119db565b82525050565b6000602082019050611aab6000830184611a87565b92915050565b600080600060608486031215611aca57611ac9611973565b5b6000611ad8868287016119c6565b9350506020611ae9868287016119c6565b9250506040611afa868287016119fc565b9150509250925092565b600060ff82169050919050565b611b1a81611b04565b82525050565b6000602082019050611b356000830184611b11565b92915050565b600060208284031215611b5157611b50611973565b5b6000611b5f848285016119fc565b91505092915050565b611b7181611a51565b8114611b7c57600080fd5b50565b600081359050611b8e81611b68565b92915050565b600060208284031215611baa57611ba9611973565b5b6000611bb884828501611b7f565b91505092915050565b600060208284031215611bd757611bd6611973565b5b6000611be5848285016119c6565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611c1357611c12611bee565b5b8235905067ffffffffffffffff811115611c3057611c2f611bf3565b5b602083019150836020820283011115611c4c57611c4b611bf8565b5b9250929050565b60008060208385031215611c6a57611c69611973565b5b600083013567ffffffffffffffff811115611c8857611c87611978565b5b611c9485828601611bfd565b92509250509250929050565b611ca98161199d565b82525050565b6000602082019050611cc46000830184611ca0565b92915050565b60008060408385031215611ce157611ce0611973565b5b6000611cef858286016119c6565b9250506020611d00858286016119c6565b9150509250929050565b60008060408385031215611d2157611d20611973565b5b6000611d2f858286016119c6565b9250506020611d4085828601611b7f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d9157607f821691505b602082108103611da457611da3611d4a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611de4826119db565b9150611def836119db565b9250828201905080821115611e0757611e06611daa565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611e47826119db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7957611e78611daa565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ee06025836118cc565b9150611eeb82611e84565b604082019050919050565b60006020820190508181036000830152611f0f81611ed3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611f726026836118cc565b9150611f7d82611f16565b604082019050919050565b60006020820190508181036000830152611fa181611f65565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120046024836118cc565b915061200f82611fa8565b604082019050919050565b6000602082019050818103600083015261203381611ff7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006120966022836118cc565b91506120a18261203a565b604082019050919050565b600060208201905081810360008301526120c581612089565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612102601d836118cc565b915061210d826120cc565b602082019050919050565b60006020820190508181036000830152612131816120f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121946025836118cc565b915061219f82612138565b604082019050919050565b600060208201905081810360008301526121c381612187565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122266023836118cc565b9150612231826121ca565b604082019050919050565b6000602082019050818103600083015261225581612219565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122b86026836118cc565b91506122c38261225c565b604082019050919050565b600060208201905081810360008301526122e7816122ab565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123246020836118cc565b915061232f826122ee565b602082019050919050565b6000602082019050818103600083015261235381612317565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006123b66021836118cc565b91506123c18261235a565b604082019050919050565b600060208201905081810360008301526123e5816123a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006124486022836118cc565b9150612453826123ec565b604082019050919050565b600060208201905081810360008301526124778161243b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006124b46014836118cc565b91506124bf8261247e565b602082019050919050565b600060208201905081810360008301526124e3816124a7565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006125206010836118cc565b915061252b826124ea565b602082019050919050565b6000602082019050818103600083015261254f81612513565b905091905056fea264697066735822122021a0feaa9371ea9957724cb96d94f9ee398deb4e5d7075507466421facfdc05f64736f6c6343000812003300000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638456cb59116100f9578063b5e0315511610097578063dd62ed3e11610071578063dd62ed3e14610474578063e3b23964146104a4578063ed66a0ad146104c0578063f2fde38b146104dc576101a9565b8063b5e031551461041a578063c459fbb814610438578063d46b136c14610456576101a9565b806395d89b41116100d357806395d89b4114610392578063a457c2d7146103b0578063a7195fb1146103e0578063a9059cbb146103ea576101a9565b80638456cb591461034e5780638544c53b146103585780638da5cb5b14610374576101a9565b80633f4ba83a116101665780635c975abb116101405780635c975abb146102da57806370a08231146102f8578063715018a61461032857806379cc679014610332576101a9565b80633f4ba83a1461029857806342966c68146102a257806353866824146102be576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063313ce5671461024a5780633950935114610268575b600080fd5b6101b66104f8565b6040516101c39190611951565b60405180910390f35b6101e660048036038101906101e19190611a11565b61058a565b6040516101f39190611a6c565b60405180910390f35b6102046105ad565b6040516102119190611a96565b60405180910390f35b610234600480360381019061022f9190611ab1565b6105b7565b6040516102419190611a6c565b60405180910390f35b6102526105e6565b60405161025f9190611b20565b60405180910390f35b610282600480360381019061027d9190611a11565b6105ef565b60405161028f9190611a6c565b60405180910390f35b6102a0610626565b005b6102bc60048036038101906102b79190611b3b565b61063f565b005b6102d860048036038101906102d39190611b94565b610653565b005b6102e2610678565b6040516102ef9190611a6c565b60405180910390f35b610312600480360381019061030d9190611bc1565b61068e565b60405161031f9190611a96565b60405180910390f35b6103306106d7565b005b61034c60048036038101906103479190611a11565b6106eb565b005b61035661070b565b005b610372600480360381019061036d9190611c53565b61071d565b005b61037c610807565b6040516103899190611caf565b60405180910390f35b61039a610830565b6040516103a79190611951565b60405180910390f35b6103ca60048036038101906103c59190611a11565b6108c2565b6040516103d79190611a6c565b60405180910390f35b6103e8610939565b005b61040460048036038101906103ff9190611a11565b610966565b6040516104119190611a6c565b60405180910390f35b610422610989565b60405161042f9190611a96565b60405180910390f35b61044061098e565b60405161044d9190611a96565b60405180910390f35b61045e610994565b60405161046b9190611a96565b60405180910390f35b61048e60048036038101906104899190611cca565b6109a3565b60405161049b9190611a96565b60405180910390f35b6104be60048036038101906104b99190611b94565b610a2a565b005b6104da60048036038101906104d59190611d0a565b610a4f565b005b6104f660048036038101906104f19190611bc1565b610ab2565b005b60606004805461050790611d79565b80601f016020809104026020016040519081016040528092919081815260200182805461053390611d79565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b5050505050905090565b600080610595610b3a565b90506105a2818585610b42565b600191505092915050565b6000600354905090565b6000806105c2610b3a565b90506105cf858285610d0b565b6105da858585610d97565b60019150509392505050565b60006012905090565b6000806105fa610b3a565b905061061b81858561060c85896109a3565b6106169190611dd9565b610b42565b600191505092915050565b61062e611010565b4360098190555061063d61108e565b565b61065061064a610b3a565b826110f0565b50565b61065b611010565b80600a60006101000a81548160ff02191690831515021790555050565b60008060149054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106df611010565b6106e960006112bf565b565b6106fd826106f7610b3a565b83610d0b565b61070782826110f0565b5050565b610713611010565b61071b611383565b565b610725611010565b60005b8282905081101561080257600083838381811061074857610747611e0d565b5b905060200201602081019061075d9190611bc1565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a816040516107e69190611caf565b60405180910390a15080806107fa90611e3c565b915050610728565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461083f90611d79565b80601f016020809104026020016040519081016040528092919081815260200182805461086b90611d79565b80156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b5050505050905090565b6000806108cd610b3a565b905060006108db82866109a3565b905083811015610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790611ef6565b60405180910390fd5b61092d8286868403610b42565b60019250505092915050565b610941611010565b6001600a60026101000a81548160ff0219169083151502179055506109646106d7565b565b600080610971610b3a565b905061097e818585610d97565b600191505092915050565b600381565b60095481565b6a71bcc1ef9311a1f980000081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a32611010565b80600a60016101000a81548160ff02191690831515021790555050565b610a57611010565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610aba611010565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2090611f88565b60405180910390fd5b610b32816112bf565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061201a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906120ac565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cfe9190611a96565b60405180910390a3505050565b6000610d1784846109a3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d915781811015610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612118565b60405180910390fd5b610d908484848403610b42565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd906121aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c9061223c565b60405180910390fd5b610e808383836113e6565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe906122ce565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ff79190611a96565b60405180910390a361100a848484611790565b50505050565b611018610b3a565b73ffffffffffffffffffffffffffffffffffffffff16611036610807565b73ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110839061233a565b60405180910390fd5b565b611096611795565b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6110d9610b3a565b6040516110e69190611caf565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361115f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611156906123cc565b60405180910390fd5b61116b826000836113e6565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061245e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112a69190611a96565b60405180910390a36112ba83600084611790565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61138b6117de565b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113cf610b3a565b6040516113dc9190611caf565b60405180910390a1565b60008103611420576040517f7713e26f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61142b838383610b35565b600a60029054906101000a900460ff1661178b57611447610678565b801561149d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114d4576040517fab35696f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443148061155f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443145b15611596576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050811561173c57600a60009054906101000a900460ff16801561165f575061165e84611828565b5b15611696576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60019054906101000a900460ff1680156116bc57506a71bcc1ef9311a1f980000083115b156116f3576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b43600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611788565b80156117875743600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50505b505050565b505050565b61179d610678565b6117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d3906124ca565b60405180910390fd5b565b6117e6610678565b15611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d90612536565b60405180910390fd5b565b600060095460036118399190611dd9565b43108061184b575061184a826118a8565b5b80156118a15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600080823b905060008163ffffffff1611915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118fb5780820151818401526020810190506118e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611923826118c1565b61192d81856118cc565b935061193d8185602086016118dd565b61194681611907565b840191505092915050565b6000602082019050818103600083015261196b8184611918565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119a88261197d565b9050919050565b6119b88161199d565b81146119c357600080fd5b50565b6000813590506119d5816119af565b92915050565b6000819050919050565b6119ee816119db565b81146119f957600080fd5b50565b600081359050611a0b816119e5565b92915050565b60008060408385031215611a2857611a27611973565b5b6000611a36858286016119c6565b9250506020611a47858286016119fc565b9150509250929050565b60008115159050919050565b611a6681611a51565b82525050565b6000602082019050611a816000830184611a5d565b92915050565b611a90816119db565b82525050565b6000602082019050611aab6000830184611a87565b92915050565b600080600060608486031215611aca57611ac9611973565b5b6000611ad8868287016119c6565b9350506020611ae9868287016119c6565b9250506040611afa868287016119fc565b9150509250925092565b600060ff82169050919050565b611b1a81611b04565b82525050565b6000602082019050611b356000830184611b11565b92915050565b600060208284031215611b5157611b50611973565b5b6000611b5f848285016119fc565b91505092915050565b611b7181611a51565b8114611b7c57600080fd5b50565b600081359050611b8e81611b68565b92915050565b600060208284031215611baa57611ba9611973565b5b6000611bb884828501611b7f565b91505092915050565b600060208284031215611bd757611bd6611973565b5b6000611be5848285016119c6565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611c1357611c12611bee565b5b8235905067ffffffffffffffff811115611c3057611c2f611bf3565b5b602083019150836020820283011115611c4c57611c4b611bf8565b5b9250929050565b60008060208385031215611c6a57611c69611973565b5b600083013567ffffffffffffffff811115611c8857611c87611978565b5b611c9485828601611bfd565b92509250509250929050565b611ca98161199d565b82525050565b6000602082019050611cc46000830184611ca0565b92915050565b60008060408385031215611ce157611ce0611973565b5b6000611cef858286016119c6565b9250506020611d00858286016119c6565b9150509250929050565b60008060408385031215611d2157611d20611973565b5b6000611d2f858286016119c6565b9250506020611d4085828601611b7f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d9157607f821691505b602082108103611da457611da3611d4a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611de4826119db565b9150611def836119db565b9250828201905080821115611e0757611e06611daa565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611e47826119db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e7957611e78611daa565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ee06025836118cc565b9150611eeb82611e84565b604082019050919050565b60006020820190508181036000830152611f0f81611ed3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611f726026836118cc565b9150611f7d82611f16565b604082019050919050565b60006020820190508181036000830152611fa181611f65565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120046024836118cc565b915061200f82611fa8565b604082019050919050565b6000602082019050818103600083015261203381611ff7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006120966022836118cc565b91506120a18261203a565b604082019050919050565b600060208201905081810360008301526120c581612089565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612102601d836118cc565b915061210d826120cc565b602082019050919050565b60006020820190508181036000830152612131816120f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121946025836118cc565b915061219f82612138565b604082019050919050565b600060208201905081810360008301526121c381612187565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122266023836118cc565b9150612231826121ca565b604082019050919050565b6000602082019050818103600083015261225581612219565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122b86026836118cc565b91506122c38261225c565b604082019050919050565b600060208201905081810360008301526122e7816122ab565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123246020836118cc565b915061232f826122ee565b602082019050919050565b6000602082019050818103600083015261235381612317565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006123b66021836118cc565b91506123c18261235a565b604082019050919050565b600060208201905081810360008301526123e5816123a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006124486022836118cc565b9150612453826123ec565b604082019050919050565b600060208201905081810360008301526124778161243b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006124b46014836118cc565b91506124bf8261247e565b602082019050919050565b600060208201905081810360008301526124e3816124a7565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006125206010836118cc565b915061252b826124ea565b602082019050919050565b6000602082019050818103600083015261254f81612513565b905091905056fea264697066735822122021a0feaa9371ea9957724cb96d94f9ee398deb4e5d7075507466421facfdc05f64736f6c63430008120033

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

00000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee

-----Decoded View---------------
Arg [0] : _ben (address): 0x91364516D3CAD16E1666261dbdbb39c881Dbe9eE

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000091364516d3cad16e1666261dbdbb39c881dbe9ee


Deployed Bytecode Sourcemap

306:5164:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3367:94:0;;;:::i;:::-;;578:89:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2870:90:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:84:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3406:125:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1831:101:1;;;:::i;:::-;;973:161:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3274:55:0;;;:::i;:::-;;2263:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1201:85:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2365:102:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6592:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3139:99:0;;;:::i;:::-;;3727:189:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;854:45:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1204:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;741:61;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3024:80:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2664:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2081:198:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2154:98:3;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;3367:94:0:-;1094:13:1;:11;:13::i;:::-;3428:12:0::1;3411:14;:29;;;;3446:10;:8;:10::i;:::-;3367:94::o:0;578:89:5:-;633:27;639:12;:10;:12::i;:::-;653:6;633:5;:27::i;:::-;578:89;:::o;2870:90:0:-;1094:13:1;:11;:13::i;:::-;2951:4:0::1;2933:15;;:22;;;;;;;;;;;;;;;;;;2870:90:::0;:::o;1615:84:2:-;1662:4;1685:7;;;;;;;;;;;1678:14;;1615:84;:::o;3406:125:3:-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;1831:101:1:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;973:161:5:-;1049:46;1065:7;1074:12;:10;:12::i;:::-;1088:6;1049:15;:46::i;:::-;1105:22;1111:7;1120:6;1105:5;:22::i;:::-;973:161;;:::o;3274:55:0:-;1094:13:1;:11;:13::i;:::-;3316:8:0::1;:6;:8::i;:::-;3274:55::o:0;2263:227::-;1094:13:1;:11;:13::i;:::-;2336:9:0::1;2331:155;2355:4;;:11;;2351:1;:15;2331:155;;;2381:13;2397:4;;2402:1;2397:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;2381:23;;2430:4;2412:8;:15;2421:5;2412:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2447:32;2472:5;2447:32;;;;;;:::i;:::-;;;;;;;;2373:113;2368:3;;;;;:::i;:::-;;;;2331:155;;;;2263:227:::0;;:::o;1201:85:1:-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;2365:102:3:-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;6592:427::-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3139:99:0:-;1094:13:1;:11;:13::i;:::-;3204:4:0::1;3188:13;;:20;;;;;;;;;;;;;;;;;;3214:19;:17;:19::i;:::-;3139:99::o:0;3727:189:3:-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;854:45:0:-;898:1;854:45;:::o;1204:29::-;;;;:::o;741:61::-;785:17;741:61;:::o;3974:149:3:-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;3024:80:0:-;1094:13:1;:11;:13::i;:::-;3095:4:0::1;3082:10;;:17;;;;;;;;;;;;;;;;;;3024:80:::0;:::o;2664:120::-;1094:13:1;:11;:13::i;:::-;2773:6:0::1;2751:9;:19;2761:8;2751:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2664:120:::0;;:::o;2081:198:1:-;1094:13;:11;:13::i;:::-;2189:1:::1;2169:22;;:8;:22;;::::0;2161:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;12180:121:3:-;;;;:::o;640:96:7:-;693:7;719:10;712:17;;640:96;:::o;10504:370:3:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;1359:130:1:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2433:117:2:-;1486:16;:14;:16::i;:::-;2501:5:::1;2491:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;2521:22;2530:12;:10;:12::i;:::-;2521:22;;;;;;:::i;:::-;;;;;;;;2433:117::o:0;9422:659:3:-;9524:1;9505:21;;:7;:21;;;9497:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:49;9596:7;9613:1;9617:6;9575:20;:49::i;:::-;9635:22;9660:9;:18;9670:7;9660:18;;;;;;;;;;;;;;;;9635:43;;9714:6;9696:14;:24;;9688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9831:6;9814:14;:23;9793:9;:18;9803:7;9793:18;;;;;;;;;;;;;;;:44;;;;9946:6;9930:12;;:22;;;;;;;;;;;10004:1;9978:37;;9987:7;9978:37;;;10008:6;9978:37;;;;;;:::i;:::-;;;;;;;;10026:48;10046:7;10063:1;10067:6;10026:19;:48::i;:::-;9487:594;9422:659;;:::o;2433:187:1:-;2506:16;2525:6;;;;;;;;;;;2506:25;;2550:8;2541:6;;:17;;;;;;;;;;;;;;;;;;2604:8;2573:40;;2594:8;2573:40;;;;;;;;;;;;2496:124;2433:187;:::o;2186:115:2:-;1239:19;:17;:19::i;:::-;2255:4:::1;2245:7;;:14;;;;;;;;;;;;;;;;;;2274:20;2281:12;:10;:12::i;:::-;2274:20;;;;;;:::i;:::-;;;;;;;;2186:115::o:0;4529:939:0:-;4648:1;4638:6;:11;4634:46;;4660:17;;;;;;;;;;;;;;4634:46;4685:53;4712:6;4720:9;4731:6;4685:26;:53::i;:::-;4749:13;;;;;;;;;;;4766:7;4745:30;4784:8;:6;:8::i;:::-;:30;;;;;4797:9;:17;4807:6;4797:17;;;;;;;;;;;;;;;;;;;;;;;;;4796:18;4784:30;4780:64;;;4825:16;;;;;;;;;;;;;;4780:64;4896:18;:26;4915:6;4896:26;;;;;;;;;;;;;;;;4880:12;:42;:91;;;;4942:18;:29;4961:9;4942:29;;;;;;;;;;;;;;;;4926:12;:45;4880:91;4876:131;;;4988:12;;;;;;;;;;;;;;4876:131;5013:10;5026:8;:16;5035:6;5026:16;;;;;;;;;;;;;;;;;;;;;;;;;5013:29;;5048:11;5062:8;:19;5071:9;5062:19;;;;;;;;;;;;;;;;;;;;;;;;;5048:33;;5092:5;5088:376;;;5135:15;;;;;;;;;;;:41;;;;;5154:22;5166:9;5154:11;:22::i;:::-;5135:41;5131:71;;;5187:12;;;;;;;;;;;;;;5131:71;5273:10;;;;;;;;;;;:30;;;;;785:17;5287:6;:16;5273:30;5269:63;;;5314:15;;;;;;;;;;;;;;5269:63;5371:12;5339:18;:29;5358:9;5339:29;;;;;;;;;;;;;;;:44;;;;5088:376;;;5400:6;5396:68;;;5445:12;5416:18;:26;5435:6;5416:26;;;;;;;;;;;;;;;:41;;;;5396:68;5088:376;4628:840;;4529:939;;;;:::o;12889:120:3:-;;;;:::o;1945:106:2:-;2011:8;:6;:8::i;:::-;2003:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:106::o;1767:::-;1837:8;:6;:8::i;:::-;1836:9;1828:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1767:106::o;3886:184:0:-;3948:4;4001:14;;898:1;3983:32;;;;:::i;:::-;3968:12;:47;:72;;;;4019:21;4031:8;4019:11;:21::i;:::-;3968:72;3967:98;;;;;4046:9;:19;4056:8;4046:19;;;;;;;;;;;;;;;;;;;;;;;;;4045:20;3967:98;3960:105;;3886:184;;;:::o;3591:172::-;3653:4;3665:11;3721:8;3709:21;3701:29;;3756:1;3749:4;:8;;;3741:17;;;3591:172;;;:::o;7:99:8:-;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;1553:117;1662:1;1659;1652: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:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:329::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5983:117;5778:329;;;;:::o;6113:117::-;6222:1;6219;6212:12;6236:117;6345:1;6342;6335:12;6359:117;6468:1;6465;6458:12;6499:568;6572:8;6582:6;6632:3;6625:4;6617:6;6613:17;6609:27;6599:122;;6640:79;;:::i;:::-;6599:122;6753:6;6740:20;6730:30;;6783:18;6775:6;6772:30;6769:117;;;6805:79;;:::i;:::-;6769:117;6919:4;6911:6;6907:17;6895:29;;6973:3;6965:4;6957:6;6953:17;6943:8;6939:32;6936:41;6933:128;;;6980:79;;:::i;:::-;6933:128;6499:568;;;;;:::o;7073:559::-;7159:6;7167;7216:2;7204:9;7195:7;7191:23;7187:32;7184:119;;;7222:79;;:::i;:::-;7184:119;7370:1;7359:9;7355:17;7342:31;7400:18;7392:6;7389:30;7386:117;;;7422:79;;:::i;:::-;7386:117;7535:80;7607:7;7598:6;7587:9;7583:22;7535:80;:::i;:::-;7517:98;;;;7313:312;7073:559;;;;;:::o;7638:118::-;7725:24;7743:5;7725:24;:::i;:::-;7720:3;7713:37;7638:118;;:::o;7762:222::-;7855:4;7893:2;7882:9;7878:18;7870:26;;7906:71;7974:1;7963:9;7959:17;7950:6;7906:71;:::i;:::-;7762:222;;;;:::o;7990:474::-;8058:6;8066;8115:2;8103:9;8094:7;8090:23;8086:32;8083:119;;;8121:79;;:::i;:::-;8083:119;8241:1;8266:53;8311:7;8302:6;8291:9;8287:22;8266:53;:::i;:::-;8256:63;;8212:117;8368:2;8394:53;8439:7;8430:6;8419:9;8415:22;8394:53;:::i;:::-;8384:63;;8339:118;7990:474;;;;;:::o;8470:468::-;8535:6;8543;8592:2;8580:9;8571:7;8567:23;8563:32;8560:119;;;8598:79;;:::i;:::-;8560:119;8718:1;8743:53;8788:7;8779:6;8768:9;8764:22;8743:53;:::i;:::-;8733:63;;8689:117;8845:2;8871:50;8913:7;8904:6;8893:9;8889:22;8871:50;:::i;:::-;8861:60;;8816:115;8470:468;;;;;:::o;8944:180::-;8992:77;8989:1;8982:88;9089:4;9086:1;9079:15;9113:4;9110:1;9103:15;9130:320;9174:6;9211:1;9205:4;9201:12;9191:22;;9258:1;9252:4;9248:12;9279:18;9269:81;;9335:4;9327:6;9323:17;9313:27;;9269:81;9397:2;9389:6;9386:14;9366:18;9363:38;9360:84;;9416:18;;:::i;:::-;9360:84;9181:269;9130:320;;;:::o;9456:180::-;9504:77;9501:1;9494:88;9601:4;9598:1;9591:15;9625:4;9622:1;9615:15;9642:191;9682:3;9701:20;9719:1;9701:20;:::i;:::-;9696:25;;9735:20;9753:1;9735:20;:::i;:::-;9730:25;;9778:1;9775;9771:9;9764:16;;9799:3;9796:1;9793:10;9790:36;;;9806:18;;:::i;:::-;9790:36;9642:191;;;;:::o;9839:180::-;9887:77;9884:1;9877:88;9984:4;9981:1;9974:15;10008:4;10005:1;9998:15;10025:233;10064:3;10087:24;10105:5;10087:24;:::i;:::-;10078:33;;10133:66;10126:5;10123:77;10120:103;;10203:18;;:::i;:::-;10120:103;10250:1;10243:5;10239:13;10232:20;;10025:233;;;:::o;10264:224::-;10404:34;10400:1;10392:6;10388:14;10381:58;10473:7;10468:2;10460:6;10456:15;10449:32;10264:224;:::o;10494:366::-;10636:3;10657:67;10721:2;10716:3;10657:67;:::i;:::-;10650:74;;10733:93;10822:3;10733:93;:::i;:::-;10851:2;10846:3;10842:12;10835:19;;10494:366;;;:::o;10866:419::-;11032:4;11070:2;11059:9;11055:18;11047:26;;11119:9;11113:4;11109:20;11105:1;11094:9;11090:17;11083:47;11147:131;11273:4;11147:131;:::i;:::-;11139:139;;10866:419;;;:::o;11291:225::-;11431:34;11427:1;11419:6;11415:14;11408:58;11500:8;11495:2;11487:6;11483:15;11476:33;11291:225;:::o;11522:366::-;11664:3;11685:67;11749:2;11744:3;11685:67;:::i;:::-;11678:74;;11761:93;11850:3;11761:93;:::i;:::-;11879:2;11874:3;11870:12;11863:19;;11522:366;;;:::o;11894:419::-;12060:4;12098:2;12087:9;12083:18;12075:26;;12147:9;12141:4;12137:20;12133:1;12122:9;12118:17;12111:47;12175:131;12301:4;12175:131;:::i;:::-;12167:139;;11894:419;;;:::o;12319:223::-;12459:34;12455:1;12447:6;12443:14;12436:58;12528:6;12523:2;12515:6;12511:15;12504:31;12319:223;:::o;12548:366::-;12690:3;12711:67;12775:2;12770:3;12711:67;:::i;:::-;12704:74;;12787:93;12876:3;12787:93;:::i;:::-;12905:2;12900:3;12896:12;12889:19;;12548:366;;;:::o;12920:419::-;13086:4;13124:2;13113:9;13109:18;13101:26;;13173:9;13167:4;13163:20;13159:1;13148:9;13144:17;13137:47;13201:131;13327:4;13201:131;:::i;:::-;13193:139;;12920:419;;;:::o;13345:221::-;13485:34;13481:1;13473:6;13469:14;13462:58;13554:4;13549:2;13541:6;13537:15;13530:29;13345:221;:::o;13572:366::-;13714:3;13735:67;13799:2;13794:3;13735:67;:::i;:::-;13728:74;;13811:93;13900:3;13811:93;:::i;:::-;13929:2;13924:3;13920:12;13913:19;;13572:366;;;:::o;13944:419::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14197:9;14191:4;14187:20;14183:1;14172:9;14168:17;14161:47;14225:131;14351:4;14225:131;:::i;:::-;14217:139;;13944:419;;;:::o;14369:179::-;14509:31;14505:1;14497:6;14493:14;14486:55;14369:179;:::o;14554:366::-;14696:3;14717:67;14781:2;14776:3;14717:67;:::i;:::-;14710:74;;14793:93;14882:3;14793:93;:::i;:::-;14911:2;14906:3;14902:12;14895:19;;14554:366;;;:::o;14926:419::-;15092:4;15130:2;15119:9;15115:18;15107:26;;15179:9;15173:4;15169:20;15165:1;15154:9;15150:17;15143:47;15207:131;15333:4;15207:131;:::i;:::-;15199:139;;14926:419;;;:::o;15351:224::-;15491:34;15487:1;15479:6;15475:14;15468:58;15560:7;15555:2;15547:6;15543:15;15536:32;15351:224;:::o;15581:366::-;15723:3;15744:67;15808:2;15803:3;15744:67;:::i;:::-;15737:74;;15820:93;15909:3;15820:93;:::i;:::-;15938:2;15933:3;15929:12;15922:19;;15581:366;;;:::o;15953:419::-;16119:4;16157:2;16146:9;16142:18;16134:26;;16206:9;16200:4;16196:20;16192:1;16181:9;16177:17;16170:47;16234:131;16360:4;16234:131;:::i;:::-;16226:139;;15953:419;;;:::o;16378:222::-;16518:34;16514:1;16506:6;16502:14;16495:58;16587:5;16582:2;16574:6;16570:15;16563:30;16378:222;:::o;16606:366::-;16748:3;16769:67;16833:2;16828:3;16769:67;:::i;:::-;16762:74;;16845:93;16934:3;16845:93;:::i;:::-;16963:2;16958:3;16954:12;16947:19;;16606:366;;;:::o;16978:419::-;17144:4;17182:2;17171:9;17167:18;17159:26;;17231:9;17225:4;17221:20;17217:1;17206:9;17202:17;17195:47;17259:131;17385:4;17259:131;:::i;:::-;17251:139;;16978:419;;;:::o;17403:225::-;17543:34;17539:1;17531:6;17527:14;17520:58;17612:8;17607:2;17599:6;17595:15;17588:33;17403:225;:::o;17634:366::-;17776:3;17797:67;17861:2;17856:3;17797:67;:::i;:::-;17790:74;;17873:93;17962:3;17873:93;:::i;:::-;17991:2;17986:3;17982:12;17975:19;;17634:366;;;:::o;18006:419::-;18172:4;18210:2;18199:9;18195:18;18187:26;;18259:9;18253:4;18249:20;18245:1;18234:9;18230:17;18223:47;18287:131;18413:4;18287:131;:::i;:::-;18279:139;;18006:419;;;:::o;18431:182::-;18571:34;18567:1;18559:6;18555:14;18548:58;18431:182;:::o;18619:366::-;18761:3;18782:67;18846:2;18841:3;18782:67;:::i;:::-;18775:74;;18858:93;18947:3;18858:93;:::i;:::-;18976:2;18971:3;18967:12;18960:19;;18619:366;;;:::o;18991:419::-;19157:4;19195:2;19184:9;19180:18;19172:26;;19244:9;19238:4;19234:20;19230:1;19219:9;19215:17;19208:47;19272:131;19398:4;19272:131;:::i;:::-;19264:139;;18991:419;;;:::o;19416:220::-;19556:34;19552:1;19544:6;19540:14;19533:58;19625:3;19620:2;19612:6;19608:15;19601:28;19416:220;:::o;19642:366::-;19784:3;19805:67;19869:2;19864:3;19805:67;:::i;:::-;19798:74;;19881:93;19970:3;19881:93;:::i;:::-;19999:2;19994:3;19990:12;19983:19;;19642:366;;;:::o;20014:419::-;20180:4;20218:2;20207:9;20203:18;20195:26;;20267:9;20261:4;20257:20;20253:1;20242:9;20238:17;20231:47;20295:131;20421:4;20295:131;:::i;:::-;20287:139;;20014:419;;;:::o;20439:221::-;20579:34;20575:1;20567:6;20563:14;20556:58;20648:4;20643:2;20635:6;20631:15;20624:29;20439:221;:::o;20666:366::-;20808:3;20829:67;20893:2;20888:3;20829:67;:::i;:::-;20822:74;;20905:93;20994:3;20905:93;:::i;:::-;21023:2;21018:3;21014:12;21007:19;;20666:366;;;:::o;21038:419::-;21204:4;21242:2;21231:9;21227:18;21219:26;;21291:9;21285:4;21281:20;21277:1;21266:9;21262:17;21255:47;21319:131;21445:4;21319:131;:::i;:::-;21311:139;;21038:419;;;:::o;21463:170::-;21603:22;21599:1;21591:6;21587:14;21580:46;21463:170;:::o;21639:366::-;21781:3;21802:67;21866:2;21861:3;21802:67;:::i;:::-;21795:74;;21878:93;21967:3;21878:93;:::i;:::-;21996:2;21991:3;21987:12;21980:19;;21639:366;;;:::o;22011:419::-;22177:4;22215:2;22204:9;22200:18;22192:26;;22264:9;22258:4;22254:20;22250:1;22239:9;22235:17;22228:47;22292:131;22418:4;22292:131;:::i;:::-;22284:139;;22011:419;;;:::o;22436:166::-;22576:18;22572:1;22564:6;22560:14;22553:42;22436:166;:::o;22608:366::-;22750:3;22771:67;22835:2;22830:3;22771:67;:::i;:::-;22764:74;;22847:93;22936:3;22847:93;:::i;:::-;22965:2;22960:3;22956:12;22949:19;;22608:366;;;:::o;22980:419::-;23146:4;23184:2;23173:9;23169:18;23161:26;;23233:9;23227:4;23223:20;23219:1;23208:9;23204:17;23197:47;23261:131;23387:4;23261:131;:::i;:::-;23253:139;;22980:419;;;:::o

Swarm Source

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