文件 1 的 1:MKZVX.sol
pragma solidity ^0.8.0;
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
pragma solidity ^0.8.0;
interface IERC721 is IERC165 {
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
function safeTransferFrom(address from, address to, uint256 tokenId) external;
function transferFrom(address from, address to, uint256 tokenId) external;
function approve(address to, uint256 tokenId) external;
function getApproved(uint256 tokenId) external view returns (address operator);
function setApprovalForAll(address operator, bool _approved) external;
function isApprovedForAll(address owner, address operator) external view returns (bool);
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}
pragma solidity ^0.8.0;
interface IERC721Receiver {
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
pragma solidity ^0.8.0;
interface IERC721Metadata is IERC721 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
pragma solidity ^0.8.0;
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
pragma solidity ^0.8.0;
library Strings {
bytes16 private constant alphabet = "0123456789abcdef";
function toString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = alphabet[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
pragma solidity ^0.8.0;
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
string private _name;
string private _symbol;
mapping (uint256 => address) private _owners;
mapping (address => uint256) private _balances;
mapping (uint256 => address) private _tokenApprovals;
mapping (address => mapping (address => bool)) private _operatorApprovals;
constructor (string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC721).interfaceId
|| interfaceId == type(IERC721Metadata).interfaceId
|| super.supportsInterface(interfaceId);
}
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0
? string(abi.encodePacked(baseURI, tokenId.toString()))
: '';
}
function _baseURI() internal view virtual returns (string memory) {
return "";
}
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not owner nor approved for all"
);
_approve(to, tokenId);
}
function getApproved(uint256 tokenId) public view virtual override returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
function setApprovalForAll(address operator, bool approved) public virtual override {
require(operator != _msgSender(), "ERC721: approve to caller");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
function transferFrom(address from, address to, uint256 tokenId) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_transfer(from, to, tokenId);
}
function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_safeTransfer(from, to, tokenId, _data);
}
function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
_mint(to, tokenId);
require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
}
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
}
function _transfer(address from, address to, uint256 tokenId) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
}
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
private returns (bool)
{
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
return retval == IERC721Receiver(to).onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}
pragma solidity ^0.8.0;
interface IERC721Enumerable is IERC721 {
function totalSupply() external view returns (uint256);
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
function tokenByIndex(uint256 index) external view returns (uint256);
}
pragma solidity ^0.8.0;
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
mapping(uint256 => uint256) private _ownedTokensIndex;
uint256[] private _allTokens;
mapping(uint256 => uint256) private _allTokensIndex;
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
return interfaceId == type(IERC721Enumerable).interfaceId
|| super.supportsInterface(interfaceId);
}
function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
return _ownedTokens[owner][index];
}
function totalSupply() public view virtual override returns (uint256) {
return _allTokens.length;
}
function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
return _allTokens[index];
}
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
super._beforeTokenTransfer(from, to, tokenId);
if (from == address(0)) {
_addTokenToAllTokensEnumeration(tokenId);
} else if (from != to) {
_removeTokenFromOwnerEnumeration(from, tokenId);
}
if (to == address(0)) {
_removeTokenFromAllTokensEnumeration(tokenId);
} else if (to != from) {
_addTokenToOwnerEnumeration(to, tokenId);
}
}
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
uint256 length = ERC721.balanceOf(to);
_ownedTokens[to][length] = tokenId;
_ownedTokensIndex[tokenId] = length;
}
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
uint256 tokenIndex = _ownedTokensIndex[tokenId];
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId;
_ownedTokensIndex[lastTokenId] = tokenIndex;
}
delete _ownedTokensIndex[tokenId];
delete _ownedTokens[from][lastTokenIndex];
}
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
uint256 lastTokenIndex = _allTokens.length - 1;
uint256 tokenIndex = _allTokensIndex[tokenId];
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId;
_allTokensIndex[lastTokenId] = tokenIndex;
delete _allTokensIndex[tokenId];
_allTokens.pop();
}
}
pragma solidity ^0.8.0;
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
pragma solidity ^0.8.0;
abstract contract MKZ {
function balanceOf(address owner, uint256 id) external virtual view returns (uint256 balance);
}
contract MKZVX is ERC721Enumerable, Ownable {
MKZ private mkz;
uint constant public MAX_MKZVX = 500;
address private openSeaContract = 0x495f947276749Ce646f68AC8c248420045cb7b5e;
bool public claimIsActive = false;
uint256 public maxMKZVX;
string private baseURI;
uint256[] private mkzTokenId =
[
106927580289739319741994837130987506128463962128337696457128951090832736256001 ,
106927580289739319741994837130987506128463962128337696457128951091932247883777 ,
106927580289739319741994837130987506128463962128337696457128951093031759511553 ,
106927580289739319741994837130987506128463962128337696457128951094131271139329 ,
106927580289739319741994837130987506128463962128337696457128951095230782767105 ,
106927580289739319741994837130987506128463962128337696457128951096330294394881 ,
106927580289739319741994837130987506128463962128337696457128951097429806022657 ,
106927580289739319741994837130987506128463962128337696457128951098529317650433 ,
106927580289739319741994837130987506128463962128337696457128951099628829278209 ,
106927580289739319741994837130987506128463962128337696457128951100728340905985 ,
106927580289739319741994837130987506128463962128337696457128951101827852533761 ,
106927580289739319741994837130987506128463962128337696457128951102927364161537 ,
106927580289739319741994837130987506128463962128337696457128951104026875789313 ,
106927580289739319741994837130987506128463962128337696457128951105126387417089 ,
106927580289739319741994837130987506128463962128337696457128951106225899044865 ,
106927580289739319741994837130987506128463962128337696457128951107325410672641 ,
106927580289739319741994837130987506128463962128337696457128951108424922300417 ,
106927580289739319741994837130987506128463962128337696457128951109524433928193 ,
106927580289739319741994837130987506128463962128337696457128951110623945555969 ,
106927580289739319741994837130987506128463962128337696457128951111723457183745 ,
106927580289739319741994837130987506128463962128337696457128951112822968811521 ,
106927580289739319741994837130987506128463962128337696457128951113922480439297 ,
106927580289739319741994837130987506128463962128337696457128951115021992067073 ,
106927580289739319741994837130987506128463962128337696457128951116121503694849 ,
106927580289739319741994837130987506128463962128337696457128951117221015322625 ,
106927580289739319741994837130987506128463962128337696457128951118320526950401 ,
106927580289739319741994837130987506128463962128337696457128951119420038578177 ,
106927580289739319741994837130987506128463962128337696457128951120519550205953 ,
106927580289739319741994837130987506128463962128337696457128951121619061833729 ,
106927580289739319741994837130987506128463962128337696457128951122718573461505 ,
106927580289739319741994837130987506128463962128337696457128951123818085089281 ,
106927580289739319741994837130987506128463962128337696457128951124917596717057 ,
106927580289739319741994837130987506128463962128337696457128951126017108344833 ,
106927580289739319741994837130987506128463962128337696457128951127116619972609 ,
106927580289739319741994837130987506128463962128337696457128951128216131600385 ,
106927580289739319741994837130987506128463962128337696457128951129315643228161 ,
106927580289739319741994837130987506128463962128337696457128951130415154855937 ,
106927580289739319741994837130987506128463962128337696457128951131514666483713 ,
106927580289739319741994837130987506128463962128337696457128951132614178111489 ,
106927580289739319741994837130987506128463962128337696457128951133713689739265 ,
106927580289739319741994837130987506128463962128337696457128951134813201367041 ,
106927580289739319741994837130987506128463962128337696457128951135912712994817 ,
106927580289739319741994837130987506128463962128337696457128951137012224622593 ,
106927580289739319741994837130987506128463962128337696457128951138111736250369 ,
106927580289739319741994837130987506128463962128337696457128951139211247878145 ,
106927580289739319741994837130987506128463962128337696457128951140310759505921 ,
106927580289739319741994837130987506128463962128337696457128951141410271133697 ,
106927580289739319741994837130987506128463962128337696457128951142509782761473 ,
106927580289739319741994837130987506128463962128337696457128951143609294389249 ,
106927580289739319741994837130987506128463962128337696457128951144708806017025 ,
106927580289739319741994837130987506128463962128337696457128951145808317644801 ,
106927580289739319741994837130987506128463962128337696457128951146907829272577 ,
106927580289739319741994837130987506128463962128337696457128951148007340900353 ,
106927580289739319741994837130987506128463962128337696457128951149106852528129 ,
106927580289739319741994837130987506128463962128337696457128951150206364155905 ,
106927580289739319741994837130987506128463962128337696457128951151305875783681 ,
106927580289739319741994837130987506128463962128337696457128951152405387411457 ,
106927580289739319741994837130987506128463962128337696457128951153504899039233 ,
106927580289739319741994837130987506128463962128337696457128951154604410667009 ,
106927580289739319741994837130987506128463962128337696457128951155703922294785 ,
106927580289739319741994837130987506128463962128337696457128951156803433922561 ,
106927580289739319741994837130987506128463962128337696457128951157902945550337 ,
106927580289739319741994837130987506128463962128337696457128951159002457178113 ,
106927580289739319741994837130987506128463962128337696457128951160101968805889 ,
106927580289739319741994837130987506128463962128337696457128951161201480433665 ,
106927580289739319741994837130987506128463962128337696457128951162300992061441 ,
106927580289739319741994837130987506128463962128337696457128951163400503689217 ,
106927580289739319741994837130987506128463962128337696457128951164500015316993 ,
106927580289739319741994837130987506128463962128337696457128951165599526944769 ,
106927580289739319741994837130987506128463962128337696457128951166699038572545 ,
106927580289739319741994837130987506128463962128337696457128951167798550200321 ,
106927580289739319741994837130987506128463962128337696457128951168898061828097 ,
106927580289739319741994837130987506128463962128337696457128951169997573455873 ,
106927580289739319741994837130987506128463962128337696457128951171097085083649 ,
106927580289739319741994837130987506128463962128337696457128951172196596711425 ,
106927580289739319741994837130987506128463962128337696457128951173296108339201 ,
106927580289739319741994837130987506128463962128337696457128951174395619966977 ,
106927580289739319741994837130987506128463962128337696457128951175495131594753 ,
106927580289739319741994837130987506128463962128337696457128951176594643222529 ,
106927580289739319741994837130987506128463962128337696457128951177694154850305 ,
106927580289739319741994837130987506128463962128337696457128951178793666478081 ,
106927580289739319741994837130987506128463962128337696457128951179893178105857 ,
106927580289739319741994837130987506128463962128337696457128951180992689733633 ,
106927580289739319741994837130987506128463962128337696457128951182092201361409 ,
106927580289739319741994837130987506128463962128337696457128951183191712989185 ,
106927580289739319741994837130987506128463962128337696457128951184291224616961 ,
106927580289739319741994837130987506128463962128337696457128951185390736244737 ,
106927580289739319741994837130987506128463962128337696457128951186490247872513 ,
106927580289739319741994837130987506128463962128337696457128951187589759500289 ,
106927580289739319741994837130987506128463962128337696457128951188689271128065 ,
106927580289739319741994837130987506128463962128337696457128951189788782755841 ,
106927580289739319741994837130987506128463962128337696457128951190888294383617 ,
106927580289739319741994837130987506128463962128337696457128951191987806011393 ,
106927580289739319741994837130987506128463962128337696457128951193087317639169 ,
106927580289739319741994837130987506128463962128337696457128951194186829266945 ,
106927580289739319741994837130987506128463962128337696457128951195286340894721 ,
106927580289739319741994837130987506128463962128337696457128951196385852522497 ,
106927580289739319741994837130987506128463962128337696457128951197485364150273 ,
106927580289739319741994837130987506128463962128337696457128951198584875778049 ,
106927580289739319741994837130987506128463962128337696457128951199684387405825 ,
106927580289739319741994837130987506128463962128337696457128951200783899033601 ,
106927580289739319741994837130987506128463962128337696457128951201883410661377 ,
106927580289739319741994837130987506128463962128337696457128951202982922289153 ,
106927580289739319741994837130987506128463962128337696457128951204082433916929 ,
106927580289739319741994837130987506128463962128337696457128951205181945544705 ,
106927580289739319741994837130987506128463962128337696457128951206281457172481 ,
106927580289739319741994837130987506128463962128337696457128951207380968800257 ,
106927580289739319741994837130987506128463962128337696457128951208480480428033 ,
106927580289739319741994837130987506128463962128337696457128951209579992055809 ,
106927580289739319741994837130987506128463962128337696457128951210679503683585 ,
106927580289739319741994837130987506128463962128337696457128951211779015311361 ,
106927580289739319741994837130987506128463962128337696457128951212878526939137 ,
106927580289739319741994837130987506128463962128337696457128951213978038566913 ,
106927580289739319741994837130987506128463962128337696457128951215077550194689 ,
106927580289739319741994837130987506128463962128337696457128951216177061822465 ,
106927580289739319741994837130987506128463962128337696457128951217276573450241 ,
106927580289739319741994837130987506128463962128337696457128951218376085078017 ,
106927580289739319741994837130987506128463962128337696457128951219475596705793 ,
106927580289739319741994837130987506128463962128337696457128951220575108333569 ,
106927580289739319741994837130987506128463962128337696457128951221674619961345 ,
106927580289739319741994837130987506128463962128337696457128951222774131589121 ,
106927580289739319741994837130987506128463962128337696457128951223873643216897 ,
106927580289739319741994837130987506128463962128337696457128951224973154844673 ,
106927580289739319741994837130987506128463962128337696457128951226072666472449 ,
106927580289739319741994837130987506128463962128337696457128951227172178100225 ,
106927580289739319741994837130987506128463962128337696457128951228271689728001 ,
106927580289739319741994837130987506128463962128337696457128951229371201355777 ,
106927580289739319741994837130987506128463962128337696457128951230470712983553 ,
106927580289739319741994837130987506128463962128337696457128951231570224611329 ,
106927580289739319741994837130987506128463962128337696457128951232669736239105 ,
106927580289739319741994837130987506128463962128337696457128951233769247866881 ,
106927580289739319741994837130987506128463962128337696457128951234868759494657 ,
106927580289739319741994837130987506128463962128337696457128951235968271122433 ,
106927580289739319741994837130987506128463962128337696457128951237067782750209 ,
106927580289739319741994837130987506128463962128337696457128951238167294377985 ,
106927580289739319741994837130987506128463962128337696457128951239266806005761 ,
106927580289739319741994837130987506128463962128337696457128951240366317633537 ,
106927580289739319741994837130987506128463962128337696457128951241465829261313 ,
106927580289739319741994837130987506128463962128337696457128951242565340889089 ,
106927580289739319741994837130987506128463962128337696457128951243664852516865 ,
106927580289739319741994837130987506128463962128337696457128951244764364144641 ,
106927580289739319741994837130987506128463962128337696457128951245863875772417 ,
106927580289739319741994837130987506128463962128337696457128951246963387400193 ,
106927580289739319741994837130987506128463962128337696457128951248062899027969 ,
106927580289739319741994837130987506128463962128337696457128951249162410655745 ,
106927580289739319741994837130987506128463962128337696457128951250261922283521 ,
106927580289739319741994837130987506128463962128337696457128951251361433911297 ,
106927580289739319741994837130987506128463962128337696457128951252460945539073 ,
106927580289739319741994837130987506128463962128337696457128951253560457166849 ,
106927580289739319741994837130987506128463962128337696457128951254659968794625 ,
106927580289739319741994837130987506128463962128337696457128951255759480422401 ,
106927580289739319741994837130987506128463962128337696457128951256858992050177 ,
106927580289739319741994837130987506128463962128337696457128951257958503677953 ,
106927580289739319741994837130987506128463962128337696457128951259058015305729 ,
106927580289739319741994837130987506128463962128337696457128951260157526933505 ,
106927580289739319741994837130987506128463962128337696457128951261257038561281 ,
106927580289739319741994837130987506128463962128337696457128951262356550189057 ,
106927580289739319741994837130987506128463962128337696457128951263456061816833 ,
106927580289739319741994837130987506128463962128337696457128951264555573444609 ,
106927580289739319741994837130987506128463962128337696457128951265655085072385 ,
106927580289739319741994837130987506128463962128337696457128951266754596700161 ,
106927580289739319741994837130987506128463962128337696457128951267854108327937 ,
106927580289739319741994837130987506128463962128337696457128951268953619955713 ,
106927580289739319741994837130987506128463962128337696457128951270053131583489 ,
106927580289739319741994837130987506128463962128337696457128951271152643211265 ,
106927580289739319741994837130987506128463962128337696457128951272252154839041 ,
106927580289739319741994837130987506128463962128337696457128951273351666466817 ,
106927580289739319741994837130987506128463962128337696457128951274451178094593 ,
106927580289739319741994837130987506128463962128337696457128951275550689722369 ,
106927580289739319741994837130987506128463962128337696457128951276650201350145 ,
106927580289739319741994837130987506128463962128337696457128951277749712977921 ,
106927580289739319741994837130987506128463962128337696457128951278849224605697 ,
106927580289739319741994837130987506128463962128337696457128951279948736233473 ,
106927580289739319741994837130987506128463962128337696457128951281048247861249 ,
106927580289739319741994837130987506128463962128337696457128951282147759489025 ,
106927580289739319741994837130987506128463962128337696457128951283247271116801 ,
106927580289739319741994837130987506128463962128337696457128951284346782744577 ,
106927580289739319741994837130987506128463962128337696457128951285446294372353 ,
106927580289739319741994837130987506128463962128337696457128951286545806000129 ,
106927580289739319741994837130987506128463962128337696457128951287645317627905 ,
106927580289739319741994837130987506128463962128337696457128951288744829255681 ,
106927580289739319741994837130987506128463962128337696457128951289844340883457 ,
106927580289739319741994837130987506128463962128337696457128951290943852511233 ,
106927580289739319741994837130987506128463962128337696457128951292043364139009 ,
106927580289739319741994837130987506128463962128337696457128951293142875766785 ,
106927580289739319741994837130987506128463962128337696457128951294242387394561 ,
106927580289739319741994837130987506128463962128337696457128951295341899022337 ,
106927580289739319741994837130987506128463962128337696457128951296441410650113 ,
106927580289739319741994837130987506128463962128337696457128951297540922277889 ,
106927580289739319741994837130987506128463962128337696457128951298640433905665 ,
106927580289739319741994837130987506128463962128337696457128951299739945533441 ,
106927580289739319741994837130987506128463962128337696457128951300839457161217 ,
106927580289739319741994837130987506128463962128337696457128951301938968788993 ,
106927580289739319741994837130987506128463962128337696457128951303038480416769 ,
106927580289739319741994837130987506128463962128337696457128951304137992044545 ,
106927580289739319741994837130987506128463962128337696457128951305237503672321 ,
106927580289739319741994837130987506128463962128337696457128951306337015300097 ,
106927580289739319741994837130987506128463962128337696457128951307436526927873 ,
106927580289739319741994837130987506128463962128337696457128951308536038555649 ,
106927580289739319741994837130987506128463962128337696457128951309635550183425 ,
106927580289739319741994837130987506128463962128337696457128951310735061811201 ,
106927580289739319741994837130987506128463962128337696457128951311834573438977 ,
106927580289739319741994837130987506128463962128337696457128951312934085066753 ,
106927580289739319741994837130987506128463962128337696457128951314033596694529 ,
106927580289739319741994837130987506128463962128337696457128951315133108322305 ,
106927580289739319741994837130987506128463962128337696457128951316232619950081 ,
106927580289739319741994837130987506128463962128337696457128951317332131577857 ,
106927580289739319741994837130987506128463962128337696457128951318431643205633 ,
106927580289739319741994837130987506128463962128337696457128951319531154833409 ,
106927580289739319741994837130987506128463962128337696457128951320630666461185 ,
106927580289739319741994837130987506128463962128337696457128951321730178088961 ,
106927580289739319741994837130987506128463962128337696457128951322829689716737 ,
106927580289739319741994837130987506128463962128337696457128951323929201344513 ,
106927580289739319741994837130987506128463962128337696457128951325028712972289 ,
106927580289739319741994837130987506128463962128337696457128951326128224600065 ,
106927580289739319741994837130987506128463962128337696457128951327227736227841 ,
106927580289739319741994837130987506128463962128337696457128951328327247855617 ,
106927580289739319741994837130987506128463962128337696457128951329426759483393 ,
106927580289739319741994837130987506128463962128337696457128951330526271111169 ,
106927580289739319741994837130987506128463962128337696457128951331625782738945 ,
106927580289739319741994837130987506128463962128337696457128951332725294366721 ,
106927580289739319741994837130987506128463962128337696457128951333824805994497 ,
106927580289739319741994837130987506128463962128337696457128951334924317622273 ,
106927580289739319741994837130987506128463962128337696457128951336023829250049 ,
106927580289739319741994837130987506128463962128337696457128951337123340877825 ,
106927580289739319741994837130987506128463962128337696457128951338222852505601 ,
106927580289739319741994837130987506128463962128337696457128951339322364133377 ,
106927580289739319741994837130987506128463962128337696457128951340421875761153 ,
106927580289739319741994837130987506128463962128337696457128951341521387388929 ,
106927580289739319741994837130987506128463962128337696457128951342620899016705 ,
106927580289739319741994837130987506128463962128337696457128951343720410644481 ,
106927580289739319741994837130987506128463962128337696457128951344819922272257 ,
106927580289739319741994837130987506128463962128337696457128951345919433900033 ,
106927580289739319741994837130987506128463962128337696457128951347018945527809 ,
106927580289739319741994837130987506128463962128337696457128951348118457155585 ,
106927580289739319741994837130987506128463962128337696457128951349217968783361 ,
106927580289739319741994837130987506128463962128337696457128951350317480411137 ,
106927580289739319741994837130987506128463962128337696457128951351416992038913 ,
106927580289739319741994837130987506128463962128337696457128951352516503666689 ,
106927580289739319741994837130987506128463962128337696457128951353616015294465 ,
106927580289739319741994837130987506128463962128337696457128951354715526922241 ,
106927580289739319741994837130987506128463962128337696457128951355815038550017 ,
106927580289739319741994837130987506128463962128337696457128951356914550177793 ,
106927580289739319741994837130987506128463962128337696457128951358014061805569 ,
106927580289739319741994837130987506128463962128337696457128951359113573433345 ,
106927580289739319741994837130987506128463962128337696457128951360213085061121 ,
106927580289739319741994837130987506128463962128337696457128951361312596688897 ,
106927580289739319741994837130987506128463962128337696457128951362412108316673 ,
106927580289739319741994837130987506128463962128337696457128951363511619944449 ,
106927580289739319741994837130987506128463962128337696457128951364611131572225 ,
106927580289739319741994837130987506128463962128337696457128951365710643200001 ,
106927580289739319741994837130987506128463962128337696457128951366810154827777 ,
106927580289739319741994837130987506128463962128337696457128951367909666455553 ,
106927580289739319741994837130987506128463962128337696457128951369009178083329 ,
106927580289739319741994837130987506128463962128337696457128951370108689711105 ,
106927580289739319741994837130987506128463962128337696457128951371208201338881 ,
106927580289739319741994837130987506128463962128337696457128951372307712966657 ,
106927580289739319741994837130987506128463962128337696457128951373407224594433 ,
106927580289739319741994837130987506128463962128337696457128951374506736222209 ,
106927580289739319741994837130987506128463962128337696457128951375606247849985 ,
106927580289739319741994837130987506128463962128337696457128951376705759477761 ,
106927580289739319741994837130987506128463962128337696457128951377805271105537 ,
106927580289739319741994837130987506128463962128337696457128951378904782733313 ,
106927580289739319741994837130987506128463962128337696457128951380004294361089 ,
106927580289739319741994837130987506128463962128337696457128951381103805988865 ,
106927580289739319741994837130987506128463962128337696457128951382203317616641 ,
106927580289739319741994837130987506128463962128337696457128951383302829244417 ,
106927580289739319741994837130987506128463962128337696457128951384402340872193 ,
106927580289739319741994837130987506128463962128337696457128951385501852499969 ,
106927580289739319741994837130987506128463962128337696457128951386601364127745 ,
106927580289739319741994837130987506128463962128337696457128951387700875755521 ,
106927580289739319741994837130987506128463962128337696457128951388800387383297 ,
106927580289739319741994837130987506128463962128337696457128951389899899011073 ,
106927580289739319741994837130987506128463962128337696457128951390999410638849 ,
106927580289739319741994837130987506128463962128337696457128951392098922266625 ,
106927580289739319741994837130987506128463962128337696457128951393198433894401 ,
106927580289739319741994837130987506128463962128337696457128951394297945522177 ,
106927580289739319741994837130987506128463962128337696457128951395397457149953 ,
106927580289739319741994837130987506128463962128337696457128951396496968777729 ,
106927580289739319741994837130987506128463962128337696457128951397596480405505 ,
106927580289739319741994837130987506128463962128337696457128951398695992033281 ,
106927580289739319741994837130987506128463962128337696457128951399795503661057 ,
106927580289739319741994837130987506128463962128337696457128951400895015288833 ,
106927580289739319741994837130987506128463962128337696457128951401994526916609 ,
106927580289739319741994837130987506128463962128337696457128951403094038544385 ,
106927580289739319741994837130987506128463962128337696457128951404193550172161 ,
106927580289739319741994837130987506128463962128337696457128951405293061799937 ,
106927580289739319741994837130987506128463962128337696457128951406392573427713 ,
106927580289739319741994837130987506128463962128337696457128951407492085055489 ,
106927580289739319741994837130987506128463962128337696457128951408591596683265 ,
106927580289739319741994837130987506128463962128337696457128951409691108311041 ,
106927580289739319741994837130987506128463962128337696457128951410790619938817 ,
106927580289739319741994837130987506128463962128337696457128951411890131566593 ,
106927580289739319741994837130987506128463962128337696457128951412989643194369 ,
106927580289739319741994837130987506128463962128337696457128951414089154822145 ,
106927580289739319741994837130987506128463962128337696457128951415188666449921 ,
106927580289739319741994837130987506128463962128337696457128951416288178077697 ,
106927580289739319741994837130987506128463962128337696457128951417387689705473 ,
106927580289739319741994837130987506128463962128337696457128951418487201333249 ,
106927580289739319741994837130987506128463962128337696457128951419586712961025 ,
106927580289739319741994837130987506128463962128337696457128951420686224588801 ,
106927580289739319741994837130987506128463962128337696457128951421785736216577 ,
106927580289739319741994837130987506128463962128337696457128951422885247844353 ,
106927580289739319741994837130987506128463962128337696457128951423984759472129 ,
106927580289739319741994837130987506128463962128337696457128951425084271099905 ,
106927580289739319741994837130987506128463962128337696457128951426183782727681 ,
106927580289739319741994837130987506128463962128337696457128951427283294355457 ,
106927580289739319741994837130987506128463962128337696457128951428382805983233 ,
106927580289739319741994837130987506128463962128337696457128951429482317611009 ,
106927580289739319741994837130987506128463962128337696457128951430581829238785 ,
106927580289739319741994837130987506128463962128337696457128951431681340866561 ,
106927580289739319741994837130987506128463962128337696457128951432780852494337 ,
106927580289739319741994837130987506128463962128337696457128951433880364122113 ,
106927580289739319741994837130987506128463962128337696457128951434979875749889 ,
106927580289739319741994837130987506128463962128337696457128951436079387377665 ,
106927580289739319741994837130987506128463962128337696457128951437178899005441 ,
106927580289739319741994837130987506128463962128337696457128951438278410633217 ,
106927580289739319741994837130987506128463962128337696457128951439377922260993 ,
106927580289739319741994837130987506128463962128337696457128951440477433888769 ,
106927580289739319741994837130987506128463962128337696457128951441576945516545 ,
106927580289739319741994837130987506128463962128337696457128951442676457144321 ,
106927580289739319741994837130987506128463962128337696457128951443775968772097 ,
106927580289739319741994837130987506128463962128337696457128951444875480399873 ,
106927580289739319741994837130987506128463962128337696457128951445974992027649 ,
106927580289739319741994837130987506128463962128337696457128951447074503655425 ,
106927580289739319741994837130987506128463962128337696457128951448174015283201 ,
106927580289739319741994837130987506128463962128337696457128951449273526910977 ,
106927580289739319741994837130987506128463962128337696457128951450373038538753 ,
106927580289739319741994837130987506128463962128337696457128951451472550166529 ,
106927580289739319741994837130987506128463962128337696457128951452572061794305 ,
106927580289739319741994837130987506128463962128337696457128951453671573422081 ,
106927580289739319741994837130987506128463962128337696457128951454771085049857 ,
106927580289739319741994837130987506128463962128337696457128951455870596677633 ,
106927580289739319741994837130987506128463962128337696457128951456970108305409 ,
106927580289739319741994837130987506128463962128337696457128951458069619933185 ,
106927580289739319741994837130987506128463962128337696457128951459169131560961 ,
106927580289739319741994837130987506128463962128337696457128951460268643188737 ,
106927580289739319741994837130987506128463962128337696457128951461368154816513 ,
106927580289739319741994837130987506128463962128337696457128951462467666444289 ,
106927580289739319741994837130987506128463962128337696457128951463567178072065 ,
106927580289739319741994837130987506128463962128337696457128951464666689699841 ,
106927580289739319741994837130987506128463962128337696457128951465766201327617 ,
106927580289739319741994837130987506128463962128337696457128951466865712955393 ,
106927580289739319741994837130987506128463962128337696457128951467965224583169 ,
106927580289739319741994837130987506128463962128337696457128951469064736210945 ,
106927580289739319741994837130987506128463962128337696457128951470164247838721 ,
106927580289739319741994837130987506128463962128337696457128951471263759466497 ,
106927580289739319741994837130987506128463962128337696457128951472363271094273 ,
106927580289739319741994837130987506128463962128337696457128951473462782722049 ,
106927580289739319741994837130987506128463962128337696457128951474562294349825 ,
106927580289739319741994837130987506128463962128337696457128951475661805977601 ,
106927580289739319741994837130987506128463962128337696457128951476761317605377 ,
106927580289739319741994837130987506128463962128337696457128951477860829233153 ,
106927580289739319741994837130987506128463962128337696457128951478960340860929 ,
106927580289739319741994837130987506128463962128337696457128951480059852488705 ,
106927580289739319741994837130987506128463962128337696457128951481159364116481 ,
106927580289739319741994837130987506128463962128337696457128951482258875744257 ,
106927580289739319741994837130987506128463962128337696457128951483358387372033 ,
106927580289739319741994837130987506128463962128337696457128951484457898999809 ,
106927580289739319741994837130987506128463962128337696457128951485557410627585 ,
106927580289739319741994837130987506128463962128337696457128951486656922255361 ,
106927580289739319741994837130987506128463962128337696457128951487756433883137 ,
106927580289739319741994837130987506128463962128337696457128951488855945510913 ,
106927580289739319741994837130987506128463962128337696457128951489955457138689 ,
106927580289739319741994837130987506128463962128337696457128951491054968766465 ,
106927580289739319741994837130987506128463962128337696457128951492154480394241 ,
106927580289739319741994837130987506128463962128337696457128951493253992022017 ,
106927580289739319741994837130987506128463962128337696457128951494353503649793 ,
106927580289739319741994837130987506128463962128337696457128951495453015277569 ,
106927580289739319741994837130987506128463962128337696457128951496552526905345 ,
106927580289739319741994837130987506128463962128337696457128951497652038533121 ,
106927580289739319741994837130987506128463962128337696457128951498751550160897 ,
106927580289739319741994837130987506128463962128337696457128951499851061788673 ,
106927580289739319741994837130987506128463962128337696457128951500950573416449 ,
106927580289739319741994837130987506128463962128337696457128951502050085044225 ,
106927580289739319741994837130987506128463962128337696457128951503149596672001 ,
106927580289739319741994837130987506128463962128337696457128951504249108299777 ,
106927580289739319741994837130987506128463962128337696457128951505348619927553 ,
106927580289739319741994837130987506128463962128337696457128951506448131555329 ,
106927580289739319741994837130987506128463962128337696457128951507547643183105 ,
106927580289739319741994837130987506128463962128337696457128951508647154810881 ,
106927580289739319741994837130987506128463962128337696457128951509746666438657 ,
106927580289739319741994837130987506128463962128337696457128951510846178066433 ,
106927580289739319741994837130987506128463962128337696457128951511945689694209 ,
106927580289739319741994837130987506128463962128337696457128951513045201321985 ,
106927580289739319741994837130987506128463962128337696457128951514144712949761 ,
106927580289739319741994837130987506128463962128337696457128951515244224577537 ,
106927580289739319741994837130987506128463962128337696457128951516343736205313 ,
106927580289739319741994837130987506128463962128337696457128951517443247833089 ,
106927580289739319741994837130987506128463962128337696457128951518542759460865 ,
106927580289739319741994837130987506128463962128337696457128951519642271088641 ,
106927580289739319741994837130987506128463962128337696457128951520741782716417 ,
106927580289739319741994837130987506128463962128337696457128951521841294344193 ,
106927580289739319741994837130987506128463962128337696457128951522940805971969 ,
106927580289739319741994837130987506128463962128337696457128951524040317599745 ,
106927580289739319741994837130987506128463962128337696457128951525139829227521 ,
106927580289739319741994837130987506128463962128337696457128951526239340855297 ,
106927580289739319741994837130987506128463962128337696457128951527338852483073 ,
106927580289739319741994837130987506128463962128337696457128951528438364110849 ,
106927580289739319741994837130987506128463962128337696457128951529537875738625 ,
106927580289739319741994837130987506128463962128337696457128951530637387366401 ,
106927580289739319741994837130987506128463962128337696457128951531736898994177 ,
106927580289739319741994837130987506128463962128337696457128951532836410621953 ,
106927580289739319741994837130987506128463962128337696457128951533935922249729 ,
106927580289739319741994837130987506128463962128337696457128951535035433877505 ,
106927580289739319741994837130987506128463962128337696457128951536134945505281 ,
106927580289739319741994837130987506128463962128337696457128951537234457133057 ,
106927580289739319741994837130987506128463962128337696457128951538333968760833 ,
106927580289739319741994837130987506128463962128337696457128951539433480388609 ,
106927580289739319741994837130987506128463962128337696457128951540532992016385 ,
106927580289739319741994837130987506128463962128337696457128951541632503644161 ,
106927580289739319741994837130987506128463962128337696457128951542732015271937 ,
106927580289739319741994837130987506128463962128337696457128951543831526899713 ,
106927580289739319741994837130987506128463962128337696457128951544931038527489 ,
106927580289739319741994837130987506128463962128337696457128951546030550155265 ,
106927580289739319741994837130987506128463962128337696457128951547130061783041 ,
106927580289739319741994837130987506128463962128337696457128951548229573410817 ,
106927580289739319741994837130987506128463962128337696457128951549329085038593 ,
106927580289739319741994837130987506128463962128337696457128951550428596666369 ,
106927580289739319741994837130987506128463962128337696457128951551528108294145 ,
106927580289739319741994837130987506128463962128337696457128951552627619921921 ,
106927580289739319741994837130987506128463962128337696457128951553727131549697 ,
106927580289739319741994837130987506128463962128337696457128951554826643177473 ,
106927580289739319741994837130987506128463962128337696457128951555926154805249 ,
106927580289739319741994837130987506128463962128337696457128951557025666433025 ,
106927580289739319741994837130987506128463962128337696457128951558125178060801 ,
106927580289739319741994837130987506128463962128337696457128951559224689688577 ,
106927580289739319741994837130987506128463962128337696457128951560324201316353 ,
106927580289739319741994837130987506128463962128337696457128951561423712944129 ,
106927580289739319741994837130987506128463962128337696457128951562523224571905 ,
106927580289739319741994837130987506128463962128337696457128951563622736199681 ,
106927580289739319741994837130987506128463962128337696457128951564722247827457 ,
106927580289739319741994837130987506128463962128337696457128951565821759455233 ,
106927580289739319741994837130987506128463962128337696457128951566921271083009 ,
106927580289739319741994837130987506128463962128337696457128951568020782710785 ,
106927580289739319741994837130987506128463962128337696457128951569120294338561 ,
106927580289739319741994837130987506128463962128337696457128951570219805966337 ,
106927580289739319741994837130987506128463962128337696457128951571319317594113 ,
106927580289739319741994837130987506128463962128337696457128951572418829221889 ,
106927580289739319741994837130987506128463962128337696457128951573518340849665 ,
106927580289739319741994837130987506128463962128337696457128951574617852477441 ,
106927580289739319741994837130987506128463962128337696457128951575717364105217 ,
106927580289739319741994837130987506128463962128337696457128951576816875732993 ,
106927580289739319741994837130987506128463962128337696457128951577916387360769 ,
106927580289739319741994837130987506128463962128337696457128951579015898988545 ,
106927580289739319741994837130987506128463962128337696457128951580115410616321 ,
106927580289739319741994837130987506128463962128337696457128951581214922244097 ,
106927580289739319741994837130987506128463962128337696457128951582314433871873 ,
106927580289739319741994837130987506128463962128337696457128951583413945499649 ,
106927580289739319741994837130987506128463962128337696457128951584513457127425 ,
106927580289739319741994837130987506128463962128337696457128951587811992010753 ,
106927580289739319741994837130987506128463962128337696457128951588911503638529 ,
106927580289739319741994837130987506128463962128337696457128951590011015266305 ,
106927580289739319741994837130987506128463962128337696457128951591110526894081 ,
106927580289739319741994837130987506128463962128337696457128951592210038521857 ,
106927580289739319741994837130987506128463962128337696457128951593309550149633 ,
106927580289739319741994837130987506128463962128337696457128951594409061777409 ,
106927580289739319741994837130987506128463962128337696457128951595508573405185 ,
106927580289739319741994837130987506128463962128337696457128951596608085032961 ,
106927580289739319741994837130987506128463962128337696457128951597707596660737 ,
106927580289739319741994837130987506128463962128337696457128951598807108288513 ,
106927580289739319741994837130987506128463962128337696457128951599906619916289 ,
106927580289739319741994837130987506128463962128337696457128951601006131544065 ,
106927580289739319741994837130987506128463962128337696457128951602105643171841 ,
106927580289739319741994837130987506128463962128337696457128951603205154799617 ,
106927580289739319741994837130987506128463962128337696457128951604304666427393 ,
106927580289739319741994837130987506128463962128337696457128951605404178055169 ,
106927580289739319741994837130987506128463962128337696457128951606503689682945 ,
106927580289739319741994837130987506128463962128337696457128951607603201310721 ,
106927580289739319741994837130987506128463962128337696457128951608702712938497 ,
106927580289739319741994837130987506128463962128337696457128951609802224566273 ,
106927580289739319741994837130987506128463962128337696457128951610901736194049 ,
106927580289739319741994837130987506128463962128337696457128951612001247821825 ,
106927580289739319741994837130987506128463962128337696457128951613100759449601 ,
106927580289739319741994837130987506128463962128337696457128951614200271077377 ,
106927580289739319741994837130987506128463962128337696457128951615299782705153 ,
106927580289739319741994837130987506128463962128337696457128951616399294332929 ,
106927580289739319741994837130987506128463962128337696457128951617498805960705 ,
106927580289739319741994837130987506128463962128337696457128951618598317588481 ,
106927580289739319741994837130987506128463962128337696457128951619697829216257 ,
106927580289739319741994837130987506128463962128337696457128951620797340844033 ,
106927580289739319741994837130987506128463962128337696457128951621896852471809 ,
106927580289739319741994837130987506128463962128337696457128951622996364099585 ,
106927580289739319741994837130987506128463962128337696457128951624095875727361 ,
106927580289739319741994837130987506128463962128337696457128951625195387355137 ,
106927580289739319741994837130987506128463962128337696457128951626294898982913 ,
106927580289739319741994837130987506128463962128337696457128951627394410610689 ,
106927580289739319741994837130987506128463962128337696457128951628493922238465 ,
106927580289739319741994837130987506128463962128337696457128951629593433866241 ,
106927580289739319741994837130987506128463962128337696457128951630692945494017 ,
106927580289739319741994837130987506128463962128337696457128951631792457121793 ,
106927580289739319741994837130987506128463962128337696457128951632891968749569 ,
106927580289739319741994837130987506128463962128337696457128951633991480377345 ,
106927580289739319741994837130987506128463962128337696457128951635090992005121 ,
106927580289739319741994837130987506128463962128337696457128951636190503632897 ,
106927580289739319741994837130987506128463962128337696457128951637290015260673 ,
106927580289739319741994837130987506128463962128337696457128951638389526888449 ,
106927580289739319741994837130987506128463962128337696457128951639489038516225 ,
106927580289739319741994837130987506128463962128337696457128951640588550144001 ,
106927580289739319741994837130987506128463962128337696457128951641688061771777
];
constructor() ERC721("MutantKongzVX", "MKZVX") {
maxMKZVX = MAX_MKZVX;
mkz = MKZ(openSeaContract);
}
function _baseURI() internal view override returns (string memory) {
return baseURI;
}
function setBaseURI(string memory uri) public onlyOwner {
baseURI = uri;
}
function flipClaimPhaseState() public onlyOwner {
claimIsActive = !claimIsActive;
}
function canClaim(uint256 tokenId) view public returns (bool) {
return !_exists(tokenId);
}
function _ownerOf(uint256 tokenId) internal view returns (bool) {
return mkz.balanceOf(msg.sender, tokenId) != 0;
}
function claimMKVX(uint256 mkzvxTokenId) public {
require(claimIsActive, "The claim phase must be active to mint a MutantKongz VX");
require(totalSupply() < maxMKZVX, "The Claim action would exceed the max supply of MutantKongz VX");
require(mkzvxTokenId < maxMKZVX + 1, "Requested tokenId exceeds upper bound");
uint256 mkTokenId = mkzTokenId[mkzvxTokenId-1];
require(_ownerOf(mkTokenId) == true, "You are not the owner of the requested tokenId");
_safeMint(msg.sender, mkzvxTokenId);
}
}