ETH Price: $1,994.19 (+0.37%)
Gas: 0.36 Gwei
 

Overview

Max Total Supply

420,420,420,420.42042042042042042 MEME

Holders

40

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MEMESZN

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 3 of 4: meme-szn.sol
// SPDX-License-Identifier: Unlicensed
//meme-szn.sol

//███╗░░░███╗███████╗███╗░░░███╗███████╗░██████╗███████╗███╗░░██╗
//████╗░████║██╔════╝████╗░████║██╔════╝██╔════╝╚════██║████╗░██║
//██╔████╔██║█████╗░░██╔████╔██║█████╗░░╚█████╗░░░███╔═╝██╔██╗██║
//██║╚██╔╝██║██╔══╝░░██║╚██╔╝██║██╔══╝░░░╚═══██╗██╔══╝░░██║╚████║
//██║░╚═╝░██║███████╗██║░╚═╝░██║███████╗██████╔╝███████╗██║░╚███║
//╚═╝░░░░░╚═╝╚══════╝╚═╝░░░░░╚═╝╚══════╝╚═════╝░╚══════╝╚═╝░░╚══╝

pragma solidity 0.8.10;

import "./SafeMath.sol";
import "./IERC20.sol";
import "./Address.sol";

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

////////////////////////////////////////////////
////////////////////EVENTS/////////////////////
//////////////////////////////////////////////

contract TokenEvents {
    
    //when a user stakes tokens
    event TokenStake(
        address indexed user,
        uint value
    );

    //when a user unstakes tokens
    event TokenUnstake(
        address indexed user,
        uint value
    );
    
    //when a user burns tokens
    event TokenBurn(
        address indexed user,
        uint value
    );
    
}

