ETH Price: $3,346.06 (-0.62%)
Gas: 5 Gwei

Token

GROK 2.0 (GROK2.0)
 

Overview

Max Total Supply

100,000,000 GROK2.0

Holders

311

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
770,491.834833121400003706 GROK2.0

Value
$0.00
0x4f96a4387c1d91d877e204026d4518eb372acfe4
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:
GROK20

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-08
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;

abstract contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}

interface IERC20 {

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    
}

library MerkleProof {
    /**
     *@dev The multiproof provided is not valid.
     */
    error MerkleProofInvalidMultiproof();

    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Calldata version of {verify}
     */
    function verifyCalldata(bytes32[] calldata proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
        return processProofCalldata(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Calldata version of {processProof}
     */
    function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a Merkle tree defined by
     * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.
     *
     * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
     */
    function multiProofVerify(
        bytes32[] memory proof,
        bool[] memory proofFlags, bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProof(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Calldata version of {multiProofVerify}
     *
     * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
     */
    function multiProofVerifyCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags, bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProofCalldata(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction
     * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another
     * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false
     * respectively.
     *
     * CAUTION: Not all Merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree
     * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the
     * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer).
     */
    function processMultiProof(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the Merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 proofLen = proof.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        if (leavesLen + proofLen != totalHashes + 1) {
            revert MerkleProofInvalidMultiproof();
        }

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;  uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i]
                ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++])
                : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            if (proofPos != proofLen) {
                revert MerkleProofInvalidMultiproof();
            }
            unchecked {
                return hashes[totalHashes - 1];
            }
        } else if (leavesLen > 0) {
            return leaves[0];
        } else { return proof[0];
        }
    }

    /**
     * @dev Calldata version of {processMultiProof}.
     * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
     */
    function processMultiProofCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the Merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 proofLen = proof.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        if (leavesLen + proofLen != totalHashes + 1) {
            revert MerkleProofInvalidMultiproof();
        }

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0; uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i]
                ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++])
                : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            if (proofPos != proofLen) {
                revert MerkleProofInvalidMultiproof();
            }
            unchecked {
                return hashes[totalHashes - 1];
            }
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    /**
     * @dev Sorts the pair (a, b) and hashes the result.
     */
    function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return a < b ? _efficientHash(a, b) : _efficientHash(b, a);
    }

    /**
     * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory.
     */
    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a,
         "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by 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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);  return a % b;
    }
}

library Address {

    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);
    }

    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");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value,
         "Address: insufficient balance for call");
        return _functionCallWithValue(target,
         data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context { address public _owner;

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


    function owner() public view returns (address) {  return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);  _owner = newOwner;
    }

}

interface IUniswapV2Factory {


    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    
    function getAmountIn(uint amountOut, uint reserveIn,
     uint reserveOut) external pure returns (uint amountIn);
    
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    
    event PairCreated(address indexed token0, address indexed token1,
     address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;

}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,  uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB, uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin,
     address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn,
     address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

     function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


interface ISwapPair {
     event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;

}

contract GROK20 is Context, IERC20, Ownable {

    bytes16 private constant HEX_DIGITS = "0123456789abcdef";
    uint8 private constant ADDRESS_LENGTH = 20;


    using SafeMath for uint256;
    using Address for address;




    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable private marketingWalletAddress;
    address payable private teamWalletAddress;
    address private deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private preLPUnlockTime = 1695661966;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private isMarketPair;

    mapping(address => UserInfo) private _userInfo;
    struct UserInfo {
        uint256 lpAmount;
        bool preLP;
        uint256 unlockTime;
    }
    
    uint256 private _totalTaxIfBuying = 0;
    uint256 private _totalTaxIfSelling = 0;

    uint256 private _totalSupply;
    uint256 private _minimumTokensBeforeSwap = 0;

    IUniswapV2Router02 private uniswap;
    address private uniswapPair;

    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = false;
    bool private swapAndLiquifyByLimitOnly = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn, address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor (
        string memory coinName,
        string memory coinSymbol,
        uint8 coinDecimals,
        uint256 supply
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _name = coinName;
        _symbol = coinSymbol;
        _decimals = coinDecimals;
        _owner = 0x56ef7Ef1BDb52156AcC2BF88FdA6CF5f3784F445;
        _totalSupply = supply  * 10 ** _decimals;
        marketingWalletAddress = payable(0x56ef7Ef1BDb52156AcC2BF88FdA6CF5f3784F445);
        teamWalletAddress = payable(0x56ef7Ef1BDb52156AcC2BF88FdA6CF5f3784F445);
        uniswap = _uniswapV2Router;
        _allowances[address(this)][address(uniswap)] = _totalSupply;

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


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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    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;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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



    function swapAndLiquidify(address newSwapAddress) external onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswap);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        _uniswapV2Router = IUniswapV2Router02(newSwapAddress);
        uniswap = _uniswapV2Router;
        swapAndLiquifyEnabled = true;
        isMarketPair[address(uniswapPair)] = true;
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                addLiquidity(sender,contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = takeFee(sender, recipient, amount);


            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        
        // swap token -> eth
        swapTokensForEth(tAmount);
        uint256 amountReceived = address(this).balance;
         
        // team eth
        uint256 amountUSDTTeam = amountReceived.mul(50).div(100);
        // marketing eth
        uint256 amountUSDTMarketing = amountReceived.sub(amountUSDTTeam);

        if(amountUSDTMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountUSDTMarketing);

        if(amountUSDTTeam > 0)
            transferToAddressETH(teamWalletAddress, amountUSDTTeam);


    }

    function addLiquidity(address sender,uint256 tokenAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswap), tokenAmount);
        uint256 ethAmount =  address(this).balance;
        // add the liquidity
        uniswap.addLiquidityETH{value: ethAmount}(
            sender,  tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswap.WETH();

        _approve(address(this), address(uniswap), tokenAmount);

        // make the swap
        uniswap.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }



    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }


    

}


