Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
5,330,788 OKGLD
Holders
482
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OKPCGold
Compiler Version
v0.8.14+commit.80d49f37
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* .oooooo. oooo oooo ooooooooo. .oooooo. d8P' `Y8b `888 .8P' `888 `Y88. d8P' `Y8b 888 888 888 d8' 888 .d88' 888 888 888 88888[ 888ooo88P' 888 888 888 888`88b. 888 888 `88b d88' 888 `88b. 888 `88b ooo `Y8bood8P' o888o o888o o888o `Y8bood8P' .oooooo. .oooooo. ooooo oooooooooo. d8P' `Y8b d8P' `Y8b `888' `888' `Y8b 888 888 888 888 888 888 888 888 888 888 888 888 888 ooooo 888 888 888 888 888 `88. .88' `88b d88' 888 o 888 d88' `Y8bood8P' `Y8bood8P' o888ooooood8 o888bood8P' 𝙰𝙽 𝙴𝚇𝚃𝙴𝙽𝚂𝙸𝙾𝙽 𝚃𝙾 𝙾𝙺𝙿𝙲 𝙶𝙰𝙻𝙻𝙴𝚁𝚈 𝙰𝚁𝚃𝚆𝙾𝚁𝙺 #𝟼𝟿: "𝙰𝙸𝚁𝙳𝚁𝙾𝙿" */ // SPDX-License-Identifier: Unlicense pragma solidity ^0.8.14; import "solmate/tokens/ERC20.sol"; import "solmate/auth/Owned.sol"; import "./interfaces/IOKPC.sol"; import "./interfaces/IOKPCMarketplace.sol"; /** @title OKPC Gold @author shahruz.eth */ contract OKPCGold is Owned, ERC20 { // @dev Core OKPC contract IOKPC public immutable OKPC; // @dev Claim config uint256 public constant OKPC_CLAIM_MAX = 1_024; uint256 public constant AIRDROP_CLAIM = 10_000; // @dev Screen staking config uint256 public SCREEN_STAKING_INTERVAL = 64 days; uint256 public SCREEN_STAKING_REWARD = 256; // @dev Claim registry bool public CLAIMABLE; struct OKPCClaim { bool okpcClaimed; bool artworkClaimed; uint128 stakingLastClaimed; } mapping(uint256 => OKPCClaim) public okpcClaims; error ClaimNotOpen(); error NoOKGLDClaimable(); // @dev Modifiers modifier ifClaimable() { if (!CLAIMABLE) revert ClaimNotOpen(); _; } // @dev Constructor constructor(IOKPC okpcAddress) Owned(msg.sender) ERC20("OKPC GOLD", "OKGLD", 18) { OKPC = okpcAddress; } /* -------------------------------------------------------------------------- */ /* CLAIM ALL */ /* -------------------------------------------------------------------------- */ // @notice Claim all eligible OKGLD for an OKPC. // @param pcId An OKPC tokenId. Reverts if the token is not owned by the caller. function claim(uint256 pcId) external ifClaimable { if (OKPC.ownerOf(pcId) != msg.sender) revert NoOKGLDClaimable(); uint256 amount; amount += _claimForOKPC(pcId); amount += _claimForArtwork(pcId); amount += _claimForScreenStaking(pcId); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @notice Claim all eligible OKGLD for a set of OKPCs. // @param pcIds An array of OKPC tokenIds. Tokens not owned by the caller are skipped. function claim(uint256[] calldata pcIds) external ifClaimable { uint256 amount; for (uint256 i; i < pcIds.length; i++) if (OKPC.ownerOf(pcIds[i]) == msg.sender) { amount += _claimForOKPC(pcIds[i]); amount += _claimForArtwork(pcIds[i]); amount += _claimForScreenStaking(pcIds[i]); } if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @notice Calculate the total amount of OKGLD an OKPC is eligible to claim. // @param pcId An OKPC tokenId. function claimableAmount(uint256 pcId) public view returns (uint256 amount) { return claimableAmountForOKPC(pcId) + claimableAmountForArtwork(pcId) + claimableAmountForScreenStaking(pcId); } // @notice Calculate the total amount of OKGLD a set of OKPCs are eligible to claim. // @param pcIds An array of OKPC tokenIds. function claimableAmount(uint256[] calldata pcIds) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmount(pcIds[i]); } /* -------------------------------------------------------------------------- */ /* OKPC CLAIM */ /* -------------------------------------------------------------------------- */ // @notice Claim OKGLD for an OKPC, based on its clock speed and amount of art collected. // @param pcId An OKPC tokenId. Reverts if the token is not owned by the caller. function claimForOKPC(uint256 pcId) external ifClaimable { if (OKPC.ownerOf(pcId) != msg.sender) revert NoOKGLDClaimable(); uint256 amount = _claimForOKPC(pcId); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @notice Claim OKGLD for a set of OKPCs, based on their clock speeds and amounts of art collected. // @param pcIds An array of OKPC tokenIds. Tokens not owned by the caller are skipped. function claimForOKPC(uint256[] calldata pcIds) external ifClaimable { uint256 amount; for (uint256 i; i < pcIds.length; i++) if (OKPC.ownerOf(pcIds[i]) == msg.sender) amount += _claimForOKPC(pcIds[i]); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @dev Calculate the amount of OKGLD an OKPC is eligible to claim, based on its clock speed and amount of art collected. // @dev Register the claimed OKPC using its tokenId to lock future claims. function _claimForOKPC(uint256 pcId) private returns (uint256 amount) { amount = claimableAmountForOKPC(pcId); if (amount > 0) okpcClaims[pcId].okpcClaimed = true; } // @notice Calculate the amount of OKGLD an OKPC is eligible to claim, based on its clock speed and amount of art collected. // @param pcId An OKPC tokenId. function claimableAmountForOKPC(uint256 pcId) public view returns (uint256 amount) { return claimableAmountForOKPC(pcId, 0); } // @notice Calculate the amount of OKGLD a set of OKPCs is eligible to claim, based on its clock speed and amount of art collected. // @param pcIds An array of OKPC tokenIds. function claimableAmountForOKPC(uint256[] calldata pcIds) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmountForOKPC(pcIds[i], 0); } // @notice Calculate the projected amount of OKGLD a set of OKPCs will be eligible to claim after a specified number of blocks, based on their clock speeds and amount of art collected. // @param pcIds An array of OKPC tokenIds. // @param afterBlocks An optional number of blocks to skip ahead for projected clock speed scores. function claimableAmountForOKPC( uint256[] calldata pcIds, uint256 afterBlocks ) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmountForOKPC(pcIds[i], afterBlocks); } // @notice Calculate the projected amount of OKGLD an OKPC will be eligible to claim after a specified number of blocks, based on its clock speed and amount of art collected. // @param pcId An OKPC tokenId. // @param afterBlocks An optional number of blocks to skip ahead for projected clock speed scores. function claimableAmountForOKPC(uint256 pcId, uint256 afterBlocks) public view returns (uint256 amount) { if (okpcClaims[pcId].okpcClaimed == false) { uint256 artCount = OKPC.artCountForOKPC(pcId); uint256 total = (clockSpeedProjected(pcId, afterBlocks) / 2) * 2**(artCount > 3 ? 3 : artCount); amount = total > OKPC_CLAIM_MAX ? OKPC_CLAIM_MAX : total; } } // @notice Calculate the projected clock speed of an OKPC after a specified number of blocks. // @param pcId An OKPC tokenId. // @param afterBlocks A number of blocks to skip ahead. function clockSpeedProjected(uint256 pcId, uint256 afterBlocks) public view returns (uint256) { (uint256 savedSpeed, uint256 lastBlock, , ) = OKPC.clockSpeedData(pcId); if (lastBlock == 0) return 1; uint256 delta = block.number + afterBlocks - lastBlock; uint256 multiplier = delta / 200_000; uint256 clockSpeedMaxMultiplier = OKPC.clockSpeedMaxMultiplier(); if (multiplier > clockSpeedMaxMultiplier) multiplier = clockSpeedMaxMultiplier; uint256 total = savedSpeed + ((delta * (multiplier + 1)) / 10_000); if (total < 1) total = 1; return total; } // @notice Calculate the projected clock speed of a set of OKPCs after a specified number of blocks. // @param pcIds An array of OKPC tokenIds. // @param afterBlocks A number of blocks to skip ahead. function clockSpeedProjected(uint256[] calldata pcIds, uint256 afterBlocks) public view returns (uint256[] memory) { uint256[] memory result = new uint256[](pcIds.length); for (uint256 i; i < pcIds.length; i++) result[i] = clockSpeedProjected(pcIds[i], afterBlocks); return result; } /* -------------------------------------------------------------------------- */ /* ARTWORK CLAIM */ /* -------------------------------------------------------------------------- */ // @notice Claim OKGLD for an OKPC that has collected the AIRDROP artwork from the Gallery. // @param pcId An OKPC tokenId. Reverts if the token is not owned by the caller. function claimForArtwork(uint256 pcId) external ifClaimable { if (OKPC.ownerOf(pcId) != msg.sender) revert NoOKGLDClaimable(); uint256 amount = _claimForArtwork(pcId); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @notice Claim OKGLD for a set of OKPCs that have collected the AIRDROP artwork from the Gallery. // @param pcIds An array of OKPC tokenIds. Tokens not owned by the caller are skipped. function claimForArtwork(uint256[] calldata pcIds) external ifClaimable { uint256 amount; for (uint256 i; i < pcIds.length; i++) if (OKPC.ownerOf(pcIds[i]) == msg.sender) amount += _claimForArtwork(pcIds[i]); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @dev Calculate the amount of OKGLD an OKPC is eligible to claim, based on collecting the AIRDROP artwork from the Gallery. // @dev Register the artwork claim using its tokenId to lock future claims. function _claimForArtwork(uint256 pcId) private returns (uint256 amount) { amount = claimableAmountForArtwork(pcId); if (amount > 0) okpcClaims[pcId].artworkClaimed = true; } // @notice Calculate the amount of OKGLD an OKPC is eligible to claim, based on collecting the AIRDROP artwork from the Gallery. // @param pcId An OKPC tokenId. function claimableAmountForArtwork(uint256 pcId) public view returns (uint256 amount) { if ( okpcClaims[pcId].artworkClaimed == false && OKPC.artCollectedByOKPC(pcId, 69) ) { if ( OKPC.marketplaceAddress() == address(0) || IOKPCMarketplace(OKPC.marketplaceAddress()).didMint(pcId, 69) ) amount = AIRDROP_CLAIM; } } // @notice Calculate the amount of OKGLD a set of OKPCs is eligible to claim, based on collecting the AIRDROP artwork from the Gallery. // @param pcId An array of OKPC tokenIds. function claimableAmountForArtwork(uint256[] calldata pcIds) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmountForArtwork(pcIds[i]); } /* -------------------------------------------------------------------------- */ /* SCREEN STAKING */ /* -------------------------------------------------------------------------- */ // @notice Claim OKGLD for an OKPC that is continuously displaying the AIRDROP artwork from the Gallery. // @param pcId An OKPC tokenId. Reverts if the token is not owned by the caller. function claimForScreenStaking(uint256 pcId) external ifClaimable { if (OKPC.ownerOf(pcId) != msg.sender) revert NoOKGLDClaimable(); uint256 amount = _claimForScreenStaking(pcId); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @notice Claim OKGLD for a set of OKPCs that are continuously displaying the AIRDROP artwork from the Gallery. // @param pcIds A set of OKPC tokenIds. Tokens not owned by the caller are skipped. function claimForScreenStaking(uint256[] calldata pcIds) external ifClaimable { uint256 amount; for (uint256 i; i < pcIds.length; i++) if (OKPC.ownerOf(pcIds[i]) == msg.sender) amount += _claimForScreenStaking(pcIds[i]); if (amount == 0) revert NoOKGLDClaimable(); _mint(msg.sender, amount * 10**decimals); } // @dev Calculate the amount of OKGLD an OKPC is eligible to claim, based on continuously displaying the AIRDROP artwork from the Gallery. // @dev Register the screen staking claim to reset the clock. function _claimForScreenStaking(uint256 pcId) private returns (uint256 amount) { amount = claimableAmountForScreenStaking(pcId); if (amount > 0) okpcClaims[pcId].stakingLastClaimed = uint128(block.timestamp); } // @notice Calculate the amount of OKGLD an OKPC is eligible to claim, based on continuously displaying the AIRDROP artwork from the Gallery. // @param pcId An OKPC tokenId. function claimableAmountForScreenStaking(uint256 pcId) public view returns (uint256 amount) { return claimableAmountForScreenStaking(pcId, 0); } // @notice Calculate the amount of OKGLD a set of OKPCs is eligible to claim, based on continuously displaying the AIRDROP artwork from the Gallery. // @param pcIds An array of OKPC tokenIds. function claimableAmountForScreenStaking(uint256[] calldata pcIds) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmountForScreenStaking(pcIds[i]); } // @notice Calculate the projected amount of OKGLD an OKPC will be eligible to claim after a specified number of seconds, based on continuously displaying the AIRDROP artwork from the Gallery. // @param pcId An OKPC tokenId. // @param afterTime An optional number of seconds to skip ahead for projected screen staking rewards. function claimableAmountForScreenStaking(uint256 pcId, uint256 afterTime) public view returns (uint256 amount) { if (OKPC.activeArtForOKPC(pcId) != 69) return 0; (, , , uint256 artLastChanged) = OKPC.clockSpeedData(pcId); uint256 previous = ( okpcClaims[pcId].stakingLastClaimed > artLastChanged ? okpcClaims[pcId].stakingLastClaimed : artLastChanged ); if (block.timestamp + afterTime >= previous + SCREEN_STAKING_INTERVAL) amount = SCREEN_STAKING_REWARD * ((block.timestamp + afterTime - previous) / SCREEN_STAKING_INTERVAL); } // @notice Calculate the projected amount of OKGLD a set of OKPCs will be eligible to claim after a specified number of seconds, based on continuously displaying the AIRDROP artwork from the Gallery. // @param pcIds An array of OKPC tokenIds. // @param afterTime An optional number of seconds to skip ahead for projected screen staking rewards. function claimableAmountForScreenStaking( uint256[] calldata pcIds, uint256 afterTime ) public view returns (uint256 amount) { for (uint256 i; i < pcIds.length; i++) amount += claimableAmountForScreenStaking(pcIds[i], afterTime); } /* -------------------------------------------------------------------------- */ /* TOKEN FUNCTIONS */ /* -------------------------------------------------------------------------- */ // @notice Burn tokens and decrease the totalSupply. // @param amount An amount of tokens to burn. function burn(uint256 amount) external { _burn(msg.sender, amount); } /* -------------------------------------------------------------------------- */ /* OWNER */ /* -------------------------------------------------------------------------- */ // @notice Turn the ability to claim on or off. Owner only. function setClaimable(bool claimable) external onlyOwner { CLAIMABLE = claimable; } // @notice Adjust the screen staking configuration. Owner only. function setScreenStakingConfig( uint256 screenStakingInterval, uint256 screenStakingReward ) external onlyOwner { SCREEN_STAKING_INTERVAL = screenStakingInterval; SCREEN_STAKING_REWARD = screenStakingReward; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { address recoveredAddress = ecrecover( keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256( abi.encode( keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ), owner, spender, value, nonces[owner]++, deadline ) ) ) ), v, r, s ); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnerUpdated(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnerUpdated(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.14; interface IOKPC { function marketplaceAddress() external view returns (address); function owner() external view returns (address); function balanceOf(address owner) external view returns (uint256); function ownerOf(uint256 tokenId) external view returns (address); function artCountForOKPC(uint256) external view returns (uint256); function clockSpeed(uint256) external view returns (uint256); function clockSpeedMaxMultiplier() external view returns (uint256); function clockSpeedData(uint256 pcId) external view returns ( uint256, uint256, uint256, uint256 ); function activeArtForOKPC(uint256 pcId) external view returns (uint256); function artCollectedByOKPC(uint256 pcId, uint256 artId) external view returns (bool); function setMarketplaceAddress(address marketplaceAddress) external; function transferArt( uint256 fromOKPC, uint256 toOKPC, uint256 artId ) external; }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.14; interface IOKPCMarketplace { function didMint(uint256 pcId, uint256 artId) external view returns (bool); }
{ "remappings": [ "ds-test/=lib/solmate/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solmate/=lib/solmate/src/", "src/=src/", "test/=test/", "script/=script/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IOKPC","name":"okpcAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ClaimNotOpen","type":"error"},{"inputs":[],"name":"NoOKGLDClaimable","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AIRDROP_CLAIM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIMABLE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OKPC","outputs":[{"internalType":"contract IOKPC","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OKPC_CLAIM_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCREEN_STAKING_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCREEN_STAKING_REWARD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimForArtwork","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimForArtwork","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimForOKPC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimForOKPC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimForScreenStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimForScreenStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimableAmountForArtwork","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimableAmountForArtwork","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimableAmountForOKPC","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimableAmountForOKPC","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"},{"internalType":"uint256","name":"afterBlocks","type":"uint256"}],"name":"claimableAmountForOKPC","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"},{"internalType":"uint256","name":"afterBlocks","type":"uint256"}],"name":"claimableAmountForOKPC","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"}],"name":"claimableAmountForScreenStaking","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"},{"internalType":"uint256","name":"afterTime","type":"uint256"}],"name":"claimableAmountForScreenStaking","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"},{"internalType":"uint256","name":"afterTime","type":"uint256"}],"name":"claimableAmountForScreenStaking","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"}],"name":"claimableAmountForScreenStaking","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pcIds","type":"uint256[]"},{"internalType":"uint256","name":"afterBlocks","type":"uint256"}],"name":"clockSpeedProjected","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pcId","type":"uint256"},{"internalType":"uint256","name":"afterBlocks","type":"uint256"}],"name":"clockSpeedProjected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"okpcClaims","outputs":[{"internalType":"bool","name":"okpcClaimed","type":"bool"},{"internalType":"bool","name":"artworkClaimed","type":"bool"},{"internalType":"uint128","name":"stakingLastClaimed","type":"uint128"}],"stateMutability":"view","type":"function"},{"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"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"claimable","type":"bool"}],"name":"setClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"screenStakingInterval","type":"uint256"},{"internalType":"uint256","name":"screenStakingReward","type":"uint256"}],"name":"setScreenStakingConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
610100604052625460006007556101006008553480156200001f57600080fd5b5060405162002c8738038062002c87833981016040819052620000429162000261565b604080518082018252600981526813d2d410c811d3d31160ba1b60208083019190915282518084018452600581526413d2d1d31160da1b91810191909152600080546001600160a01b0319163390811782559351929391926012929182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3508251620000db906001906020860190620001bb565b508151620000f1906002906020850190620001bb565b5060ff81166080524660a052620001076200011f565b60c0525050506001600160a01b031660e05262000372565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051620001539190620002cf565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b828054620001c99062000293565b90600052602060002090601f016020900481019282620001ed576000855562000238565b82601f106200020857805160ff191683800117855562000238565b8280016001018555821562000238579182015b82811115620002385782518255916020019190600101906200021b565b50620002469291506200024a565b5090565b5b808211156200024657600081556001016200024b565b6000602082840312156200027457600080fd5b81516001600160a01b03811681146200028c57600080fd5b9392505050565b600181811c90821680620002a857607f821691505b602082108103620002c957634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ec57607f831692505b602080841082036200030c57634e487b7160e01b86526022600452602486fd5b818015620003235760018114620003355762000364565b60ff1986168952848901965062000364565b60008a81526020902060005b868110156200035c5781548b82015290850190830162000341565b505084890196505b509498975050505050505050565b60805160a05160c05160e05161285d6200042a600039600081816105a10152818161087001528181610a0b01528181610e3b01528181610ff7015281816111e701528181611300015281816114960152818161151b015281816115ad015281816116e1015281816117f5015281816118ab0152818161194601528181611ce801528181611dd70152611eab01526000610d9901526000610d640152600081816103860152818161098e0152610ad4015261285d6000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80636ba4c1381161015c578063a9059cbb116100ce578063d505accf11610087578063d505accf14610638578063dd62ed3e1461064b578063ec937e7014610676578063f27e1ef314610689578063f700ae8b1461069c578063ff7b3446146106a557600080fd5b8063a9059cbb146105d0578063b140f644146105e3578063b4208bbf146105f6578063b778985b146105ff578063b81087fb14610612578063c640e9af1461062557600080fd5b80638c607c38116101205780638c607c38146105435780638da5cb5b14610556578063902604221461058157806395d89b4114610594578063980a04471461059c5780639b8799c8146105c357600080fd5b80636ba4c138146104ca5780636cfe0ad1146104dd57806370a08231146104f05780637ecebe00146105105780637f2d91021461053057600080fd5b8063313ce567116102005780634373853d116101b95780634373853d1461041b57806344dcb4d8146104245780634bdfc7361461042d5780634c64a52314610440578063503d154d146104a457806368939509146104b757600080fd5b8063313ce56714610381578063315d32aa146103ba5780633644e515146103da578063378c93ad146103e2578063379607f5146103f557806342966c681461040857600080fd5b806319859c641161025257806319859c641461030f5780631c836bcf1461032257806323b872dd1461033557806327c87a9b146103485780632b9727bf1461035b5780632ce4e4701461036e57600080fd5b806306fdde031461028f578063095ea7b3146102ad57806313af4035146102d057806314014565146102e557806318160ddd14610306575b600080fd5b6102976106b8565b6040516102a4919061218a565b60405180910390f35b6102c06102bb3660046121f4565b610746565b60405190151581526020016102a4565b6102e36102de366004612220565b6107b3565b005b6102f86102f3366004612244565b610831565b6040519081526020016102a4565b6102f860035481565b6102e361031d3660046122a9565b61083e565b6102e3610330366004612244565b6109c8565b6102c06103433660046122eb565b610afe565b6102f86103563660046122a9565b610bde565b6102f86103693660046122a9565b610c30565b6102e361037c36600461232c565b610c7d565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102a4565b6103cd6103c836600461234e565b610cb2565b6040516102a4919061239a565b6102f8610d60565b6102e36103f03660046123ec565b610dbb565b6102e3610403366004612244565b610df8565b6102e3610416366004612244565b610f0c565b6102f860075481565b6102f861040081565b6102f861043b3660046122a9565b610f19565b61047e61044e366004612244565b600a6020526000908152604090205460ff808216916101008104909116906201000090046001600160801b031683565b60408051931515845291151560208401526001600160801b0316908201526060016102a4565b6102f86104b2366004612244565b610f64565b6102f86104c536600461234e565b610f71565b6102e36104d83660046122a9565b610fc5565b6102f86104eb366004612244565b611138565b6102f86104fe366004612220565b60046020526000908152604090205481565b6102f861051e366004612220565b60066020526000908152604090205481565b6102f861053e36600461234e565b611169565b6102e36105513660046122a9565b6111b5565b600054610569906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b6102e361058f3660046122a9565b6112ce565b6102976113e7565b6105697f000000000000000000000000000000000000000000000000000000000000000081565b6009546102c09060ff1681565b6102c06105de3660046121f4565b6113f4565b6102f86105f1366004612244565b61145a565b6102f861271081565b6102f861060d36600461232c565b6116ae565b6102e3610620366004612244565b6117b2565b6102f861063336600461232c565b611892565b6102e3610646366004612409565b611a61565b6102f8610659366004612480565b600560209081526000928352604080842090915290825290205481565b6102e3610684366004612244565b611ca5565b6102f86106973660046122a9565b611d85565b6102f860085481565b6102f86106b336600461232c565b611dd0565b600180546106c5906124b9565b80601f01602080910402602001604051908101604052809291908181526020018280546106f1906124b9565b801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a19086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd906124f3565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006107ad826000611892565b60095460ff16610861576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e8686858181106108af576108af612519565b905060200201356040518263ffffffff1660e01b81526004016108d491815260200190565b602060405180830381865afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610915919061252f565b6001600160a01b0316036109515761094484848381811061093857610938612519565b90506020020135611f82565b61094e9083612562565b91505b8061095b8161257a565b915050610865565b5080600003610985576040516344b4f38360e11b815260040160405180910390fd5b6109c3336109b47f0000000000000000000000000000000000000000000000000000000000000000600a612677565b6109be9084612686565b611fd0565b505050565b60095460ff166109eb576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a76919061252f565b6001600160a01b031614610a9d576040516344b4f38360e11b815260040160405180910390fd5b6000610aa88261202a565b905080600003610acb576040516344b4f38360e11b815260040160405180910390fd5b610afa336109b47f0000000000000000000000000000000000000000000000000000000000000000600a612677565b5050565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610b5a57610b3583826126a5565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604081208054859290610b829084906126a5565b90915550506001600160a01b038085166000818152600460205260409081902080548701905551909187169060008051602061280883398151915290610bcb9087815260200190565b60405180910390a3506001949350505050565b6000805b82811015610c2957610c0b848483818110610bff57610bff612519565b9050602002013561145a565b610c159083612562565b915080610c218161257a565b915050610be2565b5092915050565b6000805b82811015610c2957610c5f848483818110610c5157610c51612519565b9050602002013560006116ae565b610c699083612562565b915080610c758161257a565b915050610c34565b6000546001600160a01b03163314610ca75760405162461bcd60e51b81526004016107dd906124f3565b600791909155600855565b606060008367ffffffffffffffff811115610ccf57610ccf6126bc565b604051908082528060200260200182016040528015610cf8578160200160208202803683370190505b50905060005b84811015610d5757610d28868683818110610d1b57610d1b612519565b9050602002013585611dd0565b828281518110610d3a57610d3a612519565b602090810291909101015280610d4f8161257a565b915050610cfe565b50949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610d9657610d9161205b565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000546001600160a01b03163314610de55760405162461bcd60e51b81526004016107dd906124f3565b6009805460ff1916911515919091179055565b60095460ff16610e1b576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea6919061252f565b6001600160a01b031614610ecd576040516344b4f38360e11b815260040160405180910390fd5b6000610ed88261202a565b610ee29082612562565b9050610eed826120f5565b610ef79082612562565b9050610f0282611f82565b610aa89082612562565b610f163382612128565b50565b6000805b82811015610c2957610f46848483818110610f3a57610f3a612519565b90506020020135611138565b610f509083612562565b915080610f5c8161257a565b915050610f1d565b60006107ad8260006116ae565b6000805b83811015610fbd57610f9f858583818110610f9257610f92612519565b9050602002013584611892565b610fa99083612562565b915080610fb58161257a565b915050610f75565b509392505050565b60095460ff16610fe8576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e86868581811061103657611036612519565b905060200201356040518263ffffffff1660e01b815260040161105b91815260200190565b602060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c919061252f565b6001600160a01b031603611126576110cb8484838181106110bf576110bf612519565b9050602002013561202a565b6110d59083612562565b91506110f88484838181106110ec576110ec612519565b905060200201356120f5565b6111029083612562565b915061111984848381811061093857610938612519565b6111239083612562565b91505b806111308161257a565b915050610fec565b600061114382610831565b61114c8361145a565b61115584610f64565b61115f9190612562565b6107ad9190612562565b6000805b83811015610fbd5761119785858381811061118a5761118a612519565b90506020020135846116ae565b6111a19083612562565b9150806111ad8161257a565b91505061116d565b60095460ff166111d8576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e86868581811061122657611226612519565b905060200201356040518263ffffffff1660e01b815260040161124b91815260200190565b602060405180830381865afa158015611268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128c919061252f565b6001600160a01b0316036112bc576112af8484838181106110ec576110ec612519565b6112b99083612562565b91505b806112c68161257a565b9150506111dc565b60095460ff166112f1576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e86868581811061133f5761133f612519565b905060200201356040518263ffffffff1660e01b815260040161136491815260200190565b602060405180830381865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a5919061252f565b6001600160a01b0316036113d5576113c88484838181106110bf576110bf612519565b6113d29083612562565b91505b806113df8161257a565b9150506112f5565b600280546106c5906124b9565b336000908152600460205260408120805483919083906114159084906126a5565b90915550506001600160a01b03831660008181526004602052604090819020805485019055513390600080516020612808833981519152906107a19086815260200190565b6000818152600a6020526040812054610100900460ff161580156115095750604051630458b6db60e01b815260048101839052604560248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630458b6db90604401602060405180830381865afa1580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150991906126d2565b156116a95760006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663daa17f496040518163ffffffff1660e01b8152600401602060405180830381865afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b919061252f565b6001600160a01b0316148061169f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663daa17f496040518163ffffffff1660e01b8152600401602060405180830381865afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d919061252f565b604051638439043360e01b815260048101849052604560248201526001600160a01b039190911690638439043390604401602060405180830381865afa15801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f91906126d2565b156116a957506127105b919050565b6000828152600a602052604081205460ff16151581036107ad57604051632129022960e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634252045290602401602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175491906126ef565b90506000600382116117665781611769565b60035b611774906002612708565b60026117808787611dd0565b61178a9190612714565b6117949190612686565b905061040081116117a557806117a9565b6104005b95945050505050565b60095460ff166117d5576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa15801561183c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611860919061252f565b6001600160a01b031614611887576040516344b4f38360e11b815260040160405180910390fd5b6000610aa882611f82565b60405163b75f7e5160e01b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b75f7e5190602401602060405180830381865afa1580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191e91906126ef565b60451461192d575060006107ad565b604051634b00b4cd60e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639601699a90602401608060405180830381865afa158015611995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b99190612736565b6000888152600a602052604081205491955093506201000090046001600160801b0316841091506119ec90505781611a0b565b6000858152600a60205260409020546201000090046001600160801b03165b905060075481611a1b9190612562565b611a258542612562565b10611a595760075481611a388642612562565b611a4291906126a5565b611a4c9190612714565b6008546117a99190612686565b505092915050565b42841015611ab15760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016107dd565b60006001611abd610d60565b6001600160a01b038a811660008181526006602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611bc9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611bff5750876001600160a01b0316816001600160a01b0316145b611c3c5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016107dd565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60095460ff16611cc8576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d53919061252f565b6001600160a01b031614611d7a576040516344b4f38360e11b815260040160405180910390fd5b6000610aa8826120f5565b6000805b82811015610c2957611db2848483818110611da657611da6612519565b90506020020135610831565b611dbc9083612562565b915080611dc88161257a565b915050611d89565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639601699a866040518263ffffffff1660e01b8152600401611e2391815260200190565b608060405180830381865afa158015611e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e649190612736565b50509150915080600003611e7d576001925050506107ad565b600081611e8a8643612562565b611e9491906126a5565b90506000611ea562030d4083612714565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638d774da86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b91906126ef565b905080821115611f39578091505b6000612710611f49846001612562565b611f539086612686565b611f5d9190612714565b611f679087612562565b90506001811015611f76575060015b98975050505050505050565b6000611f8d82610831565b905080156116a9576000918252600a6020526040909120805471ffffffffffffffffffffffffffffffff0000191662010000426001600160801b03160217905590565b8060036000828254611fe29190612562565b90915550506001600160a01b03821660008181526004602090815260408083208054860190555184815260008051602061280883398151915291015b60405180910390a35050565b600061203582610f64565b905080156116a9576000828152600a60205260409020805460ff19166001179055919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405161208d919061276c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006121008261145a565b905080156116a9576000828152600a60205260409020805461ff001916610100179055919050565b6001600160a01b038216600090815260046020526040812080548392906121509084906126a5565b90915550506003805482900390556040518181526000906001600160a01b038416906000805160206128088339815191529060200161201e565b600060208083528351808285015260005b818110156121b75785810183015185820160400152820161219b565b818111156121c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f1657600080fd5b6000806040838503121561220757600080fd5b8235612212816121df565b946020939093013593505050565b60006020828403121561223257600080fd5b813561223d816121df565b9392505050565b60006020828403121561225657600080fd5b5035919050565b60008083601f84011261226f57600080fd5b50813567ffffffffffffffff81111561228757600080fd5b6020830191508360208260051b85010111156122a257600080fd5b9250929050565b600080602083850312156122bc57600080fd5b823567ffffffffffffffff8111156122d357600080fd5b6122df8582860161225d565b90969095509350505050565b60008060006060848603121561230057600080fd5b833561230b816121df565b9250602084013561231b816121df565b929592945050506040919091013590565b6000806040838503121561233f57600080fd5b50508035926020909101359150565b60008060006040848603121561236357600080fd5b833567ffffffffffffffff81111561237a57600080fd5b6123868682870161225d565b909790965060209590950135949350505050565b6020808252825182820181905260009190848201906040850190845b818110156123d2578351835292840192918401916001016123b6565b50909695505050505050565b8015158114610f1657600080fd5b6000602082840312156123fe57600080fd5b813561223d816123de565b600080600080600080600060e0888a03121561242457600080fd5b873561242f816121df565b9650602088013561243f816121df565b95506040880135945060608801359350608088013560ff8116811461246357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561249357600080fd5b823561249e816121df565b915060208301356124ae816121df565b809150509250929050565b600181811c908216806124cd57607f821691505b6020821081036124ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561254157600080fd5b815161223d816121df565b634e487b7160e01b600052601160045260246000fd5b600082198211156125755761257561254c565b500190565b60006001820161258c5761258c61254c565b5060010190565b600181815b808511156125ce5781600019048211156125b4576125b461254c565b808516156125c157918102915b93841c9390800290612598565b509250929050565b6000826125e5575060016107ad565b816125f2575060006107ad565b816001811461260857600281146126125761262e565b60019150506107ad565b60ff8411156126235761262361254c565b50506001821b6107ad565b5060208310610133831016604e8410600b8410161715612651575081810a6107ad565b61265b8383612593565b806000190482111561266f5761266f61254c565b029392505050565b600061223d60ff8416836125d6565b60008160001904831182151516156126a0576126a061254c565b500290565b6000828210156126b7576126b761254c565b500390565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156126e457600080fd5b815161223d816123de565b60006020828403121561270157600080fd5b5051919050565b600061223d83836125d6565b60008261273157634e487b7160e01b600052601260045260246000fd5b500490565b6000806000806080858703121561274c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061278857607f831692505b602080841082036127a757634e487b7160e01b86526022600452602486fd5b8180156127bb57600181146127cc576127f9565b60ff198616895284890196506127f9565b60008a81526020902060005b868110156127f15781548b8201529085019083016127d8565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220125265282537218036d0d00bade8f34d825688ab94b2bc0ce1d2a97ee8c672bf64736f6c634300080e00330000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e8
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061028a5760003560e01c80636ba4c1381161015c578063a9059cbb116100ce578063d505accf11610087578063d505accf14610638578063dd62ed3e1461064b578063ec937e7014610676578063f27e1ef314610689578063f700ae8b1461069c578063ff7b3446146106a557600080fd5b8063a9059cbb146105d0578063b140f644146105e3578063b4208bbf146105f6578063b778985b146105ff578063b81087fb14610612578063c640e9af1461062557600080fd5b80638c607c38116101205780638c607c38146105435780638da5cb5b14610556578063902604221461058157806395d89b4114610594578063980a04471461059c5780639b8799c8146105c357600080fd5b80636ba4c138146104ca5780636cfe0ad1146104dd57806370a08231146104f05780637ecebe00146105105780637f2d91021461053057600080fd5b8063313ce567116102005780634373853d116101b95780634373853d1461041b57806344dcb4d8146104245780634bdfc7361461042d5780634c64a52314610440578063503d154d146104a457806368939509146104b757600080fd5b8063313ce56714610381578063315d32aa146103ba5780633644e515146103da578063378c93ad146103e2578063379607f5146103f557806342966c681461040857600080fd5b806319859c641161025257806319859c641461030f5780631c836bcf1461032257806323b872dd1461033557806327c87a9b146103485780632b9727bf1461035b5780632ce4e4701461036e57600080fd5b806306fdde031461028f578063095ea7b3146102ad57806313af4035146102d057806314014565146102e557806318160ddd14610306575b600080fd5b6102976106b8565b6040516102a4919061218a565b60405180910390f35b6102c06102bb3660046121f4565b610746565b60405190151581526020016102a4565b6102e36102de366004612220565b6107b3565b005b6102f86102f3366004612244565b610831565b6040519081526020016102a4565b6102f860035481565b6102e361031d3660046122a9565b61083e565b6102e3610330366004612244565b6109c8565b6102c06103433660046122eb565b610afe565b6102f86103563660046122a9565b610bde565b6102f86103693660046122a9565b610c30565b6102e361037c36600461232c565b610c7d565b6103a87f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff90911681526020016102a4565b6103cd6103c836600461234e565b610cb2565b6040516102a4919061239a565b6102f8610d60565b6102e36103f03660046123ec565b610dbb565b6102e3610403366004612244565b610df8565b6102e3610416366004612244565b610f0c565b6102f860075481565b6102f861040081565b6102f861043b3660046122a9565b610f19565b61047e61044e366004612244565b600a6020526000908152604090205460ff808216916101008104909116906201000090046001600160801b031683565b60408051931515845291151560208401526001600160801b0316908201526060016102a4565b6102f86104b2366004612244565b610f64565b6102f86104c536600461234e565b610f71565b6102e36104d83660046122a9565b610fc5565b6102f86104eb366004612244565b611138565b6102f86104fe366004612220565b60046020526000908152604090205481565b6102f861051e366004612220565b60066020526000908152604090205481565b6102f861053e36600461234e565b611169565b6102e36105513660046122a9565b6111b5565b600054610569906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b6102e361058f3660046122a9565b6112ce565b6102976113e7565b6105697f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e881565b6009546102c09060ff1681565b6102c06105de3660046121f4565b6113f4565b6102f86105f1366004612244565b61145a565b6102f861271081565b6102f861060d36600461232c565b6116ae565b6102e3610620366004612244565b6117b2565b6102f861063336600461232c565b611892565b6102e3610646366004612409565b611a61565b6102f8610659366004612480565b600560209081526000928352604080842090915290825290205481565b6102e3610684366004612244565b611ca5565b6102f86106973660046122a9565b611d85565b6102f860085481565b6102f86106b336600461232c565b611dd0565b600180546106c5906124b9565b80601f01602080910402602001604051908101604052809291908181526020018280546106f1906124b9565b801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a19086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd906124f3565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006107ad826000611892565b60095460ff16610861576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316636352211e8686858181106108af576108af612519565b905060200201356040518263ffffffff1660e01b81526004016108d491815260200190565b602060405180830381865afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610915919061252f565b6001600160a01b0316036109515761094484848381811061093857610938612519565b90506020020135611f82565b61094e9083612562565b91505b8061095b8161257a565b915050610865565b5080600003610985576040516344b4f38360e11b815260040160405180910390fd5b6109c3336109b47f0000000000000000000000000000000000000000000000000000000000000012600a612677565b6109be9084612686565b611fd0565b505050565b60095460ff166109eb576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e81690636352211e90602401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a76919061252f565b6001600160a01b031614610a9d576040516344b4f38360e11b815260040160405180910390fd5b6000610aa88261202a565b905080600003610acb576040516344b4f38360e11b815260040160405180910390fd5b610afa336109b47f0000000000000000000000000000000000000000000000000000000000000012600a612677565b5050565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610b5a57610b3583826126a5565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604081208054859290610b829084906126a5565b90915550506001600160a01b038085166000818152600460205260409081902080548701905551909187169060008051602061280883398151915290610bcb9087815260200190565b60405180910390a3506001949350505050565b6000805b82811015610c2957610c0b848483818110610bff57610bff612519565b9050602002013561145a565b610c159083612562565b915080610c218161257a565b915050610be2565b5092915050565b6000805b82811015610c2957610c5f848483818110610c5157610c51612519565b9050602002013560006116ae565b610c699083612562565b915080610c758161257a565b915050610c34565b6000546001600160a01b03163314610ca75760405162461bcd60e51b81526004016107dd906124f3565b600791909155600855565b606060008367ffffffffffffffff811115610ccf57610ccf6126bc565b604051908082528060200260200182016040528015610cf8578160200160208202803683370190505b50905060005b84811015610d5757610d28868683818110610d1b57610d1b612519565b9050602002013585611dd0565b828281518110610d3a57610d3a612519565b602090810291909101015280610d4f8161257a565b915050610cfe565b50949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000014614610d9657610d9161205b565b905090565b507fe134a87bef541d91c40b936eee45baca8cb255d4e02bfd10a1c05882daeeb61190565b6000546001600160a01b03163314610de55760405162461bcd60e51b81526004016107dd906124f3565b6009805460ff1916911515919091179055565b60095460ff16610e1b576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e81690636352211e90602401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea6919061252f565b6001600160a01b031614610ecd576040516344b4f38360e11b815260040160405180910390fd5b6000610ed88261202a565b610ee29082612562565b9050610eed826120f5565b610ef79082612562565b9050610f0282611f82565b610aa89082612562565b610f163382612128565b50565b6000805b82811015610c2957610f46848483818110610f3a57610f3a612519565b90506020020135611138565b610f509083612562565b915080610f5c8161257a565b915050610f1d565b60006107ad8260006116ae565b6000805b83811015610fbd57610f9f858583818110610f9257610f92612519565b9050602002013584611892565b610fa99083612562565b915080610fb58161257a565b915050610f75565b509392505050565b60095460ff16610fe8576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316636352211e86868581811061103657611036612519565b905060200201356040518263ffffffff1660e01b815260040161105b91815260200190565b602060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c919061252f565b6001600160a01b031603611126576110cb8484838181106110bf576110bf612519565b9050602002013561202a565b6110d59083612562565b91506110f88484838181106110ec576110ec612519565b905060200201356120f5565b6111029083612562565b915061111984848381811061093857610938612519565b6111239083612562565b91505b806111308161257a565b915050610fec565b600061114382610831565b61114c8361145a565b61115584610f64565b61115f9190612562565b6107ad9190612562565b6000805b83811015610fbd5761119785858381811061118a5761118a612519565b90506020020135846116ae565b6111a19083612562565b9150806111ad8161257a565b91505061116d565b60095460ff166111d8576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316636352211e86868581811061122657611226612519565b905060200201356040518263ffffffff1660e01b815260040161124b91815260200190565b602060405180830381865afa158015611268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128c919061252f565b6001600160a01b0316036112bc576112af8484838181106110ec576110ec612519565b6112b99083612562565b91505b806112c68161257a565b9150506111dc565b60095460ff166112f1576040516335b43c0360e11b815260040160405180910390fd5b6000805b8281101561096357337f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316636352211e86868581811061133f5761133f612519565b905060200201356040518263ffffffff1660e01b815260040161136491815260200190565b602060405180830381865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a5919061252f565b6001600160a01b0316036113d5576113c88484838181106110bf576110bf612519565b6113d29083612562565b91505b806113df8161257a565b9150506112f5565b600280546106c5906124b9565b336000908152600460205260408120805483919083906114159084906126a5565b90915550506001600160a01b03831660008181526004602052604090819020805485019055513390600080516020612808833981519152906107a19086815260200190565b6000818152600a6020526040812054610100900460ff161580156115095750604051630458b6db60e01b815260048101839052604560248201527f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b031690630458b6db90604401602060405180830381865afa1580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150991906126d2565b156116a95760006001600160a01b03167f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b031663daa17f496040518163ffffffff1660e01b8152600401602060405180830381865afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b919061252f565b6001600160a01b0316148061169f57507f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b031663daa17f496040518163ffffffff1660e01b8152600401602060405180830381865afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d919061252f565b604051638439043360e01b815260048101849052604560248201526001600160a01b039190911690638439043390604401602060405180830381865afa15801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f91906126d2565b156116a957506127105b919050565b6000828152600a602052604081205460ff16151581036107ad57604051632129022960e11b8152600481018490526000907f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b031690634252045290602401602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175491906126ef565b90506000600382116117665781611769565b60035b611774906002612708565b60026117808787611dd0565b61178a9190612714565b6117949190612686565b905061040081116117a557806117a9565b6104005b95945050505050565b60095460ff166117d5576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e81690636352211e90602401602060405180830381865afa15801561183c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611860919061252f565b6001600160a01b031614611887576040516344b4f38360e11b815260040160405180910390fd5b6000610aa882611f82565b60405163b75f7e5160e01b8152600481018390526000907f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b03169063b75f7e5190602401602060405180830381865afa1580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191e91906126ef565b60451461192d575060006107ad565b604051634b00b4cd60e11b8152600481018490526000907f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b031690639601699a90602401608060405180830381865afa158015611995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b99190612736565b6000888152600a602052604081205491955093506201000090046001600160801b0316841091506119ec90505781611a0b565b6000858152600a60205260409020546201000090046001600160801b03165b905060075481611a1b9190612562565b611a258542612562565b10611a595760075481611a388642612562565b611a4291906126a5565b611a4c9190612714565b6008546117a99190612686565b505092915050565b42841015611ab15760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016107dd565b60006001611abd610d60565b6001600160a01b038a811660008181526006602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611bc9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611bff5750876001600160a01b0316816001600160a01b0316145b611c3c5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016107dd565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60095460ff16611cc8576040516335b43c0360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810182905233906001600160a01b037f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e81690636352211e90602401602060405180830381865afa158015611d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d53919061252f565b6001600160a01b031614611d7a576040516344b4f38360e11b815260040160405180910390fd5b6000610aa8826120f5565b6000805b82811015610c2957611db2848483818110611da657611da6612519565b90506020020135610831565b611dbc9083612562565b915080611dc88161257a565b915050611d89565b60008060007f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316639601699a866040518263ffffffff1660e01b8152600401611e2391815260200190565b608060405180830381865afa158015611e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e649190612736565b50509150915080600003611e7d576001925050506107ad565b600081611e8a8643612562565b611e9491906126a5565b90506000611ea562030d4083612714565b905060007f0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e86001600160a01b0316638d774da86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b91906126ef565b905080821115611f39578091505b6000612710611f49846001612562565b611f539086612686565b611f5d9190612714565b611f679087612562565b90506001811015611f76575060015b98975050505050505050565b6000611f8d82610831565b905080156116a9576000918252600a6020526040909120805471ffffffffffffffffffffffffffffffff0000191662010000426001600160801b03160217905590565b8060036000828254611fe29190612562565b90915550506001600160a01b03821660008181526004602090815260408083208054860190555184815260008051602061280883398151915291015b60405180910390a35050565b600061203582610f64565b905080156116a9576000828152600a60205260409020805460ff19166001179055919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405161208d919061276c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006121008261145a565b905080156116a9576000828152600a60205260409020805461ff001916610100179055919050565b6001600160a01b038216600090815260046020526040812080548392906121509084906126a5565b90915550506003805482900390556040518181526000906001600160a01b038416906000805160206128088339815191529060200161201e565b600060208083528351808285015260005b818110156121b75785810183015185820160400152820161219b565b818111156121c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f1657600080fd5b6000806040838503121561220757600080fd5b8235612212816121df565b946020939093013593505050565b60006020828403121561223257600080fd5b813561223d816121df565b9392505050565b60006020828403121561225657600080fd5b5035919050565b60008083601f84011261226f57600080fd5b50813567ffffffffffffffff81111561228757600080fd5b6020830191508360208260051b85010111156122a257600080fd5b9250929050565b600080602083850312156122bc57600080fd5b823567ffffffffffffffff8111156122d357600080fd5b6122df8582860161225d565b90969095509350505050565b60008060006060848603121561230057600080fd5b833561230b816121df565b9250602084013561231b816121df565b929592945050506040919091013590565b6000806040838503121561233f57600080fd5b50508035926020909101359150565b60008060006040848603121561236357600080fd5b833567ffffffffffffffff81111561237a57600080fd5b6123868682870161225d565b909790965060209590950135949350505050565b6020808252825182820181905260009190848201906040850190845b818110156123d2578351835292840192918401916001016123b6565b50909695505050505050565b8015158114610f1657600080fd5b6000602082840312156123fe57600080fd5b813561223d816123de565b600080600080600080600060e0888a03121561242457600080fd5b873561242f816121df565b9650602088013561243f816121df565b95506040880135945060608801359350608088013560ff8116811461246357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561249357600080fd5b823561249e816121df565b915060208301356124ae816121df565b809150509250929050565b600181811c908216806124cd57607f821691505b6020821081036124ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561254157600080fd5b815161223d816121df565b634e487b7160e01b600052601160045260246000fd5b600082198211156125755761257561254c565b500190565b60006001820161258c5761258c61254c565b5060010190565b600181815b808511156125ce5781600019048211156125b4576125b461254c565b808516156125c157918102915b93841c9390800290612598565b509250929050565b6000826125e5575060016107ad565b816125f2575060006107ad565b816001811461260857600281146126125761262e565b60019150506107ad565b60ff8411156126235761262361254c565b50506001821b6107ad565b5060208310610133831016604e8410600b8410161715612651575081810a6107ad565b61265b8383612593565b806000190482111561266f5761266f61254c565b029392505050565b600061223d60ff8416836125d6565b60008160001904831182151516156126a0576126a061254c565b500290565b6000828210156126b7576126b761254c565b500390565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156126e457600080fd5b815161223d816123de565b60006020828403121561270157600080fd5b5051919050565b600061223d83836125d6565b60008261273157634e487b7160e01b600052601260045260246000fd5b500490565b6000806000806080858703121561274c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061278857607f831692505b602080841082036127a757634e487b7160e01b86526022600452602486fd5b8180156127bb57600181146127cc576127f9565b60ff198616895284890196506127f9565b60008a81526020902060005b868110156127f15781548b8201529085019083016127d8565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220125265282537218036d0d00bade8f34d825688ab94b2bc0ce1d2a97ee8c672bf64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e8
-----Decoded View---------------
Arg [0] : okpcAddress (address): 0x7183209867489E1047f3A7c23ea1Aed9c4E236E8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007183209867489e1047f3a7c23ea1aed9c4e236e8
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.