false
true
0

Contract Address Details

0xD835F6941B94526B3B95C3330a70cF8Ced28C7a5

Token
pNAY (pNAY)
Creator
0x6538a8–d16fd5 at 0x514e46–bb246c
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
25853979
Contract is not verified. However, we found a verified contract with the same bytecode in Blockscout DB 0x080f7a005834c84240f25b2df4aed8236bd57812.
All metadata displayed below is from that contract. In order to verify current contract, click Verify & Publish button
Verify & Publish
Contract name:
Token




Optimization enabled
true
Compiler version
v0.8.26+commit.8a97fa7a




Optimization runs
1000000
Verified at
2026-02-20T00:06:33.955527Z

Token.sol

// Verified & Published by Crypto Glider ✈️
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

library Address {
    error AddressInsufficientBalance(address account);
    error AddressEmptyCode(address target);
    error FailedInnerCall();

    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) revert AddressInsufficientBalance(address(this));
        (bool success, ) = recipient.call{value: amount}("");
        if (!success) revert FailedInnerCall();
    }

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

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        if (address(this).balance < value) revert AddressInsufficientBalance(address(this));
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function verifyCallResultFromTarget(address target, bool success, bytes memory returndata) internal view returns (bytes memory) {
        if (!success) _revert(returndata);
        else {
            if (returndata.length == 0 && target.code.length == 0) revert AddressEmptyCode(target);
            return returndata;
        }
    }

    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
        if (!success) _revert(returndata);
        else return returndata;
    }

    function _revert(bytes memory returndata) private pure {
        if (returndata.length > 0) {
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert FailedInnerCall();
        }
    }
}

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

// EIP-6093 standard errors used by OZ v5
interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual returns (string memory) { return _name; }
    function symbol() public view virtual returns (string memory) { return _symbol; }
    function decimals() public view virtual returns (uint8) { return 18; }

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

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) revert ERC20InvalidSender(address(0));
        if (to == address(0)) revert ERC20InvalidReceiver(address(0));
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) revert ERC20InsufficientBalance(from, fromBalance, value);
            unchecked { _balances[from] = fromBalance - value; }
        }

        if (to == address(0)) {
            unchecked { _totalSupply -= value; }
        } else {
            unchecked { _balances[to] += value; }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) revert ERC20InvalidReceiver(address(0));
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) revert ERC20InvalidSender(address(0));
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) revert ERC20InvalidApprover(address(0));
        if (spender == address(0)) revert ERC20InvalidSpender(address(0));
        _allowances[owner][spender] = value;
        if (emitEvent) emit Approval(owner, spender, value);
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            unchecked { _approve(owner, spender, currentAllowance - value, false); }
        }
    }
}

abstract contract ERC20Burnable is Context, ERC20 {
    function burn(uint256 value) public virtual { _burn(_msgSender(), value); }
    function burnFrom(address account, uint256 value) public virtual {
        _spendAllowance(account, _msgSender(), value);
        _burn(account, value);
    }
}

abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address initialOwner) {
        if (initialOwner == address(0)) revert OwnableInvalidOwner(address(0));
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() { _checkOwner(); _; }

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) revert OwnableUnauthorizedAccount(_msgSender());
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) revert OwnableInvalidOwner(address(0));
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

error Token_AlreadyLaunched();
error Token_NotLaunched();
error Token_TransferFailed();

contract Token is ERC20, ERC20Burnable, Ownable {
    using Address for address;
    bool public launched;

    constructor(
        string memory _name,
        string memory _symbol,
        uint256 _totalSupply
    ) ERC20(_name, _symbol) Ownable(msg.sender) {
        _mint(msg.sender, _totalSupply);
    }

    function launch() external onlyOwner {
        if (launched) revert Token_AlreadyLaunched();
        launched = true;
    }

    function _transferAllowed(address from, address to) private view returns (bool) {
        if (launched) return true;
        if (from == owner() || to == owner()) return true;
        return false;
    }

    function transferFrom(address from, address to, uint256 value) public override returns (bool) {
        if (!_transferAllowed(from, to)) revert Token_NotLaunched();
        bool success = super.transferFrom(from, to, value);
        if (!success) revert Token_TransferFailed();
        return true;
    }

    function transfer(address to, uint256 value) public virtual override returns (bool) {
        if (!_transferAllowed(_msgSender(), to)) revert Token_NotLaunched();
        super._transfer(_msgSender(), to, value);
        return true;
    }
}
        

Compiler Settings