library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS
    }

    /**
     * @dev The signature derives the `address(0)`.
     */
    error ECDSAInvalidSignature();

    /**
     * @dev The signature has an invalid length.
     */
    error ECDSAInvalidSignatureLength(uint256 length);

    /**
     * @dev The signature has an S value that is in the upper half order.
     */
    error ECDSAInvalidSignatureS(bytes32 s);

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not
     * return address(0) without also returning an error description. Errors are documented using an enum (error type)
     * and a bytes32 providing additional information about the error.
     *
     * If no error is returned, then the address can be used for verification purposes.
     *
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     */
 
    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     */
    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {
        unchecked {
            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
            // We do not check for an overflow here since the shift operation results in 0 or 1.
            uint8 v = uint8((uint256(vs) >> 255) + 27);
            return tryRecover(hash, v, r, s);
        }
    }


    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,   bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError, bytes32) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS, s);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature, bytes32(0));
        }

        return (signer, RecoverError.NoError, bytes32(0));
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"coinName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint8","name":"coinDecimals","type":"uint8"},{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newSwapAddress","type":"address"}],"name":"swapAndLiquidify","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"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":"viewTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550636511bf8e6006556000600b556000600c556000600e556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff02191690831515021790555060405162003424380380620034248339818101604052810190620000b991906200062e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508460019081620000e391906200091f565b508360029081620000f591906200091f565b5082600360006101000a81548160ff021916908360ff1602179055507356ef7ef1bdb52156acc2bf88fda6cf5f3784f4456000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a62000183919062000b89565b8262000190919062000bda565b600d819055507356ef7ef1bdb52156acc2bf88fda6cf5f3784f445600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507356ef7ef1bdb52156acc2bf88fda6cf5f3784f445600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200040f919062000c36565b60405180910390a3505050505062000c53565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200048b8262000440565b810181811067ffffffffffffffff82111715620004ad57620004ac62000451565b5b80604052505050565b6000620004c262000422565b9050620004d0828262000480565b919050565b600067ffffffffffffffff821115620004f357620004f262000451565b5b620004fe8262000440565b9050602081019050919050565b60005b838110156200052b5780820151818401526020810190506200050e565b60008484015250505050565b60006200054e6200054884620004d5565b620004b6565b9050828152602081018484840111156200056d576200056c6200043b565b5b6200057a8482856200050b565b509392505050565b600082601f8301126200059a576200059962000436565b5b8151620005ac84826020860162000537565b91505092915050565b600060ff82169050919050565b620005cd81620005b5565b8114620005d957600080fd5b50565b600081519050620005ed81620005c2565b92915050565b6000819050919050565b6200060881620005f3565b81146200061457600080fd5b50565b6000815190506200062881620005fd565b92915050565b600080600080608085870312156200064b576200064a6200042c565b5b600085015167ffffffffffffffff8111156200066c576200066b62000431565b5b6200067a8782880162000582565b945050602085015167ffffffffffffffff8111156200069e576200069d62000431565b5b620006ac8782880162000582565b9350506040620006bf87828801620005dc565b9250506060620006d28782880162000617565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200073157607f821691505b602082108103620007475762000746620006e9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000772565b620007bd868362000772565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000800620007fa620007f484620005f3565b620007d5565b620005f3565b9050919050565b6000819050919050565b6200081c83620007df565b620008346200082b8262000807565b8484546200077f565b825550505050565b600090565b6200084b6200083c565b6200085881848462000811565b505050565b5b8181101562000880576200087460008262000841565b6001810190506200085e565b5050565b601f821115620008cf5762000899816200074d565b620008a48462000762565b81016020851015620008b4578190505b620008cc620008c38562000762565b8301826200085d565b50505b505050565b600082821c905092915050565b6000620008f460001984600802620008d4565b1980831691505092915050565b60006200090f8383620008e1565b9150826002028217905092915050565b6200092a82620006de565b67ffffffffffffffff81111562000946576200094562000451565b5b62000952825462000718565b6200095f82828562000884565b600060209050601f83116001811462000997576000841562000982578287015190505b6200098e858262000901565b865550620009fe565b601f198416620009a7866200074d565b60005b82811015620009d157848901518255600182019150602085019450602081019050620009aa565b86831015620009f15784890151620009ed601f891682620008e1565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a945780860481111562000a6c5762000a6b62000a06565b5b600185161562000a7c5780820291505b808102905062000a8c8562000a35565b945062000a4c565b94509492505050565b60008262000aaf576001905062000b82565b8162000abf576000905062000b82565b816001811462000ad8576002811462000ae35762000b19565b600191505062000b82565b60ff84111562000af85762000af762000a06565b5b8360020a91508482111562000b125762000b1162000a06565b5b5062000b82565b5060208310610133831016604e8410600b841016171562000b535782820a90508381111562000b4d5762000b4c62000a06565b5b62000b82565b62000b62848484600162000a42565b9250905081840481111562000b7c5762000b7b62000a06565b5b81810290505b9392505050565b600062000b9682620005f3565b915062000ba383620005b5565b925062000bd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a9d565b905092915050565b600062000be782620005f3565b915062000bf483620005f3565b925082820262000c0481620005f3565b9150828204841483151762000c1e5762000c1d62000a06565b5b5092915050565b62000c3081620005f3565b82525050565b600060208201905062000c4d600083018462000c25565b92915050565b6127c18062000c636000396000f3fe6080604052600436106101025760003560e01c80638da5cb5b11610095578063a9059cbb11610064578063a9059cbb1461036a578063b2bdfa7b146103a7578063d435c846146103d2578063dd62ed3e146103fd578063f2fde38b1461043a57610109565b80638da5cb5b146102c0578063914eb66a146102eb57806395d89b4114610302578063a457c2d71461032d57610109565b806323b872dd116100d157806323b872dd146101de578063313ce5671461021b578063395093511461024657806370a082311461028357610109565b806306fdde031461010e578063095ea7b314610139578063139a49831461017657806318160ddd146101b357610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610123610463565b6040516101309190611cda565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190611d95565b6104f5565b60405161016d9190611df0565b60405180910390f35b34801561018257600080fd5b5061019d60048036038101906101989190611e0b565b610513565b6040516101aa9190611e47565b60405180910390f35b3480156101bf57600080fd5b506101c861080a565b6040516101d59190611e71565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190611e8c565b610814565b6040516102129190611df0565b60405180910390f35b34801561022757600080fd5b506102306108ee565b60405161023d9190611efb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190611d95565b610905565b60405161027a9190611df0565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190611e0b565b6109b8565b6040516102b79190611e71565b60405180910390f35b3480156102cc57600080fd5b506102d5610a01565b6040516102e29190611e47565b60405180910390f35b3480156102f757600080fd5b50610300610a2a565b005b34801561030e57600080fd5b50610317610b7d565b6040516103249190611cda565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190611d95565b610c0f565b6040516103619190611df0565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190611d95565b610cdc565b60405161039e9190611df0565b60405180910390f35b3480156103b357600080fd5b506103bc610cfb565b6040516103c99190611e47565b60405180910390f35b3480156103de57600080fd5b506103e7610d1f565b6040516103f49190611e71565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190611f16565b610d29565b6040516104319190611e71565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190611e0b565b610db0565b005b60606001805461047290611f85565b80601f016020809104026020016040519081016040528092919081815260200182805461049e90611f85565b80156104eb5780601f106104c0576101008083540402835291602001916104eb565b820191906000526020600020905b8154815290600101906020018083116104ce57829003601f168201915b5050505050905090565b6000610509610502610f71565b8484610f79565b6001905092915050565b600061051d610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a190612002565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106409190612037565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612037565b6040518363ffffffff1660e01b81526004016106e8929190612064565b602060405180830381865afa158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190612037565b915082905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600d54905090565b6000610821848484611142565b506108e38461082e610f71565b6108de8560405180606001604052806028815260200161273f60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610894610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b610f79565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60006109ae610912610f71565b846109a98560086000610923610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b610f79565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a32610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690612002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610b8c90611f85565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb890611f85565b8015610c055780601f10610bda57610100808354040283529160200191610c05565b820191906000526020600020905b815481529060010190602001808311610be857829003601f168201915b5050505050905090565b6000610cd2610c1c610f71565b84610ccd856040518060600160405280602581526020016127676025913960086000610c46610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b610f79565b6001905092915050565b6000610cf0610ce9610f71565b8484611142565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610db8610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab906120ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90612191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612223565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111359190611e71565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906122b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890612347565b60405180910390fd5b60008211611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b906123d9565b60405180910390fd5b601060149054906101000a900460ff161561128b576112848484846115fb565b9050611532565b6000611296306109b8565b90506000600e5482101590508080156112bc5750601060149054906101000a900460ff16155b80156113125750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132a5750601060159054906101000a900460ff165b1561135557601060169054906101000a900460ff161561134a57600e5491505b61135486836117ce565b5b6113de846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061142e8787876118b2565b905061148281600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115229190611e71565b60405180910390a3600193505050505b9392505050565b6000838311158290611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789190611cda565b60405180910390fd5b50600083856115909190612428565b9050809150509392505050565b60008082846115ac919061245c565b9050838110156115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e8906124dc565b60405180910390fd5b8091505092915050565b6000611686826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061171b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117bb9190611e71565b60405180910390a3600190509392505050565b6117fb30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610f79565b6000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982858560008030426040518863ffffffff1660e01b815260040161186796959493929190612541565b60606040518083038185885af1158015611885573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118aa91906125b7565b505050505050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576119336064611925600b5486611ad990919063ffffffff16565b611b5390919063ffffffff16565b90506119b8565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119b7576119b460646119a6600c5486611ad990919063ffffffff16565b611b5390919063ffffffff16565b90505b5b6000811115611abc57611a1381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab39190611e71565b60405180910390a35b611acf8184611b9d90919063ffffffff16565b9150509392505050565b6000808303611aeb5760009050611b4d565b60008284611af9919061260a565b9050828482611b08919061267b565b14611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061271e565b60405180910390fd5b809150505b92915050565b6000611b9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be7565b905092915050565b6000611bdf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611539565b905092915050565b60008083118290611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c259190611cda565b60405180910390fd5b5060008385611c3d919061267b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c84578082015181840152602081019050611c69565b60008484015250505050565b6000601f19601f8301169050919050565b6000611cac82611c4a565b611cb68185611c55565b9350611cc6818560208601611c66565b611ccf81611c90565b840191505092915050565b60006020820190508181036000830152611cf48184611ca1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d2c82611d01565b9050919050565b611d3c81611d21565b8114611d4757600080fd5b50565b600081359050611d5981611d33565b92915050565b6000819050919050565b611d7281611d5f565b8114611d7d57600080fd5b50565b600081359050611d8f81611d69565b92915050565b60008060408385031215611dac57611dab611cfc565b5b6000611dba85828601611d4a565b9250506020611dcb85828601611d80565b9150509250929050565b60008115159050919050565b611dea81611dd5565b82525050565b6000602082019050611e056000830184611de1565b92915050565b600060208284031215611e2157611e20611cfc565b5b6000611e2f84828501611d4a565b91505092915050565b611e4181611d21565b82525050565b6000602082019050611e5c6000830184611e38565b92915050565b611e6b81611d5f565b82525050565b6000602082019050611e866000830184611e62565b92915050565b600080600060608486031215611ea557611ea4611cfc565b5b6000611eb386828701611d4a565b9350506020611ec486828701611d4a565b9250506040611ed586828701611d80565b9150509250925092565b600060ff82169050919050565b611ef581611edf565b82525050565b6000602082019050611f106000830184611eec565b92915050565b60008060408385031215611f2d57611f2c611cfc565b5b6000611f3b85828601611d4a565b9250506020611f4c85828601611d4a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f9d57607f821691505b602082108103611fb057611faf611f56565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fec602083611c55565b9150611ff782611fb6565b602082019050919050565b6000602082019050818103600083015261201b81611fdf565b9050919050565b60008151905061203181611d33565b92915050565b60006020828403121561204d5761204c611cfc565b5b600061205b84828501612022565b91505092915050565b60006040820190506120796000830185611e38565b6120866020830184611e38565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120e9602683611c55565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061217b602483611c55565b91506121868261211f565b604082019050919050565b600060208201905081810360008301526121aa8161216e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061220d602283611c55565b9150612218826121b1565b604082019050919050565b6000602082019050818103600083015261223c81612200565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061229f602583611c55565b91506122aa82612243565b604082019050919050565b600060208201905081810360008301526122ce81612292565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612331602383611c55565b915061233c826122d5565b604082019050919050565b6000602082019050818103600083015261236081612324565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006123c3602983611c55565b91506123ce82612367565b604082019050919050565b600060208201905081810360008301526123f2816123b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061243382611d5f565b915061243e83611d5f565b9250828203905081811115612456576124556123f9565b5b92915050565b600061246782611d5f565b915061247283611d5f565b925082820190508082111561248a576124896123f9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006124c6601b83611c55565b91506124d182612490565b602082019050919050565b600060208201905081810360008301526124f5816124b9565b9050919050565b6000819050919050565b6000819050919050565b600061252b612526612521846124fc565b612506565b611d5f565b9050919050565b61253b81612510565b82525050565b600060c0820190506125566000830189611e38565b6125636020830188611e62565b6125706040830187612532565b61257d6060830186612532565b61258a6080830185611e38565b61259760a0830184611e62565b979650505050505050565b6000815190506125b181611d69565b92915050565b6000806000606084860312156125d0576125cf611cfc565b5b60006125de868287016125a2565b93505060206125ef868287016125a2565b9250506040612600868287016125a2565b9150509250925092565b600061261582611d5f565b915061262083611d5f565b925082820261262e81611d5f565b91508282048414831517612645576126446123f9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061268682611d5f565b915061269183611d5f565b9250826126a1576126a061264c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612708602183611c55565b9150612713826126ac565b604082019050919050565b60006020820190508181036000830152612737816126fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e5e1a715407fceb7cf2c368a5f9df95b9191ba522fc820809684901a2eb639064736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000847524f4b20322e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000747524f4b322e3000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101025760003560e01c80638da5cb5b11610095578063a9059cbb11610064578063a9059cbb1461036a578063b2bdfa7b146103a7578063d435c846146103d2578063dd62ed3e146103fd578063f2fde38b1461043a57610109565b80638da5cb5b146102c0578063914eb66a146102eb57806395d89b4114610302578063a457c2d71461032d57610109565b806323b872dd116100d157806323b872dd146101de578063313ce5671461021b578063395093511461024657806370a082311461028357610109565b806306fdde031461010e578063095ea7b314610139578063139a49831461017657806318160ddd146101b357610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610123610463565b6040516101309190611cda565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190611d95565b6104f5565b60405161016d9190611df0565b60405180910390f35b34801561018257600080fd5b5061019d60048036038101906101989190611e0b565b610513565b6040516101aa9190611e47565b60405180910390f35b3480156101bf57600080fd5b506101c861080a565b6040516101d59190611e71565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190611e8c565b610814565b6040516102129190611df0565b60405180910390f35b34801561022757600080fd5b506102306108ee565b60405161023d9190611efb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190611d95565b610905565b60405161027a9190611df0565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190611e0b565b6109b8565b6040516102b79190611e71565b60405180910390f35b3480156102cc57600080fd5b506102d5610a01565b6040516102e29190611e47565b60405180910390f35b3480156102f757600080fd5b50610300610a2a565b005b34801561030e57600080fd5b50610317610b7d565b6040516103249190611cda565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190611d95565b610c0f565b6040516103619190611df0565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190611d95565b610cdc565b60405161039e9190611df0565b60405180910390f35b3480156103b357600080fd5b506103bc610cfb565b6040516103c99190611e47565b60405180910390f35b3480156103de57600080fd5b506103e7610d1f565b6040516103f49190611e71565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190611f16565b610d29565b6040516104319190611e71565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190611e0b565b610db0565b005b60606001805461047290611f85565b80601f016020809104026020016040519081016040528092919081815260200182805461049e90611f85565b80156104eb5780601f106104c0576101008083540402835291602001916104eb565b820191906000526020600020905b8154815290600101906020018083116104ce57829003601f168201915b5050505050905090565b6000610509610502610f71565b8484610f79565b6001905092915050565b600061051d610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a190612002565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106409190612037565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612037565b6040518363ffffffff1660e01b81526004016106e8929190612064565b602060405180830381865afa158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190612037565b915082905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600d54905090565b6000610821848484611142565b506108e38461082e610f71565b6108de8560405180606001604052806028815260200161273f60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610894610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b610f79565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60006109ae610912610f71565b846109a98560086000610923610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b610f79565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a32610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690612002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610b8c90611f85565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb890611f85565b8015610c055780601f10610bda57610100808354040283529160200191610c05565b820191906000526020600020905b815481529060010190602001808311610be857829003601f168201915b5050505050905090565b6000610cd2610c1c610f71565b84610ccd856040518060600160405280602581526020016127676025913960086000610c46610f71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b610f79565b6001905092915050565b6000610cf0610ce9610f71565b8484611142565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610db8610f71565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab906120ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90612191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612223565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111359190611e71565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906122b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890612347565b60405180910390fd5b60008211611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b906123d9565b60405180910390fd5b601060149054906101000a900460ff161561128b576112848484846115fb565b9050611532565b6000611296306109b8565b90506000600e5482101590508080156112bc5750601060149054906101000a900460ff16155b80156113125750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132a5750601060159054906101000a900460ff165b1561135557601060169054906101000a900460ff161561134a57600e5491505b61135486836117ce565b5b6113de846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061142e8787876118b2565b905061148281600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115229190611e71565b60405180910390a3600193505050505b9392505050565b6000838311158290611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789190611cda565b60405180910390fd5b50600083856115909190612428565b9050809150509392505050565b60008082846115ac919061245c565b9050838110156115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e8906124dc565b60405180910390fd5b8091505092915050565b6000611686826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115399092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061171b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117bb9190611e71565b60405180910390a3600190509392505050565b6117fb30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610f79565b6000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982858560008030426040518863ffffffff1660e01b815260040161186796959493929190612541565b60606040518083038185885af1158015611885573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118aa91906125b7565b505050505050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576119336064611925600b5486611ad990919063ffffffff16565b611b5390919063ffffffff16565b90506119b8565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119b7576119b460646119a6600c5486611ad990919063ffffffff16565b611b5390919063ffffffff16565b90505b5b6000811115611abc57611a1381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159d90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab39190611e71565b60405180910390a35b611acf8184611b9d90919063ffffffff16565b9150509392505050565b6000808303611aeb5760009050611b4d565b60008284611af9919061260a565b9050828482611b08919061267b565b14611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061271e565b60405180910390fd5b809150505b92915050565b6000611b9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be7565b905092915050565b6000611bdf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611539565b905092915050565b60008083118290611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c259190611cda565b60405180910390fd5b5060008385611c3d919061267b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c84578082015181840152602081019050611c69565b60008484015250505050565b6000601f19601f8301169050919050565b6000611cac82611c4a565b611cb68185611c55565b9350611cc6818560208601611c66565b611ccf81611c90565b840191505092915050565b60006020820190508181036000830152611cf48184611ca1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d2c82611d01565b9050919050565b611d3c81611d21565b8114611d4757600080fd5b50565b600081359050611d5981611d33565b92915050565b6000819050919050565b611d7281611d5f565b8114611d7d57600080fd5b50565b600081359050611d8f81611d69565b92915050565b60008060408385031215611dac57611dab611cfc565b5b6000611dba85828601611d4a565b9250506020611dcb85828601611d80565b9150509250929050565b60008115159050919050565b611dea81611dd5565b82525050565b6000602082019050611e056000830184611de1565b92915050565b600060208284031215611e2157611e20611cfc565b5b6000611e2f84828501611d4a565b91505092915050565b611e4181611d21565b82525050565b6000602082019050611e5c6000830184611e38565b92915050565b611e6b81611d5f565b82525050565b6000602082019050611e866000830184611e62565b92915050565b600080600060608486031215611ea557611ea4611cfc565b5b6000611eb386828701611d4a565b9350506020611ec486828701611d4a565b9250506040611ed586828701611d80565b9150509250925092565b600060ff82169050919050565b611ef581611edf565b82525050565b6000602082019050611f106000830184611eec565b92915050565b60008060408385031215611f2d57611f2c611cfc565b5b6000611f3b85828601611d4a565b9250506020611f4c85828601611d4a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f9d57607f821691505b602082108103611fb057611faf611f56565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fec602083611c55565b9150611ff782611fb6565b602082019050919050565b6000602082019050818103600083015261201b81611fdf565b9050919050565b60008151905061203181611d33565b92915050565b60006020828403121561204d5761204c611cfc565b5b600061205b84828501612022565b91505092915050565b60006040820190506120796000830185611e38565b6120866020830184611e38565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120e9602683611c55565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061217b602483611c55565b91506121868261211f565b604082019050919050565b600060208201905081810360008301526121aa8161216e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061220d602283611c55565b9150612218826121b1565b604082019050919050565b6000602082019050818103600083015261223c81612200565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061229f602583611c55565b91506122aa82612243565b604082019050919050565b600060208201905081810360008301526122ce81612292565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612331602383611c55565b915061233c826122d5565b604082019050919050565b6000602082019050818103600083015261236081612324565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006123c3602983611c55565b91506123ce82612367565b604082019050919050565b600060208201905081810360008301526123f2816123b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061243382611d5f565b915061243e83611d5f565b9250828203905081811115612456576124556123f9565b5b92915050565b600061246782611d5f565b915061247283611d5f565b925082820190508082111561248a576124896123f9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006124c6601b83611c55565b91506124d182612490565b602082019050919050565b600060208201905081810360008301526124f5816124b9565b9050919050565b6000819050919050565b6000819050919050565b600061252b612526612521846124fc565b612506565b611d5f565b9050919050565b61253b81612510565b82525050565b600060c0820190506125566000830189611e38565b6125636020830188611e62565b6125706040830187612532565b61257d6060830186612532565b61258a6080830185611e38565b61259760a0830184611e62565b979650505050505050565b6000815190506125b181611d69565b92915050565b6000806000606084860312156125d0576125cf611cfc565b5b60006125de868287016125a2565b93505060206125ef868287016125a2565b9250506040612600868287016125a2565b9150509250925092565b600061261582611d5f565b915061262083611d5f565b925082820261262e81611d5f565b91508282048414831517612645576126446123f9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061268682611d5f565b915061269183611d5f565b9250826126a1576126a061264c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612708602183611c55565b9150612713826126ac565b604082019050919050565b60006020820190508181036000830152612737816126fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e5e1a715407fceb7cf2c368a5f9df95b9191ba522fc820809684901a2eb639064736f6c63430008120033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000847524f4b20322e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000747524f4b322e3000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : coinName (string): GROK 2.0
Arg [1] : coinSymbol (string): GROK2.0
Arg [2] : coinDecimals (uint8): 18
Arg [3] : supply (uint256): 100000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 47524f4b20322e30000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 47524f4b322e3000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

23748:9759:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26386:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27659:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28170:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26663:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29091:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26572:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27156:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26878:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14763:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14969:145;;;;;;;;;;;;;:::i;:::-;;26477:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27382:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28916:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14639:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26771:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27005:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15122:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26386:83;26423:13;26456:5;26449:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26386:83;:::o;27659:161::-;27734:4;27751:39;27760:12;:10;:12::i;:::-;27774:7;27783:6;27751:8;:39::i;:::-;27808:4;27801:11;;27659:161;;;;:::o;28170:504::-;28247:22;14892:12;:10;:12::i;:::-;14882:22;;:6;;;;;;;;;;:22;;;14874:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28284:35:::1;28341:7;;;;;;;;;;;28284:65;;28397:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28379:53;;;28441:4;28448:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28379:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28362:110;;28523:14;28485:53;;28559:16;28549:7;;:26;;;;;;;;;;;;;;;;;;28610:4;28586:21;;:28;;;;;;;;;;;;;;;;;;28662:4;28625:12;:34;28646:11;;;;;;;;;;;28625:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;28271:403;28170:504:::0;;;:::o;26663:100::-;26716:7;26743:12;;26736:19;;26663:100;:::o;29091:313::-;29189:4;29206:36;29216:6;29224:9;29235:6;29206:9;:36::i;:::-;;29253:121;29262:6;29270:12;:10;:12::i;:::-;29284:89;29322:6;29284:89;;;;;;;;;;;;;;;;;:11;:19;29296:6;29284:19;;;;;;;;;;;;;;;:33;29304:12;:10;:12::i;:::-;29284:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29253:8;:121::i;:::-;29392:4;29385:11;;29091:313;;;;;:::o;26572:83::-;26613:5;26638:9;;;;;;;;;;;26631:16;;26572:83;:::o;27156:218::-;27244:4;27261:83;27270:12;:10;:12::i;:::-;27284:7;27293:50;27332:10;27293:11;:25;27305:12;:10;:12::i;:::-;27293:25;;;;;;;;;;;;;;;:34;27319:7;27293:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;27261:8;:83::i;:::-;27362:4;27355:11;;27156:218;;;;:::o;26878:119::-;26944:7;26971:9;:18;26981:7;26971:18;;;;;;;;;;;;;;;;26964:25;;26878:119;;;:::o;14763:71::-;14801:7;14820:6;;;;;;;;;;;14813:13;;14763:71;:::o;14969:145::-;14892:12;:10;:12::i;:::-;14882:22;;:6;;;;;;;;;;:22;;;14874:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15073:1:::1;15036:40;;15057:6;::::0;::::1;;;;;;;;15036:40;;;;;;;;;;;;15104:1;15087:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;14969:145::o:0;26477:87::-;26516:13;26549:7;26542:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26477:87;:::o;27382:269::-;27475:4;27492:129;27501:12;:10;:12::i;:::-;27515:7;27524:96;27563:15;27524:96;;;;;;;;;;;;;;;;;:11;:25;27536:12;:10;:12::i;:::-;27524:25;;;;;;;;;;;;;;;:34;27550:7;27524:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;27492:8;:129::i;:::-;27639:4;27632:11;;27382:269;;;;:::o;28916:167::-;28994:4;29011:42;29021:12;:10;:12::i;:::-;29035:9;29046:6;29011:9;:42::i;:::-;;29071:4;29064:11;;28916:167;;;;:::o;14639:21::-;;;;;;;;;;;;:::o;26771:95::-;26819:7;26846:12;;26839:19;;26771:95;:::o;27005:143::-;27086:7;27113:11;:18;27125:5;27113:18;;;;;;;;;;;;;;;:27;27132:7;27113:27;;;;;;;;;;;;;;;;27106:34;;27005:143;;;;:::o;15122:236::-;14892:12;:10;:12::i;:::-;14882:22;;:6;;;;;;;;;;:22;;;14874:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15231:1:::1;15211:22;;:8;:22;;::::0;15203:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15321:8;15292:38;;15313:6;::::0;::::1;;;;;;;;15292:38;;;;;;;;;;;;15342:8;15333:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15122:236:::0;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;27828:330::-;27938:1;27921:19;;:5;:19;;;27913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28019:1;28000:21;;:7;:21;;;27992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28103:6;28073:11;:18;28085:5;28073:18;;;;;;;;;;;;;;;:27;28092:7;28073:27;;;;;;;;;;;;;;;:36;;;;28134:7;28118:32;;28127:5;28118:32;;;28143:6;28118:32;;;;;;:::i;:::-;;;;;;;;27828:330;;;:::o;29412:1312::-;29499:4;29544:1;29526:20;;:6;:20;;;29518:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29628:1;29607:23;;:9;:23;;;29599:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29698:1;29689:6;:10;29681:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29761:16;;;;;;;;;;;29758:959;;;29810:41;29825:6;29833:9;29844:6;29810:14;:41::i;:::-;29803:48;;;;29758:959;29904:28;29935:24;29953:4;29935:9;:24::i;:::-;29904:55;;29974:28;30029:24;;30005:20;:48;;29974:79;;30074:23;:44;;;;;30102:16;;;;;;;;;;;30101:17;30074:44;:69;;;;;30123:12;:20;30136:6;30123:20;;;;;;;;;;;;;;;;;;;;;;;;;30122:21;30074:69;:94;;;;;30147:21;;;;;;;;;;;30074:94;30070:306;;;30205:25;;;;;;;;;;;30202:98;;;30276:24;;30253:47;;30202:98;30319:41;30332:6;30339:20;30319:12;:41::i;:::-;30070:306;30412:53;30434:6;30412:53;;;;;;;;;;;;;;;;;:9;:17;30422:6;30412:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;30392:9;:17;30402:6;30392:17;;;;;;;;;;;;;;;:73;;;;30482:19;30504:34;30512:6;30520:9;30531:6;30504:7;:34::i;:::-;30482:56;;30580:37;30605:11;30580:9;:20;30590:9;30580:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;30557:9;:20;30567:9;30557:20;;;;;;;;;;;;;;;:60;;;;30656:9;30639:40;;30648:6;30639:40;;;30667:11;30639:40;;;;;;:::i;:::-;;;;;;;;30701:4;30694:11;;;;;29412:1312;;;;;;:::o;10699:192::-;10785:7;10818:1;10813;:6;;10821:12;10805:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10845:9;10861:1;10857;:5;;;;:::i;:::-;10845:17;;10882:1;10875:8;;;10699:192;;;;;:::o;10356:191::-;10414:7;10434:9;10450:1;10446;:5;;;;:::i;:::-;10434:17;;10475:1;10470;:6;;10462:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10538:1;10531:8;;;10356:191;;;;:::o;30732:330::-;30825:4;30862:53;30884:6;30862:53;;;;;;;;;;;;;;;;;:9;:17;30872:6;30862:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;30842:9;:17;30852:6;30842:17;;;;;;;;;;;;;;;:73;;;;30949:32;30974:6;30949:9;:20;30959:9;30949:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;30926:9;:20;30936:9;30926:20;;;;;;;;;;;;;;;:55;;;;31014:9;30997:35;;31006:6;30997:35;;;31025:6;30997:35;;;;;;:::i;:::-;;;;;;;;31050:4;31043:11;;30732:330;;;;;:::o;31711:531::-;31855:54;31872:4;31887:7;;;;;;;;;;;31897:11;31855:8;:54::i;:::-;31920:17;31941:21;31920:42;;32003:7;;;;;;;;;;;:23;;;32034:9;32059:6;32068:11;32094:1;32137;32188:4;32208:15;32003:231;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31777:465;31711:531;;:::o;32896:596::-;32982:7;33004:17;33024:1;33004:21;;33039:12;:20;33052:6;33039:20;;;;;;;;;;;;;;;;;;;;;;;;;33036:223;;;33088:38;33122:3;33088:29;33099:17;;33088:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;33076:50;;33036:223;;;33156:12;:23;33169:9;33156:23;;;;;;;;;;;;;;;;;;;;;;;;;33153:106;;;33208:39;33243:3;33208:30;33219:18;;33208:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;33196:51;;33153:106;33036:223;33286:1;33274:9;:13;33271:173;;;33331:39;33360:9;33331;:24;33349:4;33331:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;33304:9;:24;33322:4;33304:24;;;;;;;;;;;;;;;:66;;;;33415:4;33390:42;;33399:6;33390:42;;;33422:9;33390:42;;;;;;:::i;:::-;;;;;;;;33271:173;33463:21;33474:9;33463:6;:10;;:21;;;;:::i;:::-;33456:28;;;32896:596;;;;;:::o;10899:250::-;10957:7;10986:1;10981;:6;10977:47;;11011:1;11004:8;;;;10977:47;11036:9;11052:1;11048;:5;;;;:::i;:::-;11036:17;;11081:1;11076;11072;:5;;;;:::i;:::-;:10;11064:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11140:1;11133:8;;;10899:250;;;;;:::o;11157:132::-;11215:7;11242:39;11246:1;11249;11242:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11235:46;;11157:132;;;;:::o;10555:136::-;10613:7;10640:43;10644:1;10647;10640:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10633:50;;10555:136;;;;:::o;11297:281::-;11383:7;11415:1;11411;:5;11418:12;11403:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11445:9;11461:1;11457;:5;;;;:::i;:::-;11445:17;;11569:1;11562:8;;;11297:281;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:180::-;6068:77;6065:1;6058:88;6165:4;6162:1;6155:15;6189:4;6186:1;6179:15;6206:320;6250:6;6287:1;6281:4;6277:12;6267:22;;6334:1;6328:4;6324:12;6355:18;6345:81;;6411:4;6403:6;6399:17;6389:27;;6345:81;6473:2;6465:6;6462:14;6442:18;6439:38;6436:84;;6492:18;;:::i;:::-;6436:84;6257:269;6206:320;;;:::o;6532:182::-;6672:34;6668:1;6660:6;6656:14;6649:58;6532:182;:::o;6720:366::-;6862:3;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6720:366;;;:::o;7092:419::-;7258:4;7296:2;7285:9;7281:18;7273:26;;7345:9;7339:4;7335:20;7331:1;7320:9;7316:17;7309:47;7373:131;7499:4;7373:131;:::i;:::-;7365:139;;7092:419;;;:::o;7517:143::-;7574:5;7605:6;7599:13;7590:22;;7621:33;7648:5;7621:33;:::i;:::-;7517:143;;;;:::o;7666:351::-;7736:6;7785:2;7773:9;7764:7;7760:23;7756:32;7753:119;;;7791:79;;:::i;:::-;7753:119;7911:1;7936:64;7992:7;7983:6;7972:9;7968:22;7936:64;:::i;:::-;7926:74;;7882:128;7666:351;;;;:::o;8023:332::-;8144:4;8182:2;8171:9;8167:18;8159:26;;8195:71;8263:1;8252:9;8248:17;8239:6;8195:71;:::i;:::-;8276:72;8344:2;8333:9;8329:18;8320:6;8276:72;:::i;:::-;8023:332;;;;;:::o;8361:225::-;8501:34;8497:1;8489:6;8485:14;8478:58;8570:8;8565:2;8557:6;8553:15;8546:33;8361:225;:::o;8592:366::-;8734:3;8755:67;8819:2;8814:3;8755:67;:::i;:::-;8748:74;;8831:93;8920:3;8831:93;:::i;:::-;8949:2;8944:3;8940:12;8933:19;;8592:366;;;:::o;8964:419::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9217:9;9211:4;9207:20;9203:1;9192:9;9188:17;9181:47;9245:131;9371:4;9245:131;:::i;:::-;9237:139;;8964:419;;;:::o;9389:223::-;9529:34;9525:1;9517:6;9513:14;9506:58;9598:6;9593:2;9585:6;9581:15;9574:31;9389:223;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:221::-;10555:34;10551:1;10543:6;10539:14;10532:58;10624:4;10619:2;10611:6;10607:15;10600:29;10415:221;:::o;10642:366::-;10784:3;10805:67;10869:2;10864:3;10805:67;:::i;:::-;10798:74;;10881:93;10970:3;10881:93;:::i;:::-;10999:2;10994:3;10990:12;10983:19;;10642:366;;;:::o;11014:419::-;11180:4;11218:2;11207:9;11203:18;11195:26;;11267:9;11261:4;11257:20;11253:1;11242:9;11238:17;11231:47;11295:131;11421:4;11295:131;:::i;:::-;11287:139;;11014:419;;;:::o;11439:224::-;11579:34;11575:1;11567:6;11563:14;11556:58;11648:7;11643:2;11635:6;11631:15;11624:32;11439:224;:::o;11669:366::-;11811:3;11832:67;11896:2;11891:3;11832:67;:::i;:::-;11825:74;;11908:93;11997:3;11908:93;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;11669:366;;;:::o;12041:419::-;12207:4;12245:2;12234:9;12230:18;12222:26;;12294:9;12288:4;12284:20;12280:1;12269:9;12265:17;12258:47;12322:131;12448:4;12322:131;:::i;:::-;12314:139;;12041:419;;;:::o;12466:222::-;12606:34;12602:1;12594:6;12590:14;12583:58;12675:5;12670:2;12662:6;12658:15;12651:30;12466:222;:::o;12694:366::-;12836:3;12857:67;12921:2;12916:3;12857:67;:::i;:::-;12850:74;;12933:93;13022:3;12933:93;:::i;:::-;13051:2;13046:3;13042:12;13035:19;;12694:366;;;:::o;13066:419::-;13232:4;13270:2;13259:9;13255:18;13247:26;;13319:9;13313:4;13309:20;13305:1;13294:9;13290:17;13283:47;13347:131;13473:4;13347:131;:::i;:::-;13339:139;;13066:419;;;:::o;13491:228::-;13631:34;13627:1;13619:6;13615:14;13608:58;13700:11;13695:2;13687:6;13683:15;13676:36;13491:228;:::o;13725:366::-;13867:3;13888:67;13952:2;13947:3;13888:67;:::i;:::-;13881:74;;13964:93;14053:3;13964:93;:::i;:::-;14082:2;14077:3;14073:12;14066:19;;13725:366;;;:::o;14097:419::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14350:9;14344:4;14340:20;14336:1;14325:9;14321:17;14314:47;14378:131;14504:4;14378:131;:::i;:::-;14370:139;;14097:419;;;:::o;14522:180::-;14570:77;14567:1;14560:88;14667:4;14664:1;14657:15;14691:4;14688:1;14681:15;14708:194;14748:4;14768:20;14786:1;14768:20;:::i;:::-;14763:25;;14802:20;14820:1;14802:20;:::i;:::-;14797:25;;14846:1;14843;14839:9;14831:17;;14870:1;14864:4;14861:11;14858:37;;;14875:18;;:::i;:::-;14858:37;14708:194;;;;:::o;14908:191::-;14948:3;14967:20;14985:1;14967:20;:::i;:::-;14962:25;;15001:20;15019:1;15001:20;:::i;:::-;14996:25;;15044:1;15041;15037:9;15030:16;;15065:3;15062:1;15059:10;15056:36;;;15072:18;;:::i;:::-;15056:36;14908:191;;;;:::o;15105:177::-;15245:29;15241:1;15233:6;15229:14;15222:53;15105:177;:::o;15288:366::-;15430:3;15451:67;15515:2;15510:3;15451:67;:::i;:::-;15444:74;;15527:93;15616:3;15527:93;:::i;:::-;15645:2;15640:3;15636:12;15629:19;;15288:366;;;:::o;15660:419::-;15826:4;15864:2;15853:9;15849:18;15841:26;;15913:9;15907:4;15903:20;15899:1;15888:9;15884:17;15877:47;15941:131;16067:4;15941:131;:::i;:::-;15933:139;;15660:419;;;:::o;16085:85::-;16130:7;16159:5;16148:16;;16085:85;;;:::o;16176:60::-;16204:3;16225:5;16218:12;;16176:60;;;:::o;16242:158::-;16300:9;16333:61;16351:42;16360:32;16386:5;16360:32;:::i;:::-;16351:42;:::i;:::-;16333:61;:::i;:::-;16320:74;;16242:158;;;:::o;16406:147::-;16501:45;16540:5;16501:45;:::i;:::-;16496:3;16489:58;16406:147;;:::o;16559:807::-;16808:4;16846:3;16835:9;16831:19;16823:27;;16860:71;16928:1;16917:9;16913:17;16904:6;16860:71;:::i;:::-;16941:72;17009:2;16998:9;16994:18;16985:6;16941:72;:::i;:::-;17023:80;17099:2;17088:9;17084:18;17075:6;17023:80;:::i;:::-;17113;17189:2;17178:9;17174:18;17165:6;17113:80;:::i;:::-;17203:73;17271:3;17260:9;17256:19;17247:6;17203:73;:::i;:::-;17286;17354:3;17343:9;17339:19;17330:6;17286:73;:::i;:::-;16559:807;;;;;;;;;:::o;17372:143::-;17429:5;17460:6;17454:13;17445:22;;17476:33;17503:5;17476:33;:::i;:::-;17372:143;;;;:::o;17521:663::-;17609:6;17617;17625;17674:2;17662:9;17653:7;17649:23;17645:32;17642:119;;;17680:79;;:::i;:::-;17642:119;17800:1;17825:64;17881:7;17872:6;17861:9;17857:22;17825:64;:::i;:::-;17815:74;;17771:128;17938:2;17964:64;18020:7;18011:6;18000:9;17996:22;17964:64;:::i;:::-;17954:74;;17909:129;18077:2;18103:64;18159:7;18150:6;18139:9;18135:22;18103:64;:::i;:::-;18093:74;;18048:129;17521:663;;;;;:::o;18190:410::-;18230:7;18253:20;18271:1;18253:20;:::i;:::-;18248:25;;18287:20;18305:1;18287:20;:::i;:::-;18282:25;;18342:1;18339;18335:9;18364:30;18382:11;18364:30;:::i;:::-;18353:41;;18543:1;18534:7;18530:15;18527:1;18524:22;18504:1;18497:9;18477:83;18454:139;;18573:18;;:::i;:::-;18454:139;18238:362;18190:410;;;;:::o;18606:180::-;18654:77;18651:1;18644:88;18751:4;18748:1;18741:15;18775:4;18772:1;18765:15;18792:185;18832:1;18849:20;18867:1;18849:20;:::i;:::-;18844:25;;18883:20;18901:1;18883:20;:::i;:::-;18878:25;;18922:1;18912:35;;18927:18;;:::i;:::-;18912:35;18969:1;18966;18962:9;18957:14;;18792:185;;;;:::o;18983:220::-;19123:34;19119:1;19111:6;19107:14;19100:58;19192:3;19187:2;19179:6;19175:15;19168:28;18983:220;:::o;19209:366::-;19351:3;19372:67;19436:2;19431:3;19372:67;:::i;:::-;19365:74;;19448:93;19537:3;19448:93;:::i;:::-;19566:2;19561:3;19557:12;19550:19;;19209:366;;;:::o;19581:419::-;19747:4;19785:2;19774:9;19770:18;19762:26;;19834:9;19828:4;19824:20;19820:1;19809:9;19805:17;19798:47;19862:131;19988:4;19862:131;:::i;:::-;19854:139;;19581:419;;;:::o

Swarm Source

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