//////////////////////////////////////
//////////MEMESZN TOKEN CONTRACT////////
////////////////////////////////////
contract MEMESZN is IERC20, TokenEvents {

    using SafeMath for uint256;
    using SafeMath for uint64;
    using SafeMath for uint32;
    using SafeMath for uint16;
    using SafeMath for uint8;

    using SafeERC20 for MEMESZN;
    
    mapping (address => uint256) private _balances;

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

    //stake setup
    uint constant internal MINUTESECONDS = 60;
    uint constant internal DAYSECONDS = 86400;
    uint constant internal MINSTAKEDAYLENGTH = 7;
    uint256 public totalStaked;
    uint256 public totalBurned;
    //tokenomics
    uint256 internal _totalSupply;
    string public constant name = "memeszn";
    string public constant symbol = "MEME";
    uint8 public constant decimals = 18;

    bool private sync;
    
    mapping (address => Staker) public staker;
    
    struct Staker{
        uint256 stakedBalance;
        uint256 stakeStartTimestamp;
        uint256 totalStakingInterest;
        uint256 totalBurnt;
        uint256 totalReferralBonus;
        address referrer;
        bool activeUser;
    }
    
    //protects against potential reentrancy
    modifier synchronized {
        require(!sync, "Sync lock");
        sync = true;
        _;
        sync = false;
    }

    constructor(uint256 initialTokens) {
        _mint(msg.sender, initialTokens);
    }

    
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external 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) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, 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) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].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) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][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) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][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 {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply unless mintBLock is true
     *
     * 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 {
        uint256 amt = amount;
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amt);
        _balances[account] = _balances[account].add(amt);
        emit Transfer(address(0), account, amt);
    }

    /**
     * @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 {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, 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 {
        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 Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount, "ERC20: burn amount exceeds allowance"));
    }

    ////////////////////////////////////////////////////////
    /////////////////PUBLIC FACING - MEME CONTROL//////////
    //////////////////////////////////////////////////////
    
    
    ////////STAKING FUNCTIONS/////////
    
    //stake MEME tokens to contract and claims any accrued interest
    function StakeTokens(uint amt, address _referrer)
        external
        synchronized
    {
        require(amt > 0, "zero input");
        require(memeBalance() >= amt, "Error: insufficient balance");//ensure user has enough funds
        if(_referrer != address(0) && _referrer != msg.sender){
            if(staker[_referrer].activeUser && staker[msg.sender].referrer == address(0)){
               staker[msg.sender].referrer = _referrer;
            }
        }
        //claim any accrued interest
        claimInterest();
        //update balances
        staker[msg.sender].activeUser = true;
        staker[msg.sender].stakedBalance = staker[msg.sender].stakedBalance.add(amt);
        totalStaked = totalStaked.add(amt);
        _transfer(msg.sender, address(this), amt);//make transfer
        emit TokenStake(msg.sender, amt);
    }
    
    //unstake MEME tokens from contract and claims any accrued interest
    function UnstakeTokens()
        external
        synchronized
    {
        require(staker[msg.sender].stakedBalance > 0,"Error: unsufficient staked balance");//ensure user has enough staked funds
        require(isStakeFinished(msg.sender), "tokens cannot be unstaked yet. min 7 day stake");
        uint amt = staker[msg.sender].stakedBalance;
        //claim any accrued interest
        claimInterest();
        //zero out staking timestamp
        staker[msg.sender].stakeStartTimestamp = 0;
        staker[msg.sender].stakedBalance = 0;
        totalStaked = totalStaked.sub(amt);
        _transfer(address(this), msg.sender, amt);//make transfer
        emit TokenUnstake(msg.sender, amt);
    }
    
    //claim any accrued interest
    function ClaimStakeInterest()
        external
        synchronized
    {
        require(staker[msg.sender].stakedBalance > 0, "you have no staked balance");
        claimInterest();
    }
    
    //roll any accrued interest
    function RollStakeInterest()
        external
        synchronized
    {
        require(staker[msg.sender].stakedBalance > 0, "you have no staked balance");
        rollInterest();
    }
    
    function rollInterest()
        internal
    {
        //calculate staking interest
        uint256 interest = calcStakingRewards(msg.sender);
        //mint interest to contract, ref and devs
        if(interest > 0){
            _mint(address(this), interest);
            //roll interest
            staker[msg.sender].stakedBalance = staker[msg.sender].stakedBalance.add(interest);
            totalStaked = totalStaked.add(interest);
            staker[msg.sender].totalStakingInterest += interest;
            //reset staking timestamp
            staker[msg.sender].stakeStartTimestamp = block.timestamp;
            if(staker[msg.sender].referrer != address(0)){
                 _mint(staker[msg.sender].referrer, interest.div(20));//5% bonus for referrer
                 staker[staker[msg.sender].referrer].totalReferralBonus += interest.div(20);
            }
        }
    }
    
    function claimInterest()
        internal
    {
        //calculate staking interest
        uint256 interest = calcStakingRewards(msg.sender);
        //reset staking timestamp
        staker[msg.sender].stakeStartTimestamp = block.timestamp;
        //mint interest if any
        if(interest > 0){
            _mint(msg.sender, interest);
            staker[msg.sender].totalStakingInterest += interest;
            if(staker[msg.sender].referrer != address(0)){
                 _mint(staker[msg.sender].referrer, interest.div(20));//5% bonus for referrer
                 staker[staker[msg.sender].referrer].totalReferralBonus += interest.div(20);
            }
        }
    }

    //burn meme to increase staking APY to maximum 10x @ 42% APY
    function BurnMeme(uint amt)
        external
        synchronized
    {
        require(amt > 0, "value must be greater than 0");
        require(balanceOf(msg.sender) >= amt, "balance too low");
        //burn tokens of user
        _burn(msg.sender, amt);
        staker[msg.sender].totalBurnt += amt;
        totalBurned += amt;
        _totalSupply = _totalSupply.sub(amt);
        emit TokenBurn(msg.sender, amt);
    }

    ///////////////////////////////
    ////////VIEW ONLY//////////////
    ///////////////////////////////

    //returns staking rewards in MEME
    function calcStakingRewards(address _user)
        public
        view
        returns(uint)
    {
        // totalstaked * minutesPast / 10000 / 1251 @ 4.20% APY
        // (adjustments up to a max of 42.0% APY via burning of MEME)
        uint memeBurnt = staker[_user].totalBurnt;
        uint staked = staker[_user].stakedBalance;
        uint apyAdjust = 10000;
        if(memeBurnt > 0){
            if(memeBurnt >= staked.sub(staked.div(10)))
            {
                apyAdjust = 1000;
            }
            else{
                uint burntPercentage = ((memeBurnt.mul(100) / staked));
                uint v = (apyAdjust * burntPercentage) / 100;
                apyAdjust = apyAdjust.sub(v);
                if(apyAdjust < 1000)
                {
                    apyAdjust = 1000;
                }
            }
        }
        return (staked.mul(minsPastStakeTime(_user)).div(apyAdjust).div(1251));
    }

    //returns amount of minutes past since stake start
    function minsPastStakeTime(address _user)
        public
        view
        returns(uint)
    {
        if(staker[_user].stakeStartTimestamp == 0){
            return 0;
        }
        uint minsPast = block.timestamp.sub(staker[_user].stakeStartTimestamp).div(MINUTESECONDS);
        if(minsPast >= 1){
            return minsPast;// returns 0 if under 1 min passed
        }
        else{
            return 0;
        }
    }
    
    //check is stake is finished, min 7 days
    function isStakeFinished(address _user)
        public
        view
        returns(bool)
    {
        if(staker[_user].stakeStartTimestamp == 0){
            return false;
        }
        else{
            return staker[_user].stakeStartTimestamp.add((DAYSECONDS).mul(MINSTAKEDAYLENGTH)) <= block.timestamp;             
        }
    }

    //MEME balance of caller
    function memeBalance()
        public
        view
        returns (uint256)
    {
        return balanceOf(msg.sender);
    }
}

File 1 of 4: Address.sol
pragma solidity 0.8.10;
// SPDX-License-Identifier: UNLICENSED
/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

pragma solidity 0.8.10;

/**
 * @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 4: SafeMath.sol
pragma solidity 0.8.10;
// SPDX-License-Identifier: UNLICENSED
/**
 * @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.
     *
     * _Available since v2.4.0._
     */
    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.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"initialTokens","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TokenBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TokenStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TokenUnstake","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":"uint256","name":"amt","type":"uint256"}],"name":"BurnMeme","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClaimStakeInterest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RollStakeInterest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"StakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UnstakeTokens","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_user","type":"address"}],"name":"calcStakingRewards","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":[{"internalType":"address","name":"_user","type":"address"}],"name":"isStakeFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"memeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"minsPastStakeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"staker","outputs":[{"internalType":"uint256","name":"stakedBalance","type":"uint256"},{"internalType":"uint256","name":"stakeStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"totalStakingInterest","type":"uint256"},{"internalType":"uint256","name":"totalBurnt","type":"uint256"},{"internalType":"uint256","name":"totalReferralBonus","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"bool","name":"activeUser","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60806040523480156200001157600080fd5b50604051620019c4380380620019c48339810160408190526200003491620001b3565b62000040338262000047565b50620001f4565b806001600160a01b038316620000a45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620000c0816004546200014960201b62000cd81790919060201c565b6004556001600160a01b03831660009081526020818152604090912054620000f391839062000cd862000149821b17901c565b6001600160a01b038416600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080620001588385620001cd565b905083811015620001ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200009b565b9392505050565b600060208284031215620001c657600080fd5b5051919050565b60008219821115620001ef57634e487b7160e01b600052601160045260246000fd5b500190565b6117c080620002046000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063d650694c1161007c578063d650694c14610361578063d89135cd14610374578063dd62ed3e1461037d578063e86f1b5c146103b6578063ec33001a146103be578063fd1475d0146103d157600080fd5b806370a082311461024e578063817b1cd21461027757806382e4eda41461028057806395d89b4114610318578063a457c2d71461033b578063a9059cbb1461034e57600080fd5b80633149432c116101155780633149432c146101f057806338a058711461020357806339267f091461020d57806339509351146102155780634164ad071461022857806365759af21461023b57600080fd5b806306fdde0314610152578063095ea7b31461018e57806318160ddd146101b157806323b872dd146101c3578063313ce567146101d6575b600080fd5b6101786040518060400160405280600781526020016636b2b6b2b9bd3760c91b81525081565b60405161018591906114f0565b60405180910390f35b6101a161019c36600461155c565b6103e6565b6040519015158152602001610185565b6004545b604051908152602001610185565b6101a16101d1366004611586565b6103fd565b6101de601281565b60405160ff9091168152602001610185565b6101b56101fe3660046115c2565b610466565b61020b610531565b005b61020b6105da565b6101a161022336600461155c565b61066e565b61020b6102363660046115dd565b6106a4565b61020b6102493660046115f6565b61080f565b6101b561025c3660046115c2565b6001600160a01b031660009081526020819052604090205490565b6101b560025481565b6102d861028e3660046115c2565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03811690600160a01b900460ff1687565b60408051978852602088019690965294860193909352606085019190915260808401526001600160a01b031660a0830152151560c082015260e001610185565b610178604051806040016040528060048152602001634d454d4560e01b81525081565b6101a161034936600461155c565b610a25565b6101a161035c36600461155c565b610a74565b6101b561036f3660046115c2565b610a81565b6101b560035481565b6101b561038b366004611622565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61020b610af0565b6101a16103cc3660046115c2565b610c6f565b336000908152602081905260409020546101b5565b60006103f3338484610d3e565b5060015b92915050565b600061040a848484610e63565b61045c84336104578560405180606001604052806028815260200161173e602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610fe6565b610d3e565b5060019392505050565b6001600160a01b0381166000908152600660205260408120600381015490546127108215610505576104a361049c83600a611017565b8390611059565b83106104b257506103e8610505565b6000826104c085606461109b565b6104ca9190611662565b9050600060646104da8385611684565b6104e49190611662565b90506104f08382611059565b92506103e8831015610502576103e892505b50505b6105286104e36105228361052261051b8a610a81565b879061109b565b90611017565b95945050505050565b60055460ff161561055d5760405162461bcd60e51b8152600401610554906116a3565b60405180910390fd5b6005805460ff19166001179055336000908152600660205260409020546105c65760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610554565b6105ce61111a565b6005805460ff19169055565b60055460ff16156105fd5760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055336000908152600660205260409020546106665760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610554565b6105ce61120d565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103f39185906104579086610cd8565b60055460ff16156106c75760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055806107215760405162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e2030000000006044820152606401610554565b336000908152602081905260409020548111156107725760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b6044820152606401610554565b61077c33826112df565b336000908152600660205260408120600301805483929061079e9084906116c6565b9250508190555080600360008282546107b791906116c6565b90915550506004546107c99082611059565b60045560405181815233907fab85194d35c4ea153d0b51f3a304d1d22cb8023e499a6503fb6c28c5864ae90e906020015b60405180910390a2506005805460ff19169055565b60055460ff16156108325760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055816108795760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b6044820152606401610554565b816108903360009081526020819052604090205490565b10156108de5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e636500000000006044820152606401610554565b6001600160a01b038116158015906108ff57506001600160a01b0381163314155b15610980576001600160a01b038116600090815260066020526040902060050154600160a01b900460ff16801561094f5750336000908152600660205260409020600501546001600160a01b0316155b156109805733600090815260066020526040902060050180546001600160a01b0319166001600160a01b0383161790555b61098861111a565b33600090815260066020526040902060058101805460ff60a01b1916600160a01b179055546109b79083610cd8565b336000908152600660205260409020556002546109d49083610cd8565b6002556109e2333084610e63565b60405182815233907facf5378a9125b9a91e37c0cad37a66b4b63bc3494776388fc87056260e0315769060200160405180910390a250506005805460ff19169055565b60006103f3338461045785604051806060016040528060258152602001611766602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610fe6565b60006103f3338484610e63565b6001600160a01b038116600090815260066020526040812060010154610aa957506000919050565b6001600160a01b038216600090815260066020526040812060010154610ad790603c90610522904290611059565b905060018110610ae75792915050565b50600092915050565b60055460ff1615610b135760405162461bcd60e51b8152600401610554906116a3565b6005805460ff1916600117905533600090815260066020526040902054610b875760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20756e73756666696369656e74207374616b65642062616c616e604482015261636560f01b6064820152608401610554565b610b9033610c6f565b610bf35760405162461bcd60e51b815260206004820152602e60248201527f746f6b656e732063616e6e6f7420626520756e7374616b6564207965742e206d60448201526d696e203720646179207374616b6560901b6064820152608401610554565b33600090815260066020526040902054610c0b61111a565b3360009081526006602052604081206001810182905555600254610c2f9082611059565b600255610c3d303383610e63565b60405181815233907f43a932fdc9d096891853e1e003cefbdaa5f14e174721aa1f9668616323afa334906020016107fa565b6001600160a01b038116600090815260066020526040812060010154610c9757506000919050565b42610ccb610ca962015180600761109b565b6001600160a01b03851660009081526006602052604090206001015490610cd8565b111592915050565b919050565b600080610ce583856116c6565b905083811015610d375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610554565b9392505050565b6001600160a01b038316610da05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b6001600160a01b038216610e015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610554565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ec75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610554565b6001600160a01b038216610f295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610554565b610f6681604051806060016040528060268152602001611718602691396001600160a01b0386166000908152602081905260409020549190610fe6565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f959082610cd8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e56565b6000818484111561100a5760405162461bcd60e51b815260040161055491906114f0565b50600061052884866116de565b6000610d3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ea565b6000610d3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe6565b6000826110aa575060006103f7565b60006110b68385611684565b9050826110c38583611662565b14610d375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610554565b600061112533610466565b336000908152600660205260409020426001909101559050801561120a5761114d3382611418565b336000908152600660205260408120600201805483929061116f9084906116c6565b9091555050336000908152600660205260409020600501546001600160a01b03161561120a57336000908152600660205260409020600501546111c5906001600160a01b03166111c0836014611017565b611418565b6111d0816014611017565b33600090815260066020526040808220600501546001600160a01b03168252812060040180549091906112049084906116c6565b90915550505b50565b600061121833610466565b9050801561120a5761122a3082611418565b336000908152600660205260409020546112449082610cd8565b336000908152600660205260409020556002546112619082610cd8565b600290815533600090815260066020526040812090910180548392906112889084906116c6565b9091555050336000908152600660205260409020426001820155600501546001600160a01b03161561120a57336000908152600660205260409020600501546111c5906001600160a01b03166111c0836014611017565b6001600160a01b03821661133f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610554565b61137c816040518060600160405280602281526020016116f6602291396001600160a01b0385166000908152602081905260409020549190610fe6565b6001600160a01b0383166000908152602081905260409020556004546113a29082611059565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000818361140b5760405162461bcd60e51b815260040161055491906114f0565b5060006105288486611662565b806001600160a01b03831661146f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610554565b60045461147c9082610cd8565b6004556001600160a01b0383166000908152602081905260409020546114a29082610cd8565b6001600160a01b038416600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e56565b600060208083528351808285015260005b8181101561151d57858101830151858201604001528201611501565b8181111561152f576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610cd357600080fd5b6000806040838503121561156f57600080fd5b61157883611545565b946020939093013593505050565b60008060006060848603121561159b57600080fd5b6115a484611545565b92506115b260208501611545565b9150604084013590509250925092565b6000602082840312156115d457600080fd5b610d3782611545565b6000602082840312156115ef57600080fd5b5035919050565b6000806040838503121561160957600080fd5b8235915061161960208401611545565b90509250929050565b6000806040838503121561163557600080fd5b61163e83611545565b915061161960208401611545565b634e487b7160e01b600052601160045260246000fd5b60008261167f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561169e5761169e61164c565b500290565b60208082526009908201526853796e63206c6f636b60b81b604082015260600190565b600082198211156116d9576116d961164c565b500190565b6000828210156116f0576116f061164c565b50039056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ac21afd84b3ccf9a83a1a1925a06d541d5cc47f87e10eea9ff1c8feaf81e010c64736f6c634300080a003300000000000000000000000000000000000000054e739ef2dabd134dba0ac344

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063d650694c1161007c578063d650694c14610361578063d89135cd14610374578063dd62ed3e1461037d578063e86f1b5c146103b6578063ec33001a146103be578063fd1475d0146103d157600080fd5b806370a082311461024e578063817b1cd21461027757806382e4eda41461028057806395d89b4114610318578063a457c2d71461033b578063a9059cbb1461034e57600080fd5b80633149432c116101155780633149432c146101f057806338a058711461020357806339267f091461020d57806339509351146102155780634164ad071461022857806365759af21461023b57600080fd5b806306fdde0314610152578063095ea7b31461018e57806318160ddd146101b157806323b872dd146101c3578063313ce567146101d6575b600080fd5b6101786040518060400160405280600781526020016636b2b6b2b9bd3760c91b81525081565b60405161018591906114f0565b60405180910390f35b6101a161019c36600461155c565b6103e6565b6040519015158152602001610185565b6004545b604051908152602001610185565b6101a16101d1366004611586565b6103fd565b6101de601281565b60405160ff9091168152602001610185565b6101b56101fe3660046115c2565b610466565b61020b610531565b005b61020b6105da565b6101a161022336600461155c565b61066e565b61020b6102363660046115dd565b6106a4565b61020b6102493660046115f6565b61080f565b6101b561025c3660046115c2565b6001600160a01b031660009081526020819052604090205490565b6101b560025481565b6102d861028e3660046115c2565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03811690600160a01b900460ff1687565b60408051978852602088019690965294860193909352606085019190915260808401526001600160a01b031660a0830152151560c082015260e001610185565b610178604051806040016040528060048152602001634d454d4560e01b81525081565b6101a161034936600461155c565b610a25565b6101a161035c36600461155c565b610a74565b6101b561036f3660046115c2565b610a81565b6101b560035481565b6101b561038b366004611622565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61020b610af0565b6101a16103cc3660046115c2565b610c6f565b336000908152602081905260409020546101b5565b60006103f3338484610d3e565b5060015b92915050565b600061040a848484610e63565b61045c84336104578560405180606001604052806028815260200161173e602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610fe6565b610d3e565b5060019392505050565b6001600160a01b0381166000908152600660205260408120600381015490546127108215610505576104a361049c83600a611017565b8390611059565b83106104b257506103e8610505565b6000826104c085606461109b565b6104ca9190611662565b9050600060646104da8385611684565b6104e49190611662565b90506104f08382611059565b92506103e8831015610502576103e892505b50505b6105286104e36105228361052261051b8a610a81565b879061109b565b90611017565b95945050505050565b60055460ff161561055d5760405162461bcd60e51b8152600401610554906116a3565b60405180910390fd5b6005805460ff19166001179055336000908152600660205260409020546105c65760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610554565b6105ce61111a565b6005805460ff19169055565b60055460ff16156105fd5760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055336000908152600660205260409020546106665760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610554565b6105ce61120d565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103f39185906104579086610cd8565b60055460ff16156106c75760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055806107215760405162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e2030000000006044820152606401610554565b336000908152602081905260409020548111156107725760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b6044820152606401610554565b61077c33826112df565b336000908152600660205260408120600301805483929061079e9084906116c6565b9250508190555080600360008282546107b791906116c6565b90915550506004546107c99082611059565b60045560405181815233907fab85194d35c4ea153d0b51f3a304d1d22cb8023e499a6503fb6c28c5864ae90e906020015b60405180910390a2506005805460ff19169055565b60055460ff16156108325760405162461bcd60e51b8152600401610554906116a3565b6005805460ff19166001179055816108795760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b6044820152606401610554565b816108903360009081526020819052604090205490565b10156108de5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e636500000000006044820152606401610554565b6001600160a01b038116158015906108ff57506001600160a01b0381163314155b15610980576001600160a01b038116600090815260066020526040902060050154600160a01b900460ff16801561094f5750336000908152600660205260409020600501546001600160a01b0316155b156109805733600090815260066020526040902060050180546001600160a01b0319166001600160a01b0383161790555b61098861111a565b33600090815260066020526040902060058101805460ff60a01b1916600160a01b179055546109b79083610cd8565b336000908152600660205260409020556002546109d49083610cd8565b6002556109e2333084610e63565b60405182815233907facf5378a9125b9a91e37c0cad37a66b4b63bc3494776388fc87056260e0315769060200160405180910390a250506005805460ff19169055565b60006103f3338461045785604051806060016040528060258152602001611766602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610fe6565b60006103f3338484610e63565b6001600160a01b038116600090815260066020526040812060010154610aa957506000919050565b6001600160a01b038216600090815260066020526040812060010154610ad790603c90610522904290611059565b905060018110610ae75792915050565b50600092915050565b60055460ff1615610b135760405162461bcd60e51b8152600401610554906116a3565b6005805460ff1916600117905533600090815260066020526040902054610b875760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20756e73756666696369656e74207374616b65642062616c616e604482015261636560f01b6064820152608401610554565b610b9033610c6f565b610bf35760405162461bcd60e51b815260206004820152602e60248201527f746f6b656e732063616e6e6f7420626520756e7374616b6564207965742e206d60448201526d696e203720646179207374616b6560901b6064820152608401610554565b33600090815260066020526040902054610c0b61111a565b3360009081526006602052604081206001810182905555600254610c2f9082611059565b600255610c3d303383610e63565b60405181815233907f43a932fdc9d096891853e1e003cefbdaa5f14e174721aa1f9668616323afa334906020016107fa565b6001600160a01b038116600090815260066020526040812060010154610c9757506000919050565b42610ccb610ca962015180600761109b565b6001600160a01b03851660009081526006602052604090206001015490610cd8565b111592915050565b919050565b600080610ce583856116c6565b905083811015610d375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610554565b9392505050565b6001600160a01b038316610da05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b6001600160a01b038216610e015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610554565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ec75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610554565b6001600160a01b038216610f295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610554565b610f6681604051806060016040528060268152602001611718602691396001600160a01b0386166000908152602081905260409020549190610fe6565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f959082610cd8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e56565b6000818484111561100a5760405162461bcd60e51b815260040161055491906114f0565b50600061052884866116de565b6000610d3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ea565b6000610d3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe6565b6000826110aa575060006103f7565b60006110b68385611684565b9050826110c38583611662565b14610d375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610554565b600061112533610466565b336000908152600660205260409020426001909101559050801561120a5761114d3382611418565b336000908152600660205260408120600201805483929061116f9084906116c6565b9091555050336000908152600660205260409020600501546001600160a01b03161561120a57336000908152600660205260409020600501546111c5906001600160a01b03166111c0836014611017565b611418565b6111d0816014611017565b33600090815260066020526040808220600501546001600160a01b03168252812060040180549091906112049084906116c6565b90915550505b50565b600061121833610466565b9050801561120a5761122a3082611418565b336000908152600660205260409020546112449082610cd8565b336000908152600660205260409020556002546112619082610cd8565b600290815533600090815260066020526040812090910180548392906112889084906116c6565b9091555050336000908152600660205260409020426001820155600501546001600160a01b03161561120a57336000908152600660205260409020600501546111c5906001600160a01b03166111c0836014611017565b6001600160a01b03821661133f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610554565b61137c816040518060600160405280602281526020016116f6602291396001600160a01b0385166000908152602081905260409020549190610fe6565b6001600160a01b0383166000908152602081905260409020556004546113a29082611059565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000818361140b5760405162461bcd60e51b815260040161055491906114f0565b5060006105288486611662565b806001600160a01b03831661146f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610554565b60045461147c9082610cd8565b6004556001600160a01b0383166000908152602081905260409020546114a29082610cd8565b6001600160a01b038416600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e56565b600060208083528351808285015260005b8181101561151d57858101830151858201604001528201611501565b8181111561152f576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610cd357600080fd5b6000806040838503121561156f57600080fd5b61157883611545565b946020939093013593505050565b60008060006060848603121561159b57600080fd5b6115a484611545565b92506115b260208501611545565b9150604084013590509250925092565b6000602082840312156115d457600080fd5b610d3782611545565b6000602082840312156115ef57600080fd5b5035919050565b6000806040838503121561160957600080fd5b8235915061161960208401611545565b90509250929050565b6000806040838503121561163557600080fd5b61163e83611545565b915061161960208401611545565b634e487b7160e01b600052601160045260246000fd5b60008261167f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561169e5761169e61164c565b500290565b60208082526009908201526853796e63206c6f636b60b81b604082015260600190565b600082198211156116d9576116d961164c565b500190565b6000828210156116f0576116f061164c565b50039056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ac21afd84b3ccf9a83a1a1925a06d541d5cc47f87e10eea9ff1c8feaf81e010c64736f6c634300080a0033

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

00000000000000000000000000000000000000054e739ef2dabd134dba0ac344

-----Decoded View---------------
Arg [0] : initialTokens (uint256): 420420420420420420420420420420

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000054e739ef2dabd134dba0ac344


Deployed Bytecode Sourcemap

4584:14671:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:39;;;;;;;;;;;;;;;-1:-1:-1;;;5232:39:3;;;;;;;;;;;;:::i;:::-;;;;;;;;6994:158;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:4;;1211:22;1193:41;;1181:2;1166:18;6994:158:3;1053:187:4;6013:100:3;6094:12;;6013:100;;;1391:25:4;;;1379:2;1364:18;6013:100:3;1245:177:4;7616:307:3;;;;;;:::i;:::-;;:::i;5321:35::-;;5354:2;5321:35;;;;;1932:4:4;1920:17;;;1902:36;;1890:2;1875:18;5321:35:3;1760:184:4;17274:930:3;;;;;;:::i;:::-;;:::i;14619:189::-;;;:::i;:::-;;14850:187;;;:::i;8318:205::-;;;;;;:::i;:::-;;:::i;16697:424::-;;;;;;:::i;:::-;;:::i;12945:846::-;;;;;;:::i;:::-;;:::i;6171:117::-;;;;;;:::i;:::-;-1:-1:-1;;;;;6263:18:3;6237:7;6263:18;;;;;;;;;;;;6171:117;5116:26;;;;;;5391:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5391:41:3;;;-1:-1:-1;;;5391:41:3;;;;;;;;;;2893:25:4;;;2949:2;2934:18;;2927:34;;;;2977:18;;;2970:34;;;;3035:2;3020:18;;3013:34;;;;3078:3;3063:19;;3056:35;-1:-1:-1;;;;;3128:32:4;3148:3;3107:19;;3100:61;3205:14;3198:22;3192:3;3177:19;;3170:51;2880:3;2865:19;5391:41:3;2584:643:4;5277:38:3;;;;;;;;;;;;;;;-1:-1:-1;;;5277:38:3;;;;;9010:256;;;;;;:::i;:::-;;:::i;6491:164::-;;;;;;:::i;:::-;;:::i;18265:432::-;;;;;;:::i;:::-;;:::i;5148:26::-;;;;;;6713:143;;;;;;:::i;:::-;-1:-1:-1;;;;;6822:18:3;;;6796:7;6822:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6713:143;13873:703;;;:::i;18752:340::-;;;;;;:::i;:::-;;:::i;19127:126::-;19235:10;19195:7;6263:18;;;;;;;;;;;19127:126;;6994:158;7071:4;7087:37;7096:10;7108:7;7117:6;7087:8;:37::i;:::-;-1:-1:-1;7141:4:3;6994:158;;;;;:::o;7616:307::-;7716:4;7732:36;7742:6;7750:9;7761:6;7732:9;:36::i;:::-;7778:117;7787:6;7795:10;7807:87;7843:6;7807:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7807:19:3;;;;;;:11;:19;;;;;;;;7827:10;7807:31;;;;;;;;;:87;:35;:87::i;:::-;7778:8;:117::i;:::-;-1:-1:-1;7912:4:3;7616:307;;;;;:::o;17274:930::-;-1:-1:-1;;;;;17532:13:3;;17361:4;17532:13;;;:6;:13;;;;;:24;;;;17580:27;;17634:5;17652:13;;17649:469;;17696:26;17707:14;:6;17718:2;17707:10;:14::i;:::-;17696:6;;:10;:26::i;:::-;17683:9;:39;17680:428;;-1:-1:-1;17766:4:3;17680:428;;;17820:20;17866:6;17845:18;:9;17859:3;17845:13;:18::i;:::-;:27;;;;:::i;:::-;17820:54;-1:-1:-1;17892:6:3;17933:3;17902:27;17820:54;17902:9;:27;:::i;:::-;17901:35;;;;:::i;:::-;17892:44;-1:-1:-1;17966:16:3;:9;17892:44;17966:13;:16::i;:::-;17954:28;;18015:4;18003:9;:16;18000:94;;;18071:4;18059:16;;18000:94;17802:306;;17680:428;18135:61;18191:4;18135:51;18176:9;18135:36;18146:24;18164:5;18146:17;:24::i;:::-;18135:6;;:10;:36::i;:::-;:40;;:51::i;:61::-;18127:70;17274:930;-1:-1:-1;;;;;17274:930:3:o;14619:189::-;5779:4;;;;5778:5;5770:27;;;;-1:-1:-1;;;5770:27:3;;;;;;;:::i;:::-;;;;;;;;;5807:4;:11;;-1:-1:-1;;5807:11:3;5814:4;5807:11;;;14716:10:::1;5807:4:::0;14709:18;;;:6:::1;:18;::::0;;;;:32;14701:75:::1;;;::::0;-1:-1:-1;;;14701:75:3;;4563:2:4;14701:75:3::1;::::0;::::1;4545:21:4::0;4602:2;4582:18;;;4575:30;4641:28;4621:18;;;4614:56;4687:18;;14701:75:3::1;4361:350:4::0;14701:75:3::1;14786:15;:13;:15::i;:::-;5839:4:::0;:12;;-1:-1:-1;;5839:12:3;;;14619:189::o;14850:187::-;5779:4;;;;5778:5;5770:27;;;;-1:-1:-1;;;5770:27:3;;;;;;;:::i;:::-;5807:4;:11;;-1:-1:-1;;5807:11:3;5814:4;5807:11;;;14946:10:::1;5807:4:::0;14939:18;;;:6:::1;:18;::::0;;;;:32;14931:75:::1;;;::::0;-1:-1:-1;;;14931:75:3;;4563:2:4;14931:75:3::1;::::0;::::1;4545:21:4::0;4602:2;4582:18;;;4575:30;4641:28;4621:18;;;4614:56;4687:18;;14931:75:3::1;4361:350:4::0;14931:75:3::1;15016:14;:12;:14::i;8318:205::-:0;8425:10;8400:4;8446:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8446:32:3;;;;;;;;;;8400:4;;8416:79;;8437:7;;8446:48;;8483:10;8446:36;:48::i;16697:424::-;5779:4;;;;5778:5;5770:27;;;;-1:-1:-1;;;5770:27:3;;;;;;;:::i;:::-;5807:4;:11;;-1:-1:-1;;5807:11:3;5814:4;5807:11;;;16785:7;16777:48:::1;;;::::0;-1:-1:-1;;;16777:48:3;;4918:2:4;16777:48:3::1;::::0;::::1;4900:21:4::0;4957:2;4937:18;;;4930:30;4996;4976:18;;;4969:58;5044:18;;16777:48:3::1;4716:352:4::0;16777:48:3::1;16853:10;6237:7:::0;6263:18;;;;;;;;;;;16868:3;-1:-1:-1;16843:28:3::1;16835:56;;;::::0;-1:-1:-1;;;16835:56:3;;5275:2:4;16835:56:3::1;::::0;::::1;5257:21:4::0;5314:2;5294:18;;;5287:30;-1:-1:-1;;;5333:18:4;;;5326:45;5388:18;;16835:56:3::1;5073:339:4::0;16835:56:3::1;16931:22;16937:10;16949:3;16931:5;:22::i;:::-;16970:10;16963:18;::::0;;;:6:::1;:18;::::0;;;;:29:::1;;:36:::0;;16996:3;;16963:18;:36:::1;::::0;16996:3;;16963:36:::1;:::i;:::-;;;;;;;;17024:3;17009:11;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17052:12:3::1;::::0;:21:::1;::::0;17069:3;17052:16:::1;:21::i;:::-;17037:12;:36:::0;17088:26:::1;::::0;1391:25:4;;;17098:10:3::1;::::0;17088:26:::1;::::0;1379:2:4;1364:18;17088:26:3::1;;;;;;;;-1:-1:-1::0;5839:4:3;:12;;-1:-1:-1;;5839:12:3;;;16697:424::o;12945:846::-;5779:4;;;;5778:5;5770:27;;;;-1:-1:-1;;;5770:27:3;;;;;;;:::i;:::-;5807:4;:11;;-1:-1:-1;;5807:11:3;5814:4;5807:11;;;13055:7;13047:30:::1;;;::::0;-1:-1:-1;;;13047:30:3;;5752:2:4;13047:30:3::1;::::0;::::1;5734:21:4::0;5791:2;5771:18;;;5764:30;-1:-1:-1;;;5810:18:4;;;5803:40;5860:18;;13047:30:3::1;5550:334:4::0;13047:30:3::1;13112:3;13095:13;19235:10:::0;19195:7;6263:18;;;;;;;;;;;;19127:126;13095:13:::1;:20;;13087:60;;;::::0;-1:-1:-1;;;13087:60:3;;6091:2:4;13087:60:3::1;::::0;::::1;6073:21:4::0;6130:2;6110:18;;;6103:30;6169:29;6149:18;;;6142:57;6216:18;;13087:60:3::1;5889:351:4::0;13087:60:3::1;-1:-1:-1::0;;;;;13190:23:3;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;;;;;;13217:23:3;::::1;13230:10;13217:23;;13190:50;13187:226;;;-1:-1:-1::0;;;;;13258:17:3;::::1;;::::0;;;:6:::1;:17;::::0;;;;:28:::1;;::::0;-1:-1:-1;;;13258:28:3;::::1;;;:73:::0;::::1;;;-1:-1:-1::0;13297:10:3::1;13329:1;13290:18:::0;;;:6:::1;:18;::::0;;;;:27:::1;;::::0;-1:-1:-1;;;;;13290:27:3::1;:41:::0;13258:73:::1;13255:148;;;13356:10;13349:18;::::0;;;:6:::1;:18;::::0;;;;:27:::1;;:39:::0;;-1:-1:-1;;;;;;13349:39:3::1;-1:-1:-1::0;;;;;13349:39:3;::::1;;::::0;;13255:148:::1;13459:15;:13;:15::i;:::-;13517:10;13510:18;::::0;;;:6:::1;:18;::::0;;;;:29:::1;::::0;::::1;:36:::0;;-1:-1:-1;;;;13510:36:3::1;-1:-1:-1::0;;;13510:36:3::1;::::0;;13591:32;:41:::1;::::0;13628:3;13591:36:::1;:41::i;:::-;13563:10;13556:18;::::0;;;:6:::1;:18;::::0;;;;:76;13656:11:::1;::::0;:20:::1;::::0;13672:3;13656:15:::1;:20::i;:::-;13642:11;:34:::0;13686:41:::1;13696:10;13716:4;13723:3:::0;13686:9:::1;:41::i;:::-;13757:27;::::0;1391:25:4;;;13768:10:3::1;::::0;13757:27:::1;::::0;1379:2:4;1364:18;13757:27:3::1;;;;;;;-1:-1:-1::0;;5839:4:3;:12;;-1:-1:-1;;5839:12:3;;;12945:846::o;9010:256::-;9097:4;9113:125;9122:10;9134:7;9143:94;9180:15;9143:94;;;;;;;;;;;;;;;;;9155:10;9143:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9143:32:3;;;;;;;;;;;:94;:36;:94::i;6491:164::-;6571:4;6587:40;6597:10;6609:9;6620:6;6587:9;:40::i;18265:432::-;-1:-1:-1;;;;;18374:13:3;;18351:4;18374:13;;;:6;:13;;;;;:33;;;18371:75;;-1:-1:-1;18434:1:3;;18265:432;-1:-1:-1;18265:432:3:o;18371:75::-;-1:-1:-1;;;;;18491:13:3;;18455;18491;;;:6;:13;;;;;:33;;;18471:73;;5011:2;;18471:54;;:15;;:19;:54::i;:73::-;18455:89;;18569:1;18557:8;:13;18554:137;;18592:8;18265:432;-1:-1:-1;;18265:432:3:o;18554:137::-;-1:-1:-1;18679:1:3;;18265:432;-1:-1:-1;;18265:432:3:o;13873:703::-;5779:4;;;;5778:5;5770:27;;;;-1:-1:-1;;;5770:27:3;;;;;;;:::i;:::-;5807:4;:11;;-1:-1:-1;;5807:11:3;5814:4;5807:11;;;13965:10:::1;5807:4:::0;13958:18;;;:6:::1;:18;::::0;;;;:32;13950:82:::1;;;::::0;-1:-1:-1;;;13950:82:3;;6447:2:4;13950:82:3::1;::::0;::::1;6429:21:4::0;6486:2;6466:18;;;6459:30;6525:34;6505:18;;;6498:62;-1:-1:-1;;;6576:18:4;;;6569:32;6618:19;;13950:82:3::1;6245:398:4::0;13950:82:3::1;14087:27;14103:10;14087:15;:27::i;:::-;14079:86;;;::::0;-1:-1:-1;;;14079:86:3;;6850:2:4;14079:86:3::1;::::0;::::1;6832:21:4::0;6889:2;6869:18;;;6862:30;6928:34;6908:18;;;6901:62;-1:-1:-1;;;6979:18:4;;;6972:44;7033:19;;14079:86:3::1;6648:410:4::0;14079:86:3::1;14193:10;14175:8;14186:18:::0;;;:6:::1;:18;::::0;;;;:32;14265:15:::1;:13;:15::i;:::-;14334:10;14368:1;14327:18:::0;;;:6:::1;:18;::::0;;;;:38:::1;::::0;::::1;:42:::0;;;14379:36;14439:11:::1;::::0;:20:::1;::::0;14455:3;14439:15:::1;:20::i;:::-;14425:11;:34:::0;14469:41:::1;14487:4;14494:10;14506:3:::0;14469:9:::1;:41::i;:::-;14540:29;::::0;1391:25:4;;;14553:10:3::1;::::0;14540:29:::1;::::0;1379:2:4;1364:18;14540:29:3::1;1245:177:4::0;18752:340:3;-1:-1:-1;;;;;18859:13:3;;18836:4;18859:13;;;:6;:13;;;;;:33;;;18856:230;;-1:-1:-1;18919:5:3;;18752:340;-1:-1:-1;18752:340:3:o;18856:230::-;19047:15;18969:74;19007:35;5055:5;5109:1;19007:16;:35::i;:::-;-1:-1:-1;;;;;18969:13:3;;;;;;:6;:13;;;;;:33;;;;:37;:74::i;:::-;:93;;;18752:340;-1:-1:-1;;18752:340:3:o;18856:230::-;18752:340;;;:::o;872:176:2:-;930:7;;961:5;965:1;961;:5;:::i;:::-;949:17;;989:1;984;:6;;976:46;;;;-1:-1:-1;;;976:46:2;;7265:2:4;976:46:2;;;7247:21:4;7304:2;7284:18;;;7277:30;7343:29;7323:18;;;7316:57;7390:18;;976:46:2;7063:351:4;976:46:2;1040:1;872:176;-1:-1:-1;;;872:176:2:o;11903:331:3:-;-1:-1:-1;;;;;11996:19:3;;11988:68;;;;-1:-1:-1;;;11988:68:3;;7621:2:4;11988:68:3;;;7603:21:4;7660:2;7640:18;;;7633:30;7699:34;7679:18;;;7672:62;-1:-1:-1;;;7750:18:4;;;7743:34;7794:19;;11988:68:3;7419:400:4;11988:68:3;-1:-1:-1;;;;;12074:21:3;;12066:68;;;;-1:-1:-1;;;12066:68:3;;8026:2:4;12066:68:3;;;8008:21:4;8065:2;8045:18;;;8038:30;8104:34;8084:18;;;8077:62;-1:-1:-1;;;8155:18:4;;;8148:32;8197:19;;12066:68:3;7824:398:4;12066:68:3;-1:-1:-1;;;;;12144:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12195:32;;1391:25:4;;;12195:32:3;;1364:18:4;12195:32:3;;;;;;;;11903:331;;;:::o;9739:463::-;-1:-1:-1;;;;;9836:20:3;;9828:70;;;;-1:-1:-1;;;9828:70:3;;8429:2:4;9828:70:3;;;8411:21:4;8468:2;8448:18;;;8441:30;8507:34;8487:18;;;8480:62;-1:-1:-1;;;8558:18:4;;;8551:35;8603:19;;9828:70:3;8227:401:4;9828:70:3;-1:-1:-1;;;;;9916:23:3;;9908:71;;;;-1:-1:-1;;;9908:71:3;;8835:2:4;9908:71:3;;;8817:21:4;8874:2;8854:18;;;8847:30;8913:34;8893:18;;;8886:62;-1:-1:-1;;;8964:18:4;;;8957:33;9007:19;;9908:71:3;8633:399:4;9908:71:3;10009;10031:6;10009:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10009:17:3;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;9989:17:3;;;:9;:17;;;;;;;;;;;:91;;;;10113:20;;;;;;;:32;;10138:6;10113:24;:32::i;:::-;-1:-1:-1;;;;;10090:20:3;;;:9;:20;;;;;;;;;;;;:55;;;;10160:35;1391:25:4;;;10090:20:3;;10160:35;;;;;;1364:18:4;10160:35:3;1245:177:4;1770:187:2;1856:7;1891:12;1883:6;;;;1875:29;;;;-1:-1:-1;;;1875:29:2;;;;;;;;:::i;:::-;-1:-1:-1;1914:9:2;1926:5;1930:1;1926;:5;:::i;3111:130::-;3169:7;3195:39;3199:1;3202;3195:39;;;;;;;;;;;;;;;;;:3;:39::i;1312:134::-;1370:7;1396:43;1400:1;1403;1396:43;;;;;;;;;;;;;;;;;:3;:43::i;2197:459::-;2255:7;2496:6;2492:45;;-1:-1:-1;2525:1:2;2518:8;;2492:45;2547:9;2559:5;2563:1;2559;:5;:::i;:::-;2547:17;-1:-1:-1;2591:1:2;2582:5;2586:1;2547:17;2582:5;:::i;:::-;:10;2574:56;;;;-1:-1:-1;;;2574:56:2;;9369:2:4;2574:56:2;;;9351:21:4;9408:2;9388:18;;;9381:30;9447:34;9427:18;;;9420:62;-1:-1:-1;;;9498:18:4;;;9491:31;9539:19;;2574:56:2;9167:397:4;15944:682:3;16037:16;16056:30;16075:10;16056:18;:30::i;:::-;16137:10;16130:18;;;;:6;:18;;;;;16171:15;16130:38;;;;:56;16037:49;-1:-1:-1;16230:12:3;;16227:393;;16257:27;16263:10;16275:8;16257:5;:27::i;:::-;16305:10;16298:18;;;;:6;:18;;;;;:39;;:51;;16341:8;;16298:18;:51;;16341:8;;16298:51;:::i;:::-;;;;-1:-1:-1;;16373:10:3;16405:1;16366:18;;;:6;:18;;;;;:27;;;-1:-1:-1;;;;;16366:27:3;:41;16363:247;;16440:10;16433:18;;;;:6;:18;;;;;:27;;;16427:52;;-1:-1:-1;;;;;16433:27:3;16462:16;:8;16475:2;16462:12;:16::i;:::-;16427:5;:52::i;:::-;16579:16;:8;16592:2;16579:12;:16::i;:::-;16535:10;16521:35;16528:18;;;16521:6;16528:18;;;;;;:27;;;-1:-1:-1;;;;;16528:27:3;16521:35;;;;:54;;:74;;:54;;:35;:74;;;;;:::i;:::-;;;;-1:-1:-1;;16363:247:3;15990:636;15944:682::o;15047:887::-;15139:16;15158:30;15177:10;15158:18;:30::i;:::-;15139:49;-1:-1:-1;15251:12:3;;15248:680;;15278:30;15292:4;15299:8;15278:5;:30::i;:::-;15392:10;15385:18;;;;:6;:18;;;;;:32;:46;;15422:8;15385:36;:46::i;:::-;15357:10;15350:18;;;;:6;:18;;;;;:81;15459:11;;:25;;15475:8;15459:15;:25::i;:::-;15445:11;:39;;;15505:10;15498:18;;;;:6;:18;;;;;:39;;;:51;;15541:8;;15498:18;:51;;15541:8;;15498:51;:::i;:::-;;;;-1:-1:-1;;15608:10:3;15601:18;;;;:6;:18;;;;;15642:15;15601:38;;;:56;15674:27;;;-1:-1:-1;;;;;15674:27:3;:41;15671:247;;15748:10;15741:18;;;;:6;:18;;;;;:27;;;15735:52;;-1:-1:-1;;;;;15741:27:3;15770:16;:8;15783:2;15770:12;:16::i;11137:341::-;-1:-1:-1;;;;;11212:21:3;;11204:67;;;;-1:-1:-1;;;11204:67:3;;9771:2:4;11204:67:3;;;9753:21:4;9810:2;9790:18;;;9783:30;9849:34;9829:18;;;9822:62;-1:-1:-1;;;9900:18:4;;;9893:31;9941:19;;11204:67:3;9569:397:4;11204:67:3;11302:68;11325:6;11302:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11302:18:3;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;11281:18:3;;:9;:18;;;;;;;;;;:89;11395:12;;:24;;11412:6;11395:16;:24::i;:::-;11380:12;:39;11434:37;;1391:25:4;;;11460:1:3;;-1:-1:-1;;;;;11434:37:3;;;;;1379:2:4;1364:18;11434:37:3;;;;;;;11137:341;;:::o;3756:338:2:-;3842:7;3942:12;3935:5;3927:28;;;;-1:-1:-1;;;3927:28:2;;;;;;;;:::i;:::-;-1:-1:-1;3965:9:2;3977:5;3981:1;3977;:5;:::i;10496:322:3:-;10577:6;-1:-1:-1;;;;;10601:21:3;;10593:65;;;;-1:-1:-1;;;10593:65:3;;10173:2:4;10593:65:3;;;10155:21:4;10212:2;10192:18;;;10185:30;10251:33;10231:18;;;10224:61;10302:18;;10593:65:3;9971:355:4;10593:65:3;10683:12;;:21;;10700:3;10683:16;:21::i;:::-;10668:12;:36;-1:-1:-1;;;;;10735:18:3;;:9;:18;;;;;;;;;;;:27;;10758:3;10735:22;:27::i;:::-;-1:-1:-1;;;;;10714:18:3;;:9;:18;;;;;;;;;;;:48;;;;10777:34;;1391:25:4;;;10714:18:3;;:9;;10777:34;;1364:18:4;10777:34:3;1245:177:4;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:4;574:15;-1:-1:-1;;570:29:4;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:4:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:4;;723:42;;713:70;;779:1;776;769:12;794:254;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:4:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:186::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2100:29;2119:9;2100:29;:::i;2140:180::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:52;;;2268:1;2265;2258:12;2220:52;-1:-1:-1;2291:23:4;;2140:180;-1:-1:-1;2140:180:4:o;2325:254::-;2393:6;2401;2454:2;2442:9;2433:7;2429:23;2425:32;2422:52;;;2470:1;2467;2460:12;2422:52;2506:9;2493:23;2483:33;;2535:38;2569:2;2558:9;2554:18;2535:38;:::i;:::-;2525:48;;2325:254;;;;;:::o;3232:260::-;3300:6;3308;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;3400:29;3419:9;3400:29;:::i;:::-;3390:39;;3448:38;3482:2;3471:9;3467:18;3448:38;:::i;3497:127::-;3558:10;3553:3;3549:20;3546:1;3539:31;3589:4;3586:1;3579:15;3613:4;3610:1;3603:15;3629:217;3669:1;3695;3685:132;;3739:10;3734:3;3730:20;3727:1;3720:31;3774:4;3771:1;3764:15;3802:4;3799:1;3792:15;3685:132;-1:-1:-1;3831:9:4;;3629:217::o;3851:168::-;3891:7;3957:1;3953;3949:6;3945:14;3942:1;3939:21;3934:1;3927:9;3920:17;3916:45;3913:71;;;3964:18;;:::i;:::-;-1:-1:-1;4004:9:4;;3851:168::o;4024:332::-;4226:2;4208:21;;;4265:1;4245:18;;;4238:29;-1:-1:-1;;;4298:2:4;4283:18;;4276:39;4347:2;4332:18;;4024:332::o;5417:128::-;5457:3;5488:1;5484:6;5481:1;5478:13;5475:39;;;5494:18;;:::i;:::-;-1:-1:-1;5530:9:4;;5417:128::o;9037:125::-;9077:4;9105:1;9102;9099:8;9096:34;;;9110:18;;:::i;:::-;-1:-1:-1;9147:9:4;;9037:125::o

Swarm Source

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