ETH Price: $3,378.04 (+1.47%)

Token

Pamp Network (PAMP)
 

Overview

Max Total Supply

296,042,148.144412436165934216 PAMP

Holders

2,069 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,861 PAMP

Value
$0.00
0xe1da0e908dc1a9121c9e1fc5e5bb1e5d1de578b1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Pamp Network is a price-reactive cryptocurrency that adjusts its inflation rate based on market demand, generally for stacking.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PampToken

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-24
*/

/**
 *Submitted for verification at Etherscan.io on 2020-06-06
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

abstract contract StakePampToken {
    function transferHook(address sender, address recipient, uint256 amount, uint256 senderBalance, uint256 recipientBalance) external virtual returns (uint256, uint256, uint256);
    function updateMyStakes(address staker, uint256 balance, uint256 totalSupply) external virtual returns (uint256);
}


/**
 * @dev Implementation of the Pamp Network: https://pamp.network
 * Pamp Network (PAMP) is the world's first price-reactive cryptocurrency.
 * That is, the inflation rate of the token is wholly dependent on its market activity.
 * Minting does not happen when the price is less than the day prior.
 * When the price is greater than the day prior, the inflation for that day is
 * a function of its price, percent increase, volume, any positive price streaks,
 * and the amount of time any given holder has been holding.
 * In the first iteration, the dev team acts as the price oracle, but in the future, we plan to integrate a Chainlink price oracle.
 */