{"viaIR":true,"remappings":[],"optimizer":{"runs":1000000,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"paris","compilationTarget":{"Token.sol":"Token"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint256","name":"_totalSupply","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"allowance","internalType":"uint256"},{"type":"uint256","name":"needed","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"uint256","name":"balance","internalType":"uint256"},{"type":"uint256","name":"needed","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"type":"address","name":"approver","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"type":"address","name":"receiver","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"type":"address","name":"sender","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"error","name":"Token_AlreadyLaunched","inputs":[]},{"type":"error","name":"Token_NotLaunched","inputs":[]},{"type":"error","name":"Token_TransferFailed","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burnFrom","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"launch","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"launched","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x6080604052346103f6576113f580380380610019816103fb565b9283398101906060818303126103f65780516001600160401b0381116103f65782610045918301610420565b60208201519092906001600160401b0381116103f657604091610069918401610420565b91015182516001600160401b0381116102ff57600354600181811c911680156103ec575b60208210146102df57601f8111610387575b506020601f82116001146103205781929394600092610315575b50508160011b916000199060031b1c1916176003555b81516001600160401b0381116102ff57600454600181811c911680156102f5575b60208210146102df57601f811161027a575b50602092601f8211600114610215579281929360009261020a575b50508160011b916000199060031b1c1916176004555b33156101f45760058054336001600160a01b0319821681179092556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360006002548281018091116101e05760025550336000526000602052604060002081815401905560405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610f69908161048c8239f35b634e487b7160e01b82526011600452602482fd5b631e4fbdf760e01b600052600060045260246000fd5b01519050388061011d565b601f198216936004600052806000209160005b8681106102625750836001959610610249575b505050811b01600455610133565b015160001960f88460031b161c1916905538808061023b565b91926020600181928685015181550194019201610228565b60046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106102d5575b601f0160051c01905b8181106102c95750610102565b600081556001016102bc565b90915081906102b3565b634e487b7160e01b600052602260045260246000fd5b90607f16906100f0565b634e487b7160e01b600052604160045260246000fd5b0151905038806100b9565b601f198216906003600052806000209160005b81811061036f57509583600195969710610356575b505050811b016003556100cf565b015160001960f88460031b161c19169055388080610348565b9192602060018192868b015181550194019201610333565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106103e2575b601f0160051c01905b8181106103d6575061009f565b600081556001016103c9565b90915081906103c0565b90607f169061008d565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176102ff57604052565b81601f820112156103f6578051906001600160401b0382116102ff5761044f601f8301601f19166020016103fb565b92828452602083830101116103f65760005b82811061047657505060206000918301015290565b8060208092840101518282870101520161046156fe6080604052600436101561001257600080fd5b60003560e01c806301339c2114610a2057806306fdde03146108e6578063095ea7b3146107d757806318160ddd1461079b57806323b872dd14610735578063313ce567146106fb57806342966c68146106c057806370a082311461065b578063715018a6146105bd57806379cc67901461056d5780638091f3bf146105295780638da5cb5b146104d757806395d89b41146102dc578063a9059cbb14610253578063dd62ed3e146101c35763f2fde38b146100cc57600080fd5b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5773ffffffffffffffffffffffffffffffffffffffff610118610b35565b610120610b7b565b16801561018f5773ffffffffffffffffffffffffffffffffffffffff600554827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b600080fd5b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576101fa610b35565b73ffffffffffffffffffffffffffffffffffffffff610217610b58565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761028a610b35565b6102948133610bca565b156102b2576102a7906024359033610e38565b602060405160018152f35b7f76e7eb3a0000000000000000000000000000000000000000000000000000000060005260046000fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57604051600090600454918260011c600184169384156104cd575b6020821085146104a0578394828552908160001461044057506001146103c5575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176103965761039282918260405282610acd565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6004600090815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061042457505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610346565b60209193508060019154838588010152019101909183926103f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09050610346565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b90607f1690610325565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602073ffffffffffffffffffffffffffffffffffffffff60055416604051908152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060ff60055460a01c166040519015158152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105bb6105a7610b35565b602435906105b6823383610d0c565b610c36565b005b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105f4610b7b565b600073ffffffffffffffffffffffffffffffffffffffff6005547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5773ffffffffffffffffffffffffffffffffffffffff6106a7610b35565b1660005260006020526020604060002054604051908152f35b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105bb60043533610c36565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160128152f35b346101be5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761076c610b35565b610774610b58565b604435906107828184610bca565b156102b2576102a792610796833383610d0c565b610e38565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576020600254604051908152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761080e610b35565b6024359033156108b75773ffffffffffffffffffffffffffffffffffffffff1690811561088857336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d6200000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe602df0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57604051600090600354918260011c60018416938415610a16575b6020821085146104a05783948285529081600014610440575060011461099b575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176103965761039282918260405282610acd565b6003600090815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109fa57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610346565b60209193508060019154838588010152019101909183926109c6565b90607f169061092f565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57610a57610b7b565b60055460ff8160a01c16610aa3577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017600555005b7f6b25d1de0000000000000000000000000000000000000000000000000000000060005260046000fd5b9190916020815282519283602083015260005b848110610b1f5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8060208092840101516040828601015201610ae0565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101be57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101be57565b73ffffffffffffffffffffffffffffffffffffffff600554163303610b9c57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b6005549060ff8260a01c16610c2e5773ffffffffffffffffffffffffffffffffffffffff8092169182911614918215610c0e575b5050610c0957600090565b600190565b73ffffffffffffffffffffffffffffffffffffffff161490503880610bfe565b505050600190565b73ffffffffffffffffffffffffffffffffffffffff168015610cdd57600091818352826020526040832054818110610cab57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b83927fe450d38c0000000000000000000000000000000000000000000000000000000060649552600452602452604452fd5b7f96c6fd1e00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff909291921691826000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8403610d87575b50505050565b828410610dec5780156108b75773ffffffffffffffffffffffffffffffffffffffff82161561088857600052600160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000209103905538808080610d81565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff16908115610cdd5773ffffffffffffffffffffffffffffffffffffffff16918215610f04576000828152806020526040812054828110610ed15791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b6064937fe450d38c0000000000000000000000000000000000000000000000000000000083949352600452602452604452fd5b7fec442f0500000000000000000000000000000000000000000000000000000000600052600060045260246000fdfea264697066735822122019044437cf9f873d46cc9896afabc7b42fea081d47451f8e6e7b714b95f5c16264736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000004704e4159000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004704e415900000000000000000000000000000000000000000000000000000000

Deployed ByteCode

0x6080604052600436101561001257600080fd5b60003560e01c806301339c2114610a2057806306fdde03146108e6578063095ea7b3146107d757806318160ddd1461079b57806323b872dd14610735578063313ce567146106fb57806342966c68146106c057806370a082311461065b578063715018a6146105bd57806379cc67901461056d5780638091f3bf146105295780638da5cb5b146104d757806395d89b41146102dc578063a9059cbb14610253578063dd62ed3e146101c35763f2fde38b146100cc57600080fd5b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5773ffffffffffffffffffffffffffffffffffffffff610118610b35565b610120610b7b565b16801561018f5773ffffffffffffffffffffffffffffffffffffffff600554827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b600080fd5b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576101fa610b35565b73ffffffffffffffffffffffffffffffffffffffff610217610b58565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761028a610b35565b6102948133610bca565b156102b2576102a7906024359033610e38565b602060405160018152f35b7f76e7eb3a0000000000000000000000000000000000000000000000000000000060005260046000fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57604051600090600454918260011c600184169384156104cd575b6020821085146104a0578394828552908160001461044057506001146103c5575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176103965761039282918260405282610acd565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6004600090815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061042457505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610346565b60209193508060019154838588010152019101909183926103f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09050610346565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b90607f1690610325565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602073ffffffffffffffffffffffffffffffffffffffff60055416604051908152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060ff60055460a01c166040519015158152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105bb6105a7610b35565b602435906105b6823383610d0c565b610c36565b005b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105f4610b7b565b600073ffffffffffffffffffffffffffffffffffffffff6005547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5773ffffffffffffffffffffffffffffffffffffffff6106a7610b35565b1660005260006020526020604060002054604051908152f35b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576105bb60043533610c36565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160128152f35b346101be5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761076c610b35565b610774610b58565b604435906107828184610bca565b156102b2576102a792610796833383610d0c565b610e38565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be576020600254604051908152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5761080e610b35565b6024359033156108b75773ffffffffffffffffffffffffffffffffffffffff1690811561088857336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d6200000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe602df0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57604051600090600354918260011c60018416938415610a16575b6020821085146104a05783948285529081600014610440575060011461099b575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176103965761039282918260405282610acd565b6003600090815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109fa57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610346565b60209193508060019154838588010152019101909183926109c6565b90607f169061092f565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57610a57610b7b565b60055460ff8160a01c16610aa3577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017600555005b7f6b25d1de0000000000000000000000000000000000000000000000000000000060005260046000fd5b9190916020815282519283602083015260005b848110610b1f5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8060208092840101516040828601015201610ae0565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101be57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101be57565b73ffffffffffffffffffffffffffffffffffffffff600554163303610b9c57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b6005549060ff8260a01c16610c2e5773ffffffffffffffffffffffffffffffffffffffff8092169182911614918215610c0e575b5050610c0957600090565b600190565b73ffffffffffffffffffffffffffffffffffffffff161490503880610bfe565b505050600190565b73ffffffffffffffffffffffffffffffffffffffff168015610cdd57600091818352826020526040832054818110610cab57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b83927fe450d38c0000000000000000000000000000000000000000000000000000000060649552600452602452604452fd5b7f96c6fd1e00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff909291921691826000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8403610d87575b50505050565b828410610dec5780156108b75773ffffffffffffffffffffffffffffffffffffffff82161561088857600052600160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000209103905538808080610d81565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff16908115610cdd5773ffffffffffffffffffffffffffffffffffffffff16918215610f04576000828152806020526040812054828110610ed15791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b6064937fe450d38c0000000000000000000000000000000000000000000000000000000083949352600452602452604452fd5b7fec442f0500000000000000000000000000000000000000000000000000000000600052600060045260246000fdfea264697066735822122019044437cf9f873d46cc9896afabc7b42fea081d47451f8e6e7b714b95f5c16264736f6c634300081a0033