contract PampToken is Ownable, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;
    
    uint256 private _totalSupply;
    
    string public constant _name = "Pamp Network";
    string public constant _symbol = "PAMP";
    uint8 public constant _decimals = 18;
    
    StakePampToken public _stakingContract;
    
    bool private _stakingEnabled;
    
    modifier onlyStakingContract() {
        require(msg.sender == address(_stakingContract), "Ownable: caller is not the staking contract");
        _;
    }
    
    event ErrorMessage(string errorMessage);
    
     
    constructor () public {
        _mint(msg.sender, 3000000E18);
        _stakingEnabled = false;
    }
    
    
    
    function updateMyStakes() public {
        
        require(_stakingEnabled, "Staking is disabled");
        
        
        try _stakingContract.updateMyStakes(msg.sender, _balances[msg.sender], _totalSupply) returns (uint256 numTokens) {
            _mint(msg.sender, numTokens);
        } catch Error (string memory error) {
            emit ErrorMessage(error);
        }
    }
    
    function updateStakingContract(StakePampToken stakingContract) external onlyOwner {
        _stakingContract = stakingContract;
        _stakingEnabled = true;
    }
    

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
        
        if(_stakingEnabled) {
            
            try _stakingContract.transferHook(sender, recipient, amount, _balances[sender], _balances[recipient]) returns (uint256 senderBalance, uint256 recipientBalance, uint256 burnAmount) {
            
                _balances[sender] = senderBalance;
                _balances[recipient] = recipientBalance;
                _totalSupply = _totalSupply.sub(burnAmount);
                if (burnAmount > 0) {
                    emit Transfer(sender, recipient, amount.sub(burnAmount));
                    emit Transfer(sender, address(0), burnAmount);
                } else {
                    emit Transfer(sender, recipient, amount);
                }
            } catch Error (string memory error) {
                emit ErrorMessage(error);
            }
            
        } else {
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    }

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    
    
    function mint(address account, uint256 amount) public onlyStakingContract {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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) external onlyStakingContract {

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    
    function burn(uint256 amount) external {
        _balances[_msgSender()] = _balances[_msgSender()].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(_msgSender(), address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is 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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"errorMessage","type":"string"}],"name":"ErrorMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingContract","outputs":[{"internalType":"contract StakePampToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateMyStakes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract StakePampToken","name":"stakingContract","type":"address"}],"name":"updateStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506000620000276001600160e01b03620000a416565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000091336a027b46536c66c8e30000006001600160e01b03620000a816565b6004805460ff60a01b191690556200020f565b3390565b6001600160a01b03821662000104576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200012081600354620001ad60201b62000dbd1790919060201c565b6003556001600160a01b0382166000908152600160209081526040909120546200015591839062000dbd620001ad821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000208576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611662806200021f6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636161eb18116100c3578063a9059cbb1161007c578063a9059cbb146103dc578063b09f126614610408578063b0de5e2914610410578063d28d885214610418578063dd62ed3e14610420578063f2fde38b1461044e5761014d565b80636161eb181461032a57806370a0823114610356578063715018a61461037c5780638da5cb5b1461038457806395d89b41146103a8578063a457c2d7146103b05761014d565b806332424aa31161011557806332424aa31461027d5780633347e4d61461028557806339509351146102ad57806340c10f19146102d957806342966c681461030557806359351e17146103225761014d565b806306fdde0314610152578063095ea7b3146101cf57806318160ddd1461020f57806323b872dd14610229578063313ce5671461025f575b600080fd5b61015a610474565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b03813516906020013561049b565b604080519115158252519081900360200190f35b6102176104b8565b60408051918252519081900360200190f35b6101fb6004803603606081101561023f57600080fd5b506001600160a01b038135811691602081013590911690604001356104be565b61026761054b565b6040805160ff9092168252519081900360200190f35b610267610550565b6102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610555565b005b6101fb600480360360408110156102c357600080fd5b506001600160a01b0381351690602001356105ef565b6102ab600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610643565b6102ab6004803603602081101561031b57600080fd5b503561076c565b6102ab61080c565b6102ab6004803603604081101561034057600080fd5b506001600160a01b0381351690602001356109c5565b6102176004803603602081101561036c57600080fd5b50356001600160a01b0316610ab3565b6102ab610ace565b61038c610b82565b604080516001600160a01b039092168252519081900360200190f35b61015a610b91565b6101fb600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610baf565b6101fb600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610c1d565b61015a610c31565b61038c610c51565b61015a610c60565b6102176004803603604081101561043657600080fd5b506001600160a01b0381358116916020013516610c88565b6102ab6004803603602081101561046457600080fd5b50356001600160a01b0316610cb3565b60408051808201909152600c81526b50616d70204e6574776f726b60a01b60208201525b90565b60006104af6104a8610e1e565b8484610e22565b50600192915050565b60035490565b60006104cb848484610f0e565b610541846104d7610e1e565b61053c85604051806060016040528060288152602001611577602891396001600160a01b038a16600090815260026020526040812090610515610e1e565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61131116565b610e22565b5060019392505050565b601290565b601281565b61055d610e1e565b6000546001600160a01b039081169116146105bf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004805460ff60a01b196001600160a01b039093166001600160a01b03199091161791909116600160a01b179055565b60006104af6105fc610e1e565b8461053c856002600061060d610e1e565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610dbd16565b6004546001600160a01b0316331461068c5760405162461bcd60e51b815260040180806020018281038252602b8152602001806114de602b913960400191505060405180910390fd5b6001600160a01b0382166106e7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546106fa908263ffffffff610dbd16565b6003556001600160a01b038216600090815260016020526040902054610726908263ffffffff610dbd16565b6001600160a01b038316600081815260016020908152604080832094909455835185815293519293919260008051602061159f8339815191529281900390910190a35050565b610795816040518060600160405280602281526020016114bc6022913960016000610515610e1e565b600160006107a1610e1e565b6001600160a01b031681526020810191909152604001600020556003546107ce908263ffffffff6113a816565b60035560006107db610e1e565b6001600160a01b031660008051602061159f833981519152836040518082815260200191505060405180910390a350565b600454600160a01b900460ff16610860576040805162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b6004805433600081815260016020908152604080832054600354825163b1fba3ed60e01b8152978801959095526024870152604486019390935291516001600160a01b039093169363b1fba3ed936064808301949391928390030190829087803b1580156108cd57600080fd5b505af19250505080156108f257506040513d60208110156108ed57600080fd5b505160015b6109b7576108fe6113f0565b8061090957506109a8565b7fa183e9a5f6222d4c98fb5b98e0442aaabd70de89b6ec74508bce501a2441f5f9816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610968578181015183820152602001610950565b50505050905090810190601f1680156109955780820380516001836020036101000a031916815260200191505b509250505060405180910390a1506109b2565b3d6000803e3d6000fd5b6109c3565b6109c1338261068c565b505b565b6004546001600160a01b03163314610a0e5760405162461bcd60e51b815260040180806020018281038252602b8152602001806114de602b913960400191505060405180910390fd5b610a51816040518060600160405280602281526020016114bc602291396001600160a01b038516600090815260016020526040902054919063ffffffff61131116565b6001600160a01b038316600090815260016020526040902055600354610a7d908263ffffffff6113a816565b6003556040805182815290516000916001600160a01b0385169160008051602061159f8339815191529181900360200190a35050565b6001600160a01b031660009081526001602052604090205490565b610ad6610e1e565b6000546001600160a01b03908116911614610b38576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b604080518082019091526004815263050414d560e41b602082015290565b60006104af610bbc610e1e565b8461053c856040518060600160405280602581526020016116086025913960026000610be6610e1e565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61131116565b60006104af610c2a610e1e565b8484610f0e565b60405180604001604052806004815260200163050414d560e41b81525081565b6004546001600160a01b031681565b6040518060400160405280600c81526020016b50616d70204e6574776f726b60a01b81525081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610cbb610e1e565b6000546001600160a01b03908116911614610d1d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610d625760405162461bcd60e51b81526004018080602001828103825260268152602001806115096026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610e17576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610e675760405162461bcd60e51b81526004018080602001828103825260248152602001806115e46024913960400191505060405180910390fd5b6001600160a01b038216610eac5760405162461bcd60e51b815260040180806020018281038252602281526020018061152f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f535760405162461bcd60e51b81526004018080602001828103825260258152602001806115bf6025913960400191505060405180910390fd5b6001600160a01b038216610f985760405162461bcd60e51b81526004018080602001828103825260238152602001806114996023913960400191505060405180910390fd5b6001600160a01b038316600090815260016020526040902054811115610fef5760405162461bcd60e51b81526004018080602001828103825260268152602001806115516026913960400191505060405180910390fd5b600454600160a01b900460ff161561126857600480546001600160a01b03858116600081815260016020526040808220548885168084528284205483516338aa7e6f60e11b8152988901959095526024880152604487018890526064870152608486019290925290519190921692637154fcde9260a48083019360609390929083900390910190829087803b15801561108757600080fd5b505af19250505080156110bb57506040513d60608110156110a757600080fd5b508051602082015160409092015190919060015b611171576110c76113f0565b806110d257506109a8565b7fa183e9a5f6222d4c98fb5b98e0442aaabd70de89b6ec74508bce501a2441f5f9816040518080602001828103825283818151815260200191508051906020019080838360005b83811015611131578181015183820152602001611119565b50505050905090810190601f16801561115e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150611263565b6001600160a01b038087166000908152600160205260408082208690559187168152208290556003546111aa908263ffffffff6113a816565b6003558015611225576001600160a01b0380861690871660008051602061159f8339815191526111e0878563ffffffff6113a816565b60408051918252519081900360200190a36040805182815290516000916001600160a01b0389169160008051602061159f8339815191529181900360200190a361125f565b846001600160a01b0316866001600160a01b031660008051602061159f833981519152866040518082815260200191505060405180910390a35b5050505b61130c565b6001600160a01b038316600090815260016020526040902054611291908263ffffffff6113a816565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112c6908263ffffffff610dbd16565b6001600160a01b03808416600081815260016020908152604091829020949094558051858152905191939287169260008051602061159f83398151915292918290030190a35b505050565b600081848411156113a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561136557818101518382015260200161134d565b50505050905090810190601f1680156113925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000610e1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611311565b60e01c90565b600060443d101561140057610498565b600481823e6308c379a061141482516113ea565b1461141e57610498565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561144e5750505050610498565b828401915081519250808311156114685750505050610498565b503d8301602083830101111561148057505050610498565b601f91909101601f191681016020016040529150509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865207374616b696e6720636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220816ed00bf0f05588e10823910551445fe0477b0dd035a7b2a76b21875f860ac764736f6c63430006090033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80636161eb18116100c3578063a9059cbb1161007c578063a9059cbb146103dc578063b09f126614610408578063b0de5e2914610410578063d28d885214610418578063dd62ed3e14610420578063f2fde38b1461044e5761014d565b80636161eb181461032a57806370a0823114610356578063715018a61461037c5780638da5cb5b1461038457806395d89b41146103a8578063a457c2d7146103b05761014d565b806332424aa31161011557806332424aa31461027d5780633347e4d61461028557806339509351146102ad57806340c10f19146102d957806342966c681461030557806359351e17146103225761014d565b806306fdde0314610152578063095ea7b3146101cf57806318160ddd1461020f57806323b872dd14610229578063313ce5671461025f575b600080fd5b61015a610474565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b03813516906020013561049b565b604080519115158252519081900360200190f35b6102176104b8565b60408051918252519081900360200190f35b6101fb6004803603606081101561023f57600080fd5b506001600160a01b038135811691602081013590911690604001356104be565b61026761054b565b6040805160ff9092168252519081900360200190f35b610267610550565b6102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610555565b005b6101fb600480360360408110156102c357600080fd5b506001600160a01b0381351690602001356105ef565b6102ab600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610643565b6102ab6004803603602081101561031b57600080fd5b503561076c565b6102ab61080c565b6102ab6004803603604081101561034057600080fd5b506001600160a01b0381351690602001356109c5565b6102176004803603602081101561036c57600080fd5b50356001600160a01b0316610ab3565b6102ab610ace565b61038c610b82565b604080516001600160a01b039092168252519081900360200190f35b61015a610b91565b6101fb600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610baf565b6101fb600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610c1d565b61015a610c31565b61038c610c51565b61015a610c60565b6102176004803603604081101561043657600080fd5b506001600160a01b0381358116916020013516610c88565b6102ab6004803603602081101561046457600080fd5b50356001600160a01b0316610cb3565b60408051808201909152600c81526b50616d70204e6574776f726b60a01b60208201525b90565b60006104af6104a8610e1e565b8484610e22565b50600192915050565b60035490565b60006104cb848484610f0e565b610541846104d7610e1e565b61053c85604051806060016040528060288152602001611577602891396001600160a01b038a16600090815260026020526040812090610515610e1e565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61131116565b610e22565b5060019392505050565b601290565b601281565b61055d610e1e565b6000546001600160a01b039081169116146105bf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004805460ff60a01b196001600160a01b039093166001600160a01b03199091161791909116600160a01b179055565b60006104af6105fc610e1e565b8461053c856002600061060d610e1e565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610dbd16565b6004546001600160a01b0316331461068c5760405162461bcd60e51b815260040180806020018281038252602b8152602001806114de602b913960400191505060405180910390fd5b6001600160a01b0382166106e7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546106fa908263ffffffff610dbd16565b6003556001600160a01b038216600090815260016020526040902054610726908263ffffffff610dbd16565b6001600160a01b038316600081815260016020908152604080832094909455835185815293519293919260008051602061159f8339815191529281900390910190a35050565b610795816040518060600160405280602281526020016114bc6022913960016000610515610e1e565b600160006107a1610e1e565b6001600160a01b031681526020810191909152604001600020556003546107ce908263ffffffff6113a816565b60035560006107db610e1e565b6001600160a01b031660008051602061159f833981519152836040518082815260200191505060405180910390a350565b600454600160a01b900460ff16610860576040805162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b6004805433600081815260016020908152604080832054600354825163b1fba3ed60e01b8152978801959095526024870152604486019390935291516001600160a01b039093169363b1fba3ed936064808301949391928390030190829087803b1580156108cd57600080fd5b505af19250505080156108f257506040513d60208110156108ed57600080fd5b505160015b6109b7576108fe6113f0565b8061090957506109a8565b7fa183e9a5f6222d4c98fb5b98e0442aaabd70de89b6ec74508bce501a2441f5f9816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610968578181015183820152602001610950565b50505050905090810190601f1680156109955780820380516001836020036101000a031916815260200191505b509250505060405180910390a1506109b2565b3d6000803e3d6000fd5b6109c3565b6109c1338261068c565b505b565b6004546001600160a01b03163314610a0e5760405162461bcd60e51b815260040180806020018281038252602b8152602001806114de602b913960400191505060405180910390fd5b610a51816040518060600160405280602281526020016114bc602291396001600160a01b038516600090815260016020526040902054919063ffffffff61131116565b6001600160a01b038316600090815260016020526040902055600354610a7d908263ffffffff6113a816565b6003556040805182815290516000916001600160a01b0385169160008051602061159f8339815191529181900360200190a35050565b6001600160a01b031660009081526001602052604090205490565b610ad6610e1e565b6000546001600160a01b03908116911614610b38576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b604080518082019091526004815263050414d560e41b602082015290565b60006104af610bbc610e1e565b8461053c856040518060600160405280602581526020016116086025913960026000610be6610e1e565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61131116565b60006104af610c2a610e1e565b8484610f0e565b60405180604001604052806004815260200163050414d560e41b81525081565b6004546001600160a01b031681565b6040518060400160405280600c81526020016b50616d70204e6574776f726b60a01b81525081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610cbb610e1e565b6000546001600160a01b03908116911614610d1d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610d625760405162461bcd60e51b81526004018080602001828103825260268152602001806115096026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610e17576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610e675760405162461bcd60e51b81526004018080602001828103825260248152602001806115e46024913960400191505060405180910390fd5b6001600160a01b038216610eac5760405162461bcd60e51b815260040180806020018281038252602281526020018061152f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f535760405162461bcd60e51b81526004018080602001828103825260258152602001806115bf6025913960400191505060405180910390fd5b6001600160a01b038216610f985760405162461bcd60e51b81526004018080602001828103825260238152602001806114996023913960400191505060405180910390fd5b6001600160a01b038316600090815260016020526040902054811115610fef5760405162461bcd60e51b81526004018080602001828103825260268152602001806115516026913960400191505060405180910390fd5b600454600160a01b900460ff161561126857600480546001600160a01b03858116600081815260016020526040808220548885168084528284205483516338aa7e6f60e11b8152988901959095526024880152604487018890526064870152608486019290925290519190921692637154fcde9260a48083019360609390929083900390910190829087803b15801561108757600080fd5b505af19250505080156110bb57506040513d60608110156110a757600080fd5b508051602082015160409092015190919060015b611171576110c76113f0565b806110d257506109a8565b7fa183e9a5f6222d4c98fb5b98e0442aaabd70de89b6ec74508bce501a2441f5f9816040518080602001828103825283818151815260200191508051906020019080838360005b83811015611131578181015183820152602001611119565b50505050905090810190601f16801561115e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150611263565b6001600160a01b038087166000908152600160205260408082208690559187168152208290556003546111aa908263ffffffff6113a816565b6003558015611225576001600160a01b0380861690871660008051602061159f8339815191526111e0878563ffffffff6113a816565b60408051918252519081900360200190a36040805182815290516000916001600160a01b0389169160008051602061159f8339815191529181900360200190a361125f565b846001600160a01b0316866001600160a01b031660008051602061159f833981519152866040518082815260200191505060405180910390a35b5050505b61130c565b6001600160a01b038316600090815260016020526040902054611291908263ffffffff6113a816565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112c6908263ffffffff610dbd16565b6001600160a01b03808416600081815260016020908152604091829020949094558051858152905191939287169260008051602061159f83398151915292918290030190a35b505050565b600081848411156113a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561136557818101518382015260200161134d565b50505050905090810190601f1680156113925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000610e1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611311565b60e01c90565b600060443d101561140057610498565b600481823e6308c379a061141482516113ea565b1461141e57610498565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561144e5750505050610498565b828401915081519250808311156114685750505050610498565b503d8301602083830101111561148057505050610498565b601f91909101601f191681016020016040529150509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865207374616b696e6720636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220816ed00bf0f05588e10823910551445fe0477b0dd035a7b2a76b21875f860ac764736f6c63430006090033

Deployed Bytecode Sourcemap

11181:10517:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12683:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14789:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14789:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13758:100;;;:::i;:::-;;;;;;;;;;;;;;;;15432:321;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15432:321:0;;;;;;;;;;;;;;;;;:::i;13610:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11537:36;;;:::i;12439:168::-;;;;;;;;;;;;;;;;-1:-1:-1;12439:168:0;-1:-1:-1;;;;;12439:168:0;;:::i;:::-;;16162:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16162:218:0;;;;;;;;:::i;19685:325::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19685:325:0;;;;;;;;:::i;20644:265::-;;;;;;;;;;;;;;;;-1:-1:-1;20644:265:0;;:::i;12034:393::-;;;:::i;20342:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20342:290:0;;;;;;;;:::i;13921:119::-;;;;;;;;;;;;;;;;-1:-1:-1;13921:119:0;-1:-1:-1;;;;;13921:119:0;;:::i;9614:148::-;;;:::i;8972:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;8972:79:0;;;;;;;;;;;;;;12885:87;;;:::i;16883:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16883:269:0;;;;;;;;:::i;14253:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14253:175:0;;;;;;;;:::i;11491:39::-;;;:::i;11586:38::-;;;:::i;11439:45::-;;;:::i;14491:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14491:151:0;;;;;;;;;;:::i;9917:244::-;;;;;;;;;;;;;;;;-1:-1:-1;9917:244:0;-1:-1:-1;;;;;9917:244:0;;:::i;12683:83::-;12753:5;;;;;;;;;;;;-1:-1:-1;;;12753:5:0;;;;12683:83;;:::o;14789:169::-;14872:4;14889:39;14898:12;:10;:12::i;:::-;14912:7;14921:6;14889:8;:39::i;:::-;-1:-1:-1;14946:4:0;14789:169;;;;:::o;13758:100::-;13838:12;;13758:100;:::o;15432:321::-;15538:4;15555:36;15565:6;15573:9;15584:6;15555:9;:36::i;:::-;15602:121;15611:6;15619:12;:10;:12::i;:::-;15633:89;15671:6;15633:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15633:19:0;;;;;;:11;:19;;;;;;15653:12;:10;:12::i;:::-;-1:-1:-1;;;;;15633:33:0;;;;;;;;;;;;-1:-1:-1;15633:33:0;;;:89;;:37;:89;:::i;:::-;15602:8;:121::i;:::-;-1:-1:-1;15741:4:0;15432:321;;;;;:::o;13610:83::-;11571:2;13610:83;:::o;11537:36::-;11571:2;11537:36;:::o;12439:168::-;9194:12;:10;:12::i;:::-;9184:6;;-1:-1:-1;;;;;9184:6:0;;;:22;;;9176:67;;;;;-1:-1:-1;;;9176:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12532:16:::1;:34:::0;;-1:-1:-1;;;;;;;;;12532:34:0;;::::1;-1:-1:-1::0;;;;;;12532:34:0;;::::1;;12577:22:::0;;;::::1;-1:-1:-1::0;;;12577:22:0::1;::::0;;12439:168::o;16162:218::-;16250:4;16267:83;16276:12;:10;:12::i;:::-;16290:7;16299:50;16338:10;16299:11;:25;16311:12;:10;:12::i;:::-;-1:-1:-1;;;;;16299:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;16299:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;19685:325::-;11750:16;;-1:-1:-1;;;;;11750:16:0;11728:10;:39;11720:95;;;;-1:-1:-1;;;11720:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19778:21:0;::::1;19770:65;;;::::0;;-1:-1:-1;;;19770:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19863:12;::::0;:24:::1;::::0;19880:6;19863:24:::1;:16;:24;:::i;:::-;19848:12;:39:::0;-1:-1:-1;;;;;19919:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:30:::1;::::0;19942:6;19919:30:::1;:22;:30;:::i;:::-;-1:-1:-1::0;;;;;19898:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;:51;;;;19965:37;;;;;;;19898:18;;;;-1:-1:-1;;;;;;;;;;;19965:37:0;;;;;;;;::::1;19685:325:::0;;:::o;20644:265::-;20720:73;20748:6;20720:73;;;;;;;;;;;;;;;;;:9;:23;20730:12;:10;:12::i;20720:73::-;20694:9;:23;20704:12;:10;:12::i;:::-;-1:-1:-1;;;;;20694:23:0;;;;;;;;;;;;-1:-1:-1;20694:23:0;:99;20819:12;;:24;;20836:6;20819:24;:16;:24;:::i;:::-;20804:12;:39;20890:1;20868:12;:10;:12::i;:::-;-1:-1:-1;;;;;20859:42:0;-1:-1:-1;;;;;;;;;;;20894:6:0;20859:42;;;;;;;;;;;;;;;;;;20644:265;:::o;12034:393::-;12096:15;;-1:-1:-1;;;12096:15:0;;;;12088:47;;;;;-1:-1:-1;;;12088:47:0;;;;;;;;;;;;-1:-1:-1;;;12088:47:0;;;;;;;;;;;;;;;12170:16;;;12202:10;12170:16;12214:21;;;12170:16;12214:21;;;;;;;;;12237:12;;12170:80;;-1:-1:-1;;;12170:80:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12170:16:0;;;;:31;;:80;;;;;12214:21;12170:80;;;;;;;;;:16;:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12170:80:0;;;12166:254;;;;;;;;;;;;;12389:19;12402:5;12389:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12335:85;12166:254;;;;;;;;;;;;;;12294:28;12300:10;12312:9;12294:5;:28::i;:::-;12251:83;12166:254;12034:393::o;20342:290::-;11750:16;;-1:-1:-1;;;;;11750:16:0;11728:10;:39;11720:95;;;;-1:-1:-1;;;11720:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20453:68:::1;20476:6;20453:68;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20453:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;:68;::::1;:22;:68;:::i;:::-;-1:-1:-1::0;;;;;20432:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:89;20547:12:::1;::::0;:24:::1;::::0;20564:6;20547:24:::1;:16;:24;:::i;:::-;20532:12;:39:::0;20587:37:::1;::::0;;;;;;;20613:1:::1;::::0;-1:-1:-1;;;;;20587:37:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;20587:37:0;;;;::::1;::::0;;::::1;20342:290:::0;;:::o;13921:119::-;-1:-1:-1;;;;;14014:18:0;13987:7;14014:18;;;:9;:18;;;;;;;13921:119::o;9614:148::-;9194:12;:10;:12::i;:::-;9184:6;;-1:-1:-1;;;;;9184:6:0;;;:22;;;9176:67;;;;;-1:-1:-1;;;9176:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9721:1:::1;9705:6:::0;;9684:40:::1;::::0;-1:-1:-1;;;;;9705:6:0;;::::1;::::0;9684:40:::1;::::0;9721:1;;9684:40:::1;9752:1;9735:19:::0;;-1:-1:-1;;;;;;9735:19:0::1;::::0;;9614:148::o;8972:79::-;9010:7;9037:6;-1:-1:-1;;;;;9037:6:0;8972:79;:::o;12885:87::-;12957:7;;;;;;;;;;;;-1:-1:-1;;;12957:7:0;;;;12885:87;:::o;16883:269::-;16976:4;16993:129;17002:12;:10;:12::i;:::-;17016:7;17025:96;17064:15;17025:96;;;;;;;;;;;;;;;;;:11;:25;17037:12;:10;:12::i;:::-;-1:-1:-1;;;;;17025:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17025:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;14253:175::-;14339:4;14356:42;14366:12;:10;:12::i;:::-;14380:9;14391:6;14356:9;:42::i;11491:39::-;;;;;;;;;;;;;;-1:-1:-1;;;11491:39:0;;;;:::o;11586:38::-;;;-1:-1:-1;;;;;11586:38:0;;:::o;11439:45::-;;;;;;;;;;;;;;-1:-1:-1;;;11439:45:0;;;;:::o;14491:151::-;-1:-1:-1;;;;;14607:18:0;;;14580:7;14607:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14491:151::o;9917:244::-;9194:12;:10;:12::i;:::-;9184:6;;-1:-1:-1;;;;;9184:6:0;;;:22;;;9176:67;;;;;-1:-1:-1;;;9176:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10006:22:0;::::1;9998:73;;;;-1:-1:-1::0;;;9998:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10108:6;::::0;;10087:38:::1;::::0;-1:-1:-1;;;;;10087:38:0;;::::1;::::0;10108:6;::::1;::::0;10087:38:::1;::::0;::::1;10136:6;:17:::0;;-1:-1:-1;;;;;;10136:17:0::1;-1:-1:-1::0;;;;;10136:17:0;;;::::1;::::0;;;::::1;::::0;;9917:244::o;4067:181::-;4125:7;4157:5;;;4181:6;;;;4173:46;;;;;-1:-1:-1;;;4173:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:1;4067:181;-1:-1:-1;;;4067:181:0:o;2881:106::-;2969:10;2881:106;:::o;21349:346::-;-1:-1:-1;;;;;21451:19:0;;21443:68;;;;-1:-1:-1;;;21443:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21530:21:0;;21522:68;;;;-1:-1:-1;;;21522:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21603:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21655:32;;;;;;;;;;;;;;;;;21349:346;;;:::o;17642:1428::-;-1:-1:-1;;;;;17758:20:0;;17750:70;;;;-1:-1:-1;;;17750:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17839:23:0;;17831:71;;;;-1:-1:-1;;;17831:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17921:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;17921:27:0;17913:78;;;;-1:-1:-1;;;17913:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18015:15;;-1:-1:-1;;;18015:15:0;;;;18012:1051;;;18065:16;;;-1:-1:-1;;;;;18122:17:0;;;18065:16;18122:17;;;18065:16;18122:17;;;;;;;18141:20;;;;;;;;;;18065:97;;-1:-1:-1;;;18065:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;;;;;:29;;:97;;;;;;;;;;;;;;;;;;;:16;:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18065:97:0;;;;;;;;;;;;;;;;18061:770;;;;;;;;;;;;;18796:19;18809:5;18796:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18738:93;18061:770;;;-1:-1:-1;;;;;18274:17:0;;;;;;;:9;:17;;;;;;:33;;;18326:20;;;;;;:39;;;18399:12;;:28;;18416:10;18399:28;:16;:28;:::i;:::-;18384:12;:43;18450:14;;18446:276;;-1:-1:-1;;;;;18494:51:0;;;;;;-1:-1:-1;;;;;;;;;;;18522:22:0;:6;18533:10;18522:22;:10;:22;:::i;:::-;18494:51;;;;;;;;;;;;;;;18573:40;;;;;;;;18598:1;;-1:-1:-1;;;;;18573:40:0;;;-1:-1:-1;;;;;;;;;;;18573:40:0;;;;;;;;18446:276;;;18684:9;-1:-1:-1;;;;;18667:35:0;18676:6;-1:-1:-1;;;;;18667:35:0;-1:-1:-1;;;;;;;;;;;18695:6:0;18667:35;;;;;;;;;;;;;;;;;;18446:276;18163:574;;;18061:770;18012:1051;;;-1:-1:-1;;;;;18897:17:0;;;;;;:9;:17;;;;;;:29;;18919:6;18897:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;18877:17:0;;;;;;;:9;:17;;;;;;:49;;;;18964:20;;;;;;;:32;;18989:6;18964:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;18941:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;19016:35;;;;;;;18941:20;;19016:35;;;;-1:-1:-1;;;;;;;;;;;19016:35:0;;;;;;;;18012:1051;17642:1428;;;:::o;4954:192::-;5040:7;5076:12;5068:6;;;;5060:29;;;;-1:-1:-1;;;5060:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5112:5:0;;;4954:192::o;4523:136::-;4581:7;4608:43;4612:1;4615;4608:43;;;;;;;;;;;;;;;;;:3;:43::i;110:106:-1:-;195:3;191:15;;163:53;224:739;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;;;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;;;;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;

Swarm Source

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