ETH Price: $2,929.36 (-7.22%)
Gas: 8 Gwei

Token

Floyd's World (FW)
 

Overview

Max Total Supply

9,946 FW

Holders

1,688

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
2 FW
0xc23bcc018f438854b98a3d4aef677a989855e707
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

THE OFFICIAL FINAL LINK OF THE COLLECTION The Floyd Mayweather World is a collection of 11,111 Floyd’s NFTs to celebrate the number One, undisputed champion - the one and only Floyd Mayweather. But this is more than just a token, it is the entrance to Floyd's World, the most...

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FloydsWorld

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-13
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;


interface IERC165 {
    
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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

interface IERC721Receiver {
    
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

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

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "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] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

abstract contract ERC165 is IERC165 {
    
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

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

abstract contract ReentrancyGuard {
    
    
    
    
    

    
    
    
    
    
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    
    modifier nonReentrant() {
        
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        
        _status = _ENTERED;

        _;

        
        
        _status = _NOT_ENTERED;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    
    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract FloydsWorld is Ownable, ERC721 {

  string public baseURI = "https://floydnft.com/token/";
  uint public totalSupply;

  uint private lastPrivateSaleTokenIndex = 110;
  uint private lastPublicSaleTokenIndex = 1500;

  address public immutable treasury; 
  address public immutable privateSaleMinter; 

  uint public immutable salePrice; 
  uint public immutable saleStartDate; 

  ERC721 public immutable presaleTicket; 
  ERC721 public immutable auctionTicket; 

  uint private constant LAST_TOKEN_ID = 11110;

  modifier whenSaleIsOpen {
    require(block.timestamp >= saleStartDate, "Sale is not yet open");
    require(lastPublicSaleTokenIndex < LAST_TOKEN_ID, "Sale has already ended");
    _;
  }

  modifier whenSaleIsClosed {
    require(lastPublicSaleTokenIndex >= LAST_TOKEN_ID, "Sale has not yet ended");
    _;
  }

  constructor(
    uint _salePrice,
    uint _saleStartDate,
    address _presaleTicket,
    address _auctionTicket,
    address _treasury,
    address _privateSaleMinter
  ) ERC721("Floyd's World", "FW") {
    salePrice = _salePrice;
    saleStartDate = _saleStartDate;
    presaleTicket = ERC721(_presaleTicket);
    auctionTicket = ERC721(_auctionTicket);
    treasury = _treasury;
    privateSaleMinter = _privateSaleMinter;
  }

  function _baseURI() internal view override returns (string memory) {
    return baseURI;
  }

  function _hashURI(string memory uri) internal pure returns (bytes32 hash) {
    string memory salt = "2abf47b893ebe6f710318290d798085f";
    return keccak256(abi.encode(salt, uri));
  }

  function hashString(string memory uri) external pure returns (bytes32 hash) {
    return _hashURI(uri);
  }

  function revealNFTs(string memory newURI) external whenSaleIsClosed {
    bytes32 hashedURI = 0xd44ba0a18dac8a855c9106d25a28bebdae4de3f2212e756d57db3b09d546d593;
    require(_hashURI(newURI) == hashedURI, "Bad URI");
    baseURI = newURI;
  }

  function setBaseURI(string memory newURI) external onlyOwner {
    baseURI = newURI;
  }

  function _withdraw(uint amount) internal {
    (bool ok,) = payable(treasury).call{value : amount}("");
    require(ok, "Withdraw failed");
  }

  function withdrawAll() external onlyOwner {
    _withdraw(address(this).balance);
  }

  function _mintAndIncrementSupply(address to, uint tokenId) internal {
    _safeMint(to, tokenId);
    totalSupply++;
  }

  function buyNFT(uint quantity) external payable whenSaleIsOpen {

    uint lastTokenId = lastPublicSaleTokenIndex;
    uint remainder;

    require(msg.value == salePrice * quantity, "Invalid amount");

    for (uint i = 0; i < quantity; i++) {

      lastTokenId++;

      if (lastTokenId == 2000) {
        lastTokenId = 6851;
      }

      _mintAndIncrementSupply(msg.sender, lastTokenId);

      if (lastTokenId == LAST_TOKEN_ID) {
        remainder = quantity - i - 1;
        break;
      }
    }

    lastPublicSaleTokenIndex = lastTokenId;

    if (remainder > 0) {
      uint refund = remainder * salePrice;
      (bool ok,) = payable(msg.sender).call{value : refund}("");
      require(ok, "Refund failed");
    }

    if (lastTokenId == LAST_TOKEN_ID) {
      
      _withdraw(address(this).balance);
      return;
    }

    if (address(this).balance >= 15 ether) {
      
      _withdraw(15 ether);
    }
  }

  function privateSaleMint(uint quantity) external whenSaleIsClosed {

    uint lastTokenId = lastPrivateSaleTokenIndex;
    require(lastTokenId < 1500, "Already minted");

    for (uint i = 0; i < quantity; i++) {

      lastTokenId++;
      _mintAndIncrementSupply(privateSaleMinter, lastTokenId);

      if (lastTokenId == 1500) {
        break;
      }
    }

    lastPrivateSaleTokenIndex = lastTokenId;
  }

  
  
  
  
  
  

  function redeemNFT(uint[] calldata ids, uint[] calldata types) external whenSaleIsClosed {

    require(ids.length == types.length, "Array lengths don't match");

    address burnAddress = 0x000000000000000000000000000000000000dEaD;

    for (uint i = 0; i < ids.length; i++) {

      uint id = ids[i];
      uint ticketType = types[i];

      
      if (ticketType == 1) {

        
        require(
          (id >= 0 && id <= 110) || (id >= 2000 && id <= 5971),
          "Invalid presale ticket"
        );

        
        presaleTicket.safeTransferFrom(msg.sender, burnAddress, id);
        _mintAndIncrementSupply(msg.sender, id);
        continue;
      }

      
      if (ticketType == 2) {

        
        require(id >= 5972 && id <= 6850, "Invalid auction ticket");

        
        auctionTicket.safeTransferFrom(msg.sender, burnAddress, id);
        _mintAndIncrementSupply(msg.sender, id);
        continue;
      }
    }
  }

  function getTicketsOf(address buyer) external view returns (uint[] memory ids, uint[] memory types) {

    uint[5000] memory tempIds;
    uint[5000] memory tempTypes;
    uint idx;

    for (uint i = 0; i <= 100; i++) {
      if (presaleTicket.ownerOf(i) == buyer) {
        tempIds[idx] = i;
        tempTypes[idx] = 1;
        idx++;
      }
    }

    for (uint i = 2000; i <= 5971; i++) {
      if (presaleTicket.ownerOf(i) == buyer) {
        tempIds[idx] = i;
        tempTypes[idx] = 1;
        idx++;
      }
    }

    for (uint i = 5972; i <= 6850; i++) {
      if (auctionTicket.ownerOf(i) == buyer) {
        tempIds[idx] = i;
        tempTypes[idx] = 2;
        idx++;
      }
    }

    ids = new uint[](idx);
    types = new uint[](idx);

    for (uint i = 0; i < idx; i++) {
      ids[i] = tempIds[i];
      types[i] = tempTypes[i];
    }
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_salePrice","type":"uint256"},{"internalType":"uint256","name":"_saleStartDate","type":"uint256"},{"internalType":"address","name":"_presaleTicket","type":"address"},{"internalType":"address","name":"_auctionTicket","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_privateSaleMinter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auctionTicket","outputs":[{"internalType":"contract ERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"buyNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"getTicketsOf","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"types","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"hashString","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleTicket","outputs":[{"internalType":"contract ERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"privateSaleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"privateSaleMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"types","type":"uint256[]"}],"name":"redeemNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"revealNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"salePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStartDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

610180604052601b6101408190527f68747470733a2f2f666c6f79646e66742e636f6d2f746f6b656e2f00000000006101609081526200004391600791906200019b565b50606e6009556105dc600a553480156200005c57600080fd5b5060405162002e0b38038062002e0b8339810160408190526200007f916200025e565b6040518060400160405280600d81526020016c119b1bde5909dcc815dbdc9b19609a1b81525060405180604001604052806002815260200161465760f01b815250620000da620000d46200014760201b60201c565b6200014b565b8151620000ef9060019060208501906200019b565b508051620001059060029060208401906200019b565b50505060c09590955260e0939093526001600160601b0319606092831b81166101005290821b81166101205291811b82166080529190911b1660a05262000309565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001a990620002cc565b90600052602060002090601f016020900481019282620001cd576000855562000218565b82601f10620001e857805160ff191683800117855562000218565b8280016001018555821562000218579182015b8281111562000218578251825591602001919060010190620001fb565b50620002269291506200022a565b5090565b5b808211156200022657600081556001016200022b565b80516001600160a01b03811681146200025957600080fd5b919050565b60008060008060008060c0878903121562000277578182fd5b8651955060208701519450620002906040880162000241565b9350620002a06060880162000241565b9250620002b06080880162000241565b9150620002c060a0880162000241565b90509295509295509295565b600181811c90821680620002e157607f821691505b602082108114156200030357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c60c05160e0516101005160601c6101205160601c612a60620003ab6000396000818161057201528181611039015261191601526000818161043801528181610dd101528181610f05015261181a0152600081816104eb0152610adf01526000818161066f01528181610b9b0152610c7c0152600081816102510152610a750152600081816103e40152611d8a0152612a606000f3fe6080604052600436106101e35760003560e01c80636c0360eb11610102578063a22cb46511610095578063e7da56cc11610064578063e7da56cc146105d4578063e985e9c5146105f4578063f2fde38b1461063d578063f51f96dd1461065d57600080fd5b8063a22cb46514610540578063aa8ae36114610560578063b88d4fde14610594578063c87b56dd146105b457600080fd5b8063853828b6116100d1578063853828b6146104c45780638973123c146104d95780638da5cb5b1461050d57806395d89b411461052b57600080fd5b80636c0360eb1461045a57806370a082311461046f578063715018a61461048f578063766954b4146104a457600080fd5b8063346f0d481161017a57806360b96bea1161014957806360b96bea146103a457806361d027b3146103d25780636352211e1461040657806364add5ed1461042657600080fd5b8063346f0d481461033157806342842e0e1461035157806351ed82881461037157806355f804b31461038457600080fd5b8063095ea7b3116101b6578063095ea7b3146102ab57806318160ddd146102cd57806323b872dd146102f157806325844dd71461031157600080fd5b806301ffc9a7146101e857806306fdde031461021d578063077efb311461023f578063081812fc1461028b575b600080fd5b3480156101f457600080fd5b506102086102033660046125ef565b610691565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b506102326106e3565b6040516102149190612785565b34801561024b57600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610214565b34801561029757600080fd5b506102736102a636600461266d565b610775565b3480156102b757600080fd5b506102cb6102c636600461255b565b61080f565b005b3480156102d957600080fd5b506102e360085481565b604051908152602001610214565b3480156102fd57600080fd5b506102cb61030c36600461246d565b610925565b34801561031d57600080fd5b506102cb61032c366004612627565b610956565b34801561033d57600080fd5b506102cb61034c36600461266d565b6109ef565b34801561035d57600080fd5b506102cb61036c36600461246d565b610ac2565b6102cb61037f36600461266d565b610add565b34801561039057600080fd5b506102cb61039f366004612627565b610d65565b3480156103b057600080fd5b506103c46103bf3660046123fd565b610da6565b604051610214929190612757565b3480156103de57600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b34801561041257600080fd5b5061027361042136600461266d565b6112c3565b34801561043257600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b34801561046657600080fd5b5061023261133a565b34801561047b57600080fd5b506102e361048a3660046123fd565b6113c8565b34801561049b57600080fd5b506102cb61144f565b3480156104b057600080fd5b506102e36104bf366004612627565b611485565b3480156104d057600080fd5b506102cb611490565b3480156104e557600080fd5b506102e37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051957600080fd5b506000546001600160a01b0316610273565b34801561053757600080fd5b506102326114c3565b34801561054c57600080fd5b506102cb61055b36600461252a565b6114d2565b34801561056c57600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a057600080fd5b506102cb6105af3660046124ad565b611597565b3480156105c057600080fd5b506102326105cf36600461266d565b6115cf565b3480156105e057600080fd5b506102cb6105ef366004612586565b6116aa565b34801561060057600080fd5b5061020861060f366004612435565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561064957600080fd5b506102cb6106583660046123fd565b611962565b34801561066957600080fd5b506102e37f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b031982166380ac58cd60e01b14806106c257506001600160e01b03198216635b5e139f60e01b145b806106dd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546106f290612953565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90612953565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166107f35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061081a826112c3565b9050806001600160a01b0316836001600160a01b031614156108885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107ea565b336001600160a01b03821614806108a457506108a4813361060f565b6109165760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016107ea565b61092083836119fa565b505050565b61092f3382611a68565b61094b5760405162461bcd60e51b81526004016107ea90612874565b610920838383611b5f565b612b66600a54101561097a5760405162461bcd60e51b81526004016107ea9061280f565b7fd44ba0a18dac8a855c9106d25a28bebdae4de3f2212e756d57db3b09d546d593806109a583611cff565b146109dc5760405162461bcd60e51b81526020600482015260076024820152664261642055524960c81b60448201526064016107ea565b8151610920906007906020850190612283565b612b66600a541015610a135760405162461bcd60e51b81526004016107ea9061280f565b6009546105dc8110610a585760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481b5a5b9d195960921b60448201526064016107ea565b60005b82811015610abb5781610a6d8161298e565b925050610a9a7f000000000000000000000000000000000000000000000000000000000000000083611d63565b816105dc1415610aa957610abb565b80610ab38161298e565b915050610a5b565b5060095550565b61092083838360405180602001604052806000815250611597565b7f0000000000000000000000000000000000000000000000000000000000000000421015610b445760405162461bcd60e51b815260206004820152601460248201527329b0b6329034b9903737ba103cb2ba1037b832b760611b60448201526064016107ea565b612b66600a5410610b905760405162461bcd60e51b815260206004820152601660248201527514d85b19481a185cc8185b1c9958591e48195b99195960521b60448201526064016107ea565b600a546000610bbf837f00000000000000000000000000000000000000000000000000000000000000006128f1565b3414610bfe5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016107ea565b60005b83811015610c695782610c138161298e565b935050826107d01415610c2657611ac392505b610c303384611d63565b612b66831415610c57576001610c468286612910565b610c509190612910565b9150610c69565b80610c618161298e565b915050610c01565b50600a8290558015610d2f576000610ca17f0000000000000000000000000000000000000000000000000000000000000000836128f1565b604051909150600090339083908381818185875af1925050503d8060008114610ce6576040519150601f19603f3d011682016040523d82523d6000602084013e610ceb565b606091505b5050905080610d2c5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016107ea565b50505b612b66821415610d425761092047611d86565b67d02ab486cedc000047106109205761092067d02ab486cedc0000611d86565b50565b6000546001600160a01b03163314610d8f5760405162461bcd60e51b81526004016107ea9061283f565b8051610da2906007906020840190612283565b5050565b606080610db1612307565b610db9612307565b6000805b60648111610eeb57866001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610e1d91815260200190565b60206040518083038186803b158015610e3557600080fd5b505afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190612419565b6001600160a01b03161415610ed9578084836113888110610e9e57634e487b7160e01b600052603260045260246000fd5b6020020152600183836113888110610ec657634e487b7160e01b600052603260045260246000fd5b602002015281610ed58161298e565b9250505b80610ee38161298e565b915050610dbd565b506107d05b611753811161101f57866001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610f5191815260200190565b60206040518083038186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa19190612419565b6001600160a01b0316141561100d578084836113888110610fd257634e487b7160e01b600052603260045260246000fd5b6020020152600183836113888110610ffa57634e487b7160e01b600052603260045260246000fd5b6020020152816110098161298e565b9250505b806110178161298e565b915050610ef0565b506117545b611ac2811161115357866001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161108591815260200190565b60206040518083038186803b15801561109d57600080fd5b505afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612419565b6001600160a01b0316141561114157808483611388811061110657634e487b7160e01b600052603260045260246000fd5b602002015260028383611388811061112e57634e487b7160e01b600052603260045260246000fd5b60200201528161113d8161298e565b9250505b8061114b8161298e565b915050611024565b508067ffffffffffffffff81111561117b57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111a4578160200160208202803683370190505b5094508067ffffffffffffffff8111156111ce57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50935060005b818110156112ba578381611388811061122657634e487b7160e01b600052603260045260246000fd5b602002015186828151811061124b57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508281611388811061127857634e487b7160e01b600052603260045260246000fd5b602002015185828151811061129d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806112b28161298e565b9150506111fd565b50505050915091565b6000818152600360205260408120546001600160a01b0316806106dd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016107ea565b6007805461134790612953565b80601f016020809104026020016040519081016040528092919081815260200182805461137390612953565b80156113c05780601f10611395576101008083540402835291602001916113c0565b820191906000526020600020905b8154815290600101906020018083116113a357829003601f168201915b505050505081565b60006001600160a01b0382166114335760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016107ea565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146114795760405162461bcd60e51b81526004016107ea9061283f565b6114836000611e3b565b565b60006106dd82611cff565b6000546001600160a01b031633146114ba5760405162461bcd60e51b81526004016107ea9061283f565b61148347611d86565b6060600280546106f290612953565b6001600160a01b03821633141561152b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107ea565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6115a13383611a68565b6115bd5760405162461bcd60e51b81526004016107ea90612874565b6115c984848484611e8b565b50505050565b6000818152600360205260409020546060906001600160a01b031661164e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107ea565b6000611658611ebe565b9050600081511161167857604051806020016040528060008152506116a3565b8061168284611ecd565b6040516020016116939291906126eb565b6040516020818303038152906040525b9392505050565b612b66600a5410156116ce5760405162461bcd60e51b81526004016107ea9061280f565b82811461171d5760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d617463680000000000000060448201526064016107ea565b61dead60005b8481101561195a57600086868381811061174d57634e487b7160e01b600052603260045260246000fd5b905060200201359050600085858481811061177857634e487b7160e01b600052603260045260246000fd5b905060200201359050806001141561188857606e821115806117a957506107d082101580156117a957506117538211155b6117ee5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c1c995cd85b19481d1a58dad95d60521b60448201526064016107ea565b604051632142170760e11b81523360048201526001600160a01b038581166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e906064015b600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b505050506118813383611d63565b5050611948565b80600214156119455761175482101580156118a55750611ac28211155b6118ea5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908185d58dd1a5bdb881d1a58dad95d60521b60448201526064016107ea565b604051632142170760e11b81523360048201526001600160a01b038581166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401611845565b50505b806119528161298e565b915050611723565b505050505050565b6000546001600160a01b0316331461198c5760405162461bcd60e51b81526004016107ea9061283f565b6001600160a01b0381166119f15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b610d6281611e3b565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a2f826112c3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b0316611ae15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016107ea565b6000611aec836112c3565b9050806001600160a01b0316846001600160a01b03161480611b275750836001600160a01b0316611b1c84610775565b6001600160a01b0316145b80611b5757506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b72826112c3565b6001600160a01b031614611bda5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016107ea565b6001600160a01b038216611c3c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b611c476000826119fa565b6001600160a01b0383166000908152600460205260408120805460019290611c70908490612910565b90915550506001600160a01b0382166000908152600460205260408120805460019290611c9e9084906128c5565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60408051808201825260208082527f3261626634376238393365626536663731303331383239306437393830383566818301529151600092611d45918391869101612798565b60405160208183030381529060405280519060200120915050919050565b611d6d8282611fe7565b60088054906000611d7d8361298e565b91905055505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168260405160006040518083038185875af1925050503d8060008114611df3576040519150601f19603f3d011682016040523d82523d6000602084013e611df8565b606091505b5050905080610da25760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016107ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611e96848484611b5f565b611ea284848484612001565b6115c95760405162461bcd60e51b81526004016107ea906127bd565b6060600780546106f290612953565b606081611ef15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f1b5780611f058161298e565b9150611f149050600a836128dd565b9150611ef5565b60008167ffffffffffffffff811115611f4457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f6e576020820181803683370190505b5090505b8415611b5757611f83600183612910565b9150611f90600a866129a9565b611f9b9060306128c5565b60f81b818381518110611fbe57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611fe0600a866128dd565b9450611f72565b610da282826040518060200160405280600081525061210e565b60006001600160a01b0384163b1561210357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061204590339089908890889060040161271a565b602060405180830381600087803b15801561205f57600080fd5b505af192505050801561208f575060408051601f3d908101601f1916820190925261208c9181019061260b565b60015b6120e9573d8080156120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b5080516120e15760405162461bcd60e51b81526004016107ea906127bd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b57565b506001949350505050565b6121188383612141565b6121256000848484612001565b6109205760405162461bcd60e51b81526004016107ea906127bd565b6001600160a01b0382166121975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107ea565b6000818152600360205260409020546001600160a01b0316156121fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107ea565b6001600160a01b03821660009081526004602052604081208054600192906122259084906128c5565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461228f90612953565b90600052602060002090601f0160209004810192826122b157600085556122f7565b82601f106122ca57805160ff19168380011785556122f7565b828001600101855582156122f7579182015b828111156122f75782518255916020019190600101906122dc565b50612303929150612328565b5090565b60405180620271000160405280611388906020820280368337509192915050565b5b808211156123035760008155600101612329565b600067ffffffffffffffff80841115612358576123586129e9565b604051601f8501601f19908116603f01168101908282118183101715612380576123806129e9565b8160405280935085815286868601111561239957600080fd5b858560208301376000602087830101525050509392505050565b60008083601f8401126123c4578182fd5b50813567ffffffffffffffff8111156123db578182fd5b6020830191508360208260051b85010111156123f657600080fd5b9250929050565b60006020828403121561240e578081fd5b81356116a3816129ff565b60006020828403121561242a578081fd5b81516116a3816129ff565b60008060408385031215612447578081fd5b8235612452816129ff565b91506020830135612462816129ff565b809150509250929050565b600080600060608486031215612481578081fd5b833561248c816129ff565b9250602084013561249c816129ff565b929592945050506040919091013590565b600080600080608085870312156124c2578081fd5b84356124cd816129ff565b935060208501356124dd816129ff565b925060408501359150606085013567ffffffffffffffff8111156124ff578182fd5b8501601f8101871361250f578182fd5b61251e8782356020840161233d565b91505092959194509250565b6000806040838503121561253c578182fd5b8235612547816129ff565b915060208301358015158114612462578182fd5b6000806040838503121561256d578182fd5b8235612578816129ff565b946020939093013593505050565b6000806000806040858703121561259b578384fd5b843567ffffffffffffffff808211156125b2578586fd5b6125be888389016123b3565b909650945060208701359150808211156125d6578384fd5b506125e3878288016123b3565b95989497509550505050565b600060208284031215612600578081fd5b81356116a381612a14565b60006020828403121561261c578081fd5b81516116a381612a14565b600060208284031215612638578081fd5b813567ffffffffffffffff81111561264e578182fd5b8201601f8101841361265e578182fd5b611b578482356020840161233d565b60006020828403121561267e578081fd5b5035919050565b6000815180845260208085019450808401835b838110156126b457815187529582019590820190600101612698565b509495945050505050565b600081518084526126d7816020860160208601612927565b601f01601f19169290920160200192915050565b600083516126fd818460208801612927565b835190830190612711818360208801612927565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061274d908301846126bf565b9695505050505050565b60408152600061276a6040830185612685565b828103602084015261277c8185612685565b95945050505050565b6020815260006116a360208301846126bf565b6040815260006127ab60408301856126bf565b828103602084015261277c81856126bf565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526016908201527514d85b19481a185cc81b9bdd081e595d08195b99195960521b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156128d8576128d86129bd565b500190565b6000826128ec576128ec6129d3565b500490565b600081600019048311821515161561290b5761290b6129bd565b500290565b600082821015612922576129226129bd565b500390565b60005b8381101561294257818101518382015260200161292a565b838111156115c95750506000910152565b600181811c9082168061296757607f821691505b6020821081141561298857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129a2576129a26129bd565b5060010190565b6000826129b8576129b86129d3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d6257600080fd5b6001600160e01b031981168114610d6257600080fdfea264697066735822122033ed0bb34cf2c575091f20d2564daabf7d039f510cd69caedf54cc6d590c38a064736f6c634300080400330000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000000000000000000000000000000000006116eb60000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b000000000000000000000000e7c08dba10ce07e1b70e87a355957cc8bfc95dbc0000000000000000000000007a97f91fa492dc693c141a040ecc605f518ca11c

Deployed Bytecode

0x6080604052600436106101e35760003560e01c80636c0360eb11610102578063a22cb46511610095578063e7da56cc11610064578063e7da56cc146105d4578063e985e9c5146105f4578063f2fde38b1461063d578063f51f96dd1461065d57600080fd5b8063a22cb46514610540578063aa8ae36114610560578063b88d4fde14610594578063c87b56dd146105b457600080fd5b8063853828b6116100d1578063853828b6146104c45780638973123c146104d95780638da5cb5b1461050d57806395d89b411461052b57600080fd5b80636c0360eb1461045a57806370a082311461046f578063715018a61461048f578063766954b4146104a457600080fd5b8063346f0d481161017a57806360b96bea1161014957806360b96bea146103a457806361d027b3146103d25780636352211e1461040657806364add5ed1461042657600080fd5b8063346f0d481461033157806342842e0e1461035157806351ed82881461037157806355f804b31461038457600080fd5b8063095ea7b3116101b6578063095ea7b3146102ab57806318160ddd146102cd57806323b872dd146102f157806325844dd71461031157600080fd5b806301ffc9a7146101e857806306fdde031461021d578063077efb311461023f578063081812fc1461028b575b600080fd5b3480156101f457600080fd5b506102086102033660046125ef565b610691565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b506102326106e3565b6040516102149190612785565b34801561024b57600080fd5b506102737f0000000000000000000000007a97f91fa492dc693c141a040ecc605f518ca11c81565b6040516001600160a01b039091168152602001610214565b34801561029757600080fd5b506102736102a636600461266d565b610775565b3480156102b757600080fd5b506102cb6102c636600461255b565b61080f565b005b3480156102d957600080fd5b506102e360085481565b604051908152602001610214565b3480156102fd57600080fd5b506102cb61030c36600461246d565b610925565b34801561031d57600080fd5b506102cb61032c366004612627565b610956565b34801561033d57600080fd5b506102cb61034c36600461266d565b6109ef565b34801561035d57600080fd5b506102cb61036c36600461246d565b610ac2565b6102cb61037f36600461266d565b610add565b34801561039057600080fd5b506102cb61039f366004612627565b610d65565b3480156103b057600080fd5b506103c46103bf3660046123fd565b610da6565b604051610214929190612757565b3480156103de57600080fd5b506102737f000000000000000000000000e7c08dba10ce07e1b70e87a355957cc8bfc95dbc81565b34801561041257600080fd5b5061027361042136600461266d565b6112c3565b34801561043257600080fd5b506102737f000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d81565b34801561046657600080fd5b5061023261133a565b34801561047b57600080fd5b506102e361048a3660046123fd565b6113c8565b34801561049b57600080fd5b506102cb61144f565b3480156104b057600080fd5b506102e36104bf366004612627565b611485565b3480156104d057600080fd5b506102cb611490565b3480156104e557600080fd5b506102e37f000000000000000000000000000000000000000000000000000000006116eb6081565b34801561051957600080fd5b506000546001600160a01b0316610273565b34801561053757600080fd5b506102326114c3565b34801561054c57600080fd5b506102cb61055b36600461252a565b6114d2565b34801561056c57600080fd5b506102737f00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b81565b3480156105a057600080fd5b506102cb6105af3660046124ad565b611597565b3480156105c057600080fd5b506102326105cf36600461266d565b6115cf565b3480156105e057600080fd5b506102cb6105ef366004612586565b6116aa565b34801561060057600080fd5b5061020861060f366004612435565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561064957600080fd5b506102cb6106583660046123fd565b611962565b34801561066957600080fd5b506102e37f0000000000000000000000000000000000000000000000000214e8348c4f000081565b60006001600160e01b031982166380ac58cd60e01b14806106c257506001600160e01b03198216635b5e139f60e01b145b806106dd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546106f290612953565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90612953565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166107f35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061081a826112c3565b9050806001600160a01b0316836001600160a01b031614156108885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107ea565b336001600160a01b03821614806108a457506108a4813361060f565b6109165760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016107ea565b61092083836119fa565b505050565b61092f3382611a68565b61094b5760405162461bcd60e51b81526004016107ea90612874565b610920838383611b5f565b612b66600a54101561097a5760405162461bcd60e51b81526004016107ea9061280f565b7fd44ba0a18dac8a855c9106d25a28bebdae4de3f2212e756d57db3b09d546d593806109a583611cff565b146109dc5760405162461bcd60e51b81526020600482015260076024820152664261642055524960c81b60448201526064016107ea565b8151610920906007906020850190612283565b612b66600a541015610a135760405162461bcd60e51b81526004016107ea9061280f565b6009546105dc8110610a585760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481b5a5b9d195960921b60448201526064016107ea565b60005b82811015610abb5781610a6d8161298e565b925050610a9a7f0000000000000000000000007a97f91fa492dc693c141a040ecc605f518ca11c83611d63565b816105dc1415610aa957610abb565b80610ab38161298e565b915050610a5b565b5060095550565b61092083838360405180602001604052806000815250611597565b7f000000000000000000000000000000000000000000000000000000006116eb60421015610b445760405162461bcd60e51b815260206004820152601460248201527329b0b6329034b9903737ba103cb2ba1037b832b760611b60448201526064016107ea565b612b66600a5410610b905760405162461bcd60e51b815260206004820152601660248201527514d85b19481a185cc8185b1c9958591e48195b99195960521b60448201526064016107ea565b600a546000610bbf837f0000000000000000000000000000000000000000000000000214e8348c4f00006128f1565b3414610bfe5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016107ea565b60005b83811015610c695782610c138161298e565b935050826107d01415610c2657611ac392505b610c303384611d63565b612b66831415610c57576001610c468286612910565b610c509190612910565b9150610c69565b80610c618161298e565b915050610c01565b50600a8290558015610d2f576000610ca17f0000000000000000000000000000000000000000000000000214e8348c4f0000836128f1565b604051909150600090339083908381818185875af1925050503d8060008114610ce6576040519150601f19603f3d011682016040523d82523d6000602084013e610ceb565b606091505b5050905080610d2c5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016107ea565b50505b612b66821415610d425761092047611d86565b67d02ab486cedc000047106109205761092067d02ab486cedc0000611d86565b50565b6000546001600160a01b03163314610d8f5760405162461bcd60e51b81526004016107ea9061283f565b8051610da2906007906020840190612283565b5050565b606080610db1612307565b610db9612307565b6000805b60648111610eeb57866001600160a01b03167f000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610e1d91815260200190565b60206040518083038186803b158015610e3557600080fd5b505afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190612419565b6001600160a01b03161415610ed9578084836113888110610e9e57634e487b7160e01b600052603260045260246000fd5b6020020152600183836113888110610ec657634e487b7160e01b600052603260045260246000fd5b602002015281610ed58161298e565b9250505b80610ee38161298e565b915050610dbd565b506107d05b611753811161101f57866001600160a01b03167f000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610f5191815260200190565b60206040518083038186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa19190612419565b6001600160a01b0316141561100d578084836113888110610fd257634e487b7160e01b600052603260045260246000fd5b6020020152600183836113888110610ffa57634e487b7160e01b600052603260045260246000fd5b6020020152816110098161298e565b9250505b806110178161298e565b915050610ef0565b506117545b611ac2811161115357866001600160a01b03167f00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b6001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161108591815260200190565b60206040518083038186803b15801561109d57600080fd5b505afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612419565b6001600160a01b0316141561114157808483611388811061110657634e487b7160e01b600052603260045260246000fd5b602002015260028383611388811061112e57634e487b7160e01b600052603260045260246000fd5b60200201528161113d8161298e565b9250505b8061114b8161298e565b915050611024565b508067ffffffffffffffff81111561117b57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111a4578160200160208202803683370190505b5094508067ffffffffffffffff8111156111ce57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50935060005b818110156112ba578381611388811061122657634e487b7160e01b600052603260045260246000fd5b602002015186828151811061124b57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508281611388811061127857634e487b7160e01b600052603260045260246000fd5b602002015185828151811061129d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806112b28161298e565b9150506111fd565b50505050915091565b6000818152600360205260408120546001600160a01b0316806106dd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016107ea565b6007805461134790612953565b80601f016020809104026020016040519081016040528092919081815260200182805461137390612953565b80156113c05780601f10611395576101008083540402835291602001916113c0565b820191906000526020600020905b8154815290600101906020018083116113a357829003601f168201915b505050505081565b60006001600160a01b0382166114335760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016107ea565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146114795760405162461bcd60e51b81526004016107ea9061283f565b6114836000611e3b565b565b60006106dd82611cff565b6000546001600160a01b031633146114ba5760405162461bcd60e51b81526004016107ea9061283f565b61148347611d86565b6060600280546106f290612953565b6001600160a01b03821633141561152b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107ea565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6115a13383611a68565b6115bd5760405162461bcd60e51b81526004016107ea90612874565b6115c984848484611e8b565b50505050565b6000818152600360205260409020546060906001600160a01b031661164e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107ea565b6000611658611ebe565b9050600081511161167857604051806020016040528060008152506116a3565b8061168284611ecd565b6040516020016116939291906126eb565b6040516020818303038152906040525b9392505050565b612b66600a5410156116ce5760405162461bcd60e51b81526004016107ea9061280f565b82811461171d5760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d617463680000000000000060448201526064016107ea565b61dead60005b8481101561195a57600086868381811061174d57634e487b7160e01b600052603260045260246000fd5b905060200201359050600085858481811061177857634e487b7160e01b600052603260045260246000fd5b905060200201359050806001141561188857606e821115806117a957506107d082101580156117a957506117538211155b6117ee5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c1c995cd85b19481d1a58dad95d60521b60448201526064016107ea565b604051632142170760e11b81523360048201526001600160a01b038581166024830152604482018490527f000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d16906342842e0e906064015b600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b505050506118813383611d63565b5050611948565b80600214156119455761175482101580156118a55750611ac28211155b6118ea5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908185d58dd1a5bdb881d1a58dad95d60521b60448201526064016107ea565b604051632142170760e11b81523360048201526001600160a01b038581166024830152604482018490527f00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b16906342842e0e90606401611845565b50505b806119528161298e565b915050611723565b505050505050565b6000546001600160a01b0316331461198c5760405162461bcd60e51b81526004016107ea9061283f565b6001600160a01b0381166119f15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b610d6281611e3b565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a2f826112c3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b0316611ae15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016107ea565b6000611aec836112c3565b9050806001600160a01b0316846001600160a01b03161480611b275750836001600160a01b0316611b1c84610775565b6001600160a01b0316145b80611b5757506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b72826112c3565b6001600160a01b031614611bda5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016107ea565b6001600160a01b038216611c3c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b611c476000826119fa565b6001600160a01b0383166000908152600460205260408120805460019290611c70908490612910565b90915550506001600160a01b0382166000908152600460205260408120805460019290611c9e9084906128c5565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60408051808201825260208082527f3261626634376238393365626536663731303331383239306437393830383566818301529151600092611d45918391869101612798565b60405160208183030381529060405280519060200120915050919050565b611d6d8282611fe7565b60088054906000611d7d8361298e565b91905055505050565b60007f000000000000000000000000e7c08dba10ce07e1b70e87a355957cc8bfc95dbc6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611df3576040519150601f19603f3d011682016040523d82523d6000602084013e611df8565b606091505b5050905080610da25760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016107ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611e96848484611b5f565b611ea284848484612001565b6115c95760405162461bcd60e51b81526004016107ea906127bd565b6060600780546106f290612953565b606081611ef15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f1b5780611f058161298e565b9150611f149050600a836128dd565b9150611ef5565b60008167ffffffffffffffff811115611f4457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f6e576020820181803683370190505b5090505b8415611b5757611f83600183612910565b9150611f90600a866129a9565b611f9b9060306128c5565b60f81b818381518110611fbe57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611fe0600a866128dd565b9450611f72565b610da282826040518060200160405280600081525061210e565b60006001600160a01b0384163b1561210357604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061204590339089908890889060040161271a565b602060405180830381600087803b15801561205f57600080fd5b505af192505050801561208f575060408051601f3d908101601f1916820190925261208c9181019061260b565b60015b6120e9573d8080156120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b5080516120e15760405162461bcd60e51b81526004016107ea906127bd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b57565b506001949350505050565b6121188383612141565b6121256000848484612001565b6109205760405162461bcd60e51b81526004016107ea906127bd565b6001600160a01b0382166121975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107ea565b6000818152600360205260409020546001600160a01b0316156121fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107ea565b6001600160a01b03821660009081526004602052604081208054600192906122259084906128c5565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461228f90612953565b90600052602060002090601f0160209004810192826122b157600085556122f7565b82601f106122ca57805160ff19168380011785556122f7565b828001600101855582156122f7579182015b828111156122f75782518255916020019190600101906122dc565b50612303929150612328565b5090565b60405180620271000160405280611388906020820280368337509192915050565b5b808211156123035760008155600101612329565b600067ffffffffffffffff80841115612358576123586129e9565b604051601f8501601f19908116603f01168101908282118183101715612380576123806129e9565b8160405280935085815286868601111561239957600080fd5b858560208301376000602087830101525050509392505050565b60008083601f8401126123c4578182fd5b50813567ffffffffffffffff8111156123db578182fd5b6020830191508360208260051b85010111156123f657600080fd5b9250929050565b60006020828403121561240e578081fd5b81356116a3816129ff565b60006020828403121561242a578081fd5b81516116a3816129ff565b60008060408385031215612447578081fd5b8235612452816129ff565b91506020830135612462816129ff565b809150509250929050565b600080600060608486031215612481578081fd5b833561248c816129ff565b9250602084013561249c816129ff565b929592945050506040919091013590565b600080600080608085870312156124c2578081fd5b84356124cd816129ff565b935060208501356124dd816129ff565b925060408501359150606085013567ffffffffffffffff8111156124ff578182fd5b8501601f8101871361250f578182fd5b61251e8782356020840161233d565b91505092959194509250565b6000806040838503121561253c578182fd5b8235612547816129ff565b915060208301358015158114612462578182fd5b6000806040838503121561256d578182fd5b8235612578816129ff565b946020939093013593505050565b6000806000806040858703121561259b578384fd5b843567ffffffffffffffff808211156125b2578586fd5b6125be888389016123b3565b909650945060208701359150808211156125d6578384fd5b506125e3878288016123b3565b95989497509550505050565b600060208284031215612600578081fd5b81356116a381612a14565b60006020828403121561261c578081fd5b81516116a381612a14565b600060208284031215612638578081fd5b813567ffffffffffffffff81111561264e578182fd5b8201601f8101841361265e578182fd5b611b578482356020840161233d565b60006020828403121561267e578081fd5b5035919050565b6000815180845260208085019450808401835b838110156126b457815187529582019590820190600101612698565b509495945050505050565b600081518084526126d7816020860160208601612927565b601f01601f19169290920160200192915050565b600083516126fd818460208801612927565b835190830190612711818360208801612927565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061274d908301846126bf565b9695505050505050565b60408152600061276a6040830185612685565b828103602084015261277c8185612685565b95945050505050565b6020815260006116a360208301846126bf565b6040815260006127ab60408301856126bf565b828103602084015261277c81856126bf565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526016908201527514d85b19481a185cc81b9bdd081e595d08195b99195960521b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156128d8576128d86129bd565b500190565b6000826128ec576128ec6129d3565b500490565b600081600019048311821515161561290b5761290b6129bd565b500290565b600082821015612922576129226129bd565b500390565b60005b8381101561294257818101518382015260200161292a565b838111156115c95750506000910152565b600181811c9082168061296757607f821691505b6020821081141561298857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129a2576129a26129bd565b5060010190565b6000826129b8576129b86129d3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d6257600080fd5b6001600160e01b031981168114610d6257600080fdfea264697066735822122033ed0bb34cf2c575091f20d2564daabf7d039f510cd69caedf54cc6d590c38a064736f6c63430008040033

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

0000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000000000000000000000000000000000006116eb60000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b000000000000000000000000e7c08dba10ce07e1b70e87a355957cc8bfc95dbc0000000000000000000000007a97f91fa492dc693c141a040ecc605f518ca11c

-----Decoded View---------------
Arg [0] : _salePrice (uint256): 150000000000000000
Arg [1] : _saleStartDate (uint256): 1628892000
Arg [2] : _presaleTicket (address): 0xad0F2E82f3c34815175031330e87426C3513447D
Arg [3] : _auctionTicket (address): 0x56aE7332a4E6D98BcB3342f71cb440576487948b
Arg [4] : _treasury (address): 0xE7c08dBa10Ce07e1b70e87A355957CC8bfc95DBC
Arg [5] : _privateSaleMinter (address): 0x7A97f91fA492Dc693c141A040Ecc605F518Ca11c

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000214e8348c4f0000
Arg [1] : 000000000000000000000000000000000000000000000000000000006116eb60
Arg [2] : 000000000000000000000000ad0f2e82f3c34815175031330e87426c3513447d
Arg [3] : 00000000000000000000000056ae7332a4e6d98bcb3342f71cb440576487948b
Arg [4] : 000000000000000000000000e7c08dba10ce07e1b70e87a355957cc8bfc95dbc
Arg [5] : 0000000000000000000000007a97f91fa492dc693c141a040ecc605f518ca11c


Deployed Bytecode Sourcemap

16835:5765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8127:305;;;;;;;;;;-1:-1:-1;8127:305:0;;;;;:::i;:::-;;:::i;:::-;;;9169:14:1;;9162:22;9144:41;;9132:2;9117:18;8127:305:0;;;;;;;;8921:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17109:42::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7617:32:1;;;7599:51;;7587:2;7572:18;17109:42:0;7554:102:1;10034:221:0;;;;;;;;;;-1:-1:-1;10034:221:0;;;;;:::i;:::-;;:::i;9609:411::-;;;;;;;;;;-1:-1:-1;9609:411:0;;;;;:::i;:::-;;:::i;:::-;;16940:23;;;;;;;;;;;;;;;;;;;9342:25:1;;;9330:2;9315:18;16940:23:0;9297:76:1;10756:296:0;;;;;;;;;;-1:-1:-1;10756:296:0;;;;;:::i;:::-;;:::i;18563:246::-;;;;;;;;;;-1:-1:-1;18563:246:0;;;;;:::i;:::-;;:::i;20254:426::-;;;;;;;;;;-1:-1:-1;20254:426:0;;;;;:::i;:::-;;:::i;11066:185::-;;;;;;;;;;-1:-1:-1;11066:185:0;;;;;:::i;:::-;;:::i;19285:963::-;;;;;;:::i;:::-;;:::i;18815:90::-;;;;;;;;;;-1:-1:-1;18815:90:0;;;;;:::i;:::-;;:::i;21700:895::-;;;;;;;;;;-1:-1:-1;21700:895:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17070:33::-;;;;;;;;;;;;;;;8668:239;;;;;;;;;;-1:-1:-1;8668:239:0;;;;;:::i;:::-;;:::i;17239:37::-;;;;;;;;;;;;;;;16882:53;;;;;;;;;;;;;:::i;8446:208::-;;;;;;;;;;-1:-1:-1;8446:208:0;;;;;:::i;:::-;;:::i;16347:94::-;;;;;;;;;;;;;:::i;18448:109::-;;;;;;;;;;-1:-1:-1;18448:109:0;;;;;:::i;:::-;;:::i;19063:87::-;;;;;;;;;;;;;:::i;17196:35::-;;;;;;;;;;;;;;;16112:87;;;;;;;;;;-1:-1:-1;16158:7:0;16185:6;-1:-1:-1;;;;;16185:6:0;16112:87;;9035:104;;;;;;;;;;;;;:::i;10269:295::-;;;;;;;;;;-1:-1:-1;10269:295:0;;;;;:::i;:::-;;:::i;17282:37::-;;;;;;;;;;;;;;;11265:328;;;;;;;;;;-1:-1:-1;11265:328:0;;;;;:::i;:::-;;:::i;9153:334::-;;;;;;;;;;-1:-1:-1;9153:334:0;;;;;:::i;:::-;;:::i;20712:982::-;;;;;;;;;;-1:-1:-1;20712:982:0;;;;;:::i;:::-;;:::i;10578:164::-;;;;;;;;;;-1:-1:-1;10578:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;10699:25:0;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10578:164;16455:192;;;;;;;;;;-1:-1:-1;16455:192:0;;;;;:::i;:::-;;:::i;17159:31::-;;;;;;;;;;;;;;;8127:305;8229:4;-1:-1:-1;;;;;;8266:40:0;;-1:-1:-1;;;8266:40:0;;:105;;-1:-1:-1;;;;;;;8323:48:0;;-1:-1:-1;;;8323:48:0;8266:105;:158;;;-1:-1:-1;;;;;;;;;;7460:40:0;;;8388:36;8246:178;8127:305;-1:-1:-1;;8127:305:0:o;8921:100::-;8975:13;9008:5;9001:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8921:100;:::o;10034:221::-;10110:7;12025:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12025:16:0;10130:73;;;;-1:-1:-1;;;10130:73:0;;16456:2:1;10130:73:0;;;16438:21:1;16495:2;16475:18;;;16468:30;16534:34;16514:18;;;16507:62;-1:-1:-1;;;16585:18:1;;;16578:42;16637:19;;10130:73:0;;;;;;;;;-1:-1:-1;10223:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;10223:24:0;;10034:221::o;9609:411::-;9690:13;9706:23;9721:7;9706:14;:23::i;:::-;9690:39;;9754:5;-1:-1:-1;;;;;9748:11:0;:2;-1:-1:-1;;;;;9748:11:0;;;9740:57;;;;-1:-1:-1;;;9740:57:0;;19103:2:1;9740:57:0;;;19085:21:1;19142:2;19122:18;;;19115:30;19181:34;19161:18;;;19154:62;-1:-1:-1;;;19232:18:1;;;19225:31;19273:19;;9740:57:0;19075:223:1;9740:57:0;5692:10;-1:-1:-1;;;;;9832:21:0;;;;:62;;-1:-1:-1;9857:37:0;9874:5;5692:10;10578:164;:::i;9857:37::-;9810:168;;;;-1:-1:-1;;;9810:168:0;;14849:2:1;9810:168:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:34;14907:18;;;14900:62;14998:26;14978:18;;;14971:54;15042:19;;9810:168:0;14821:246:1;9810:168:0;9991:21;10000:2;10004:7;9991:8;:21::i;:::-;9609:411;;;:::o;10756:296::-;10908:41;5692:10;10941:7;10908:18;:41::i;:::-;10900:103;;;;-1:-1:-1;;;10900:103:0;;;;;;;:::i;:::-;11016:28;11026:4;11032:2;11036:7;11016:9;:28::i;18563:246::-;17365:5;17616:24;;:41;;17608:76;;;;-1:-1:-1;;;17608:76:0;;;;;;;:::i;:::-;18658:66:::1;::::0;18739:16:::1;18748:6:::0;18739:8:::1;:16::i;:::-;:29;18731:49;;;::::0;-1:-1:-1;;;18731:49:0;;20274:2:1;18731:49:0::1;::::0;::::1;20256:21:1::0;20313:1;20293:18;;;20286:29;-1:-1:-1;;;20331:18:1;;;20324:37;20378:18;;18731:49:0::1;20246:156:1::0;18731:49:0::1;18787:16:::0;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;20254:426::-:0;17365:5;17616:24;;:41;;17608:76;;;;-1:-1:-1;;;17608:76:0;;;;;;;:::i;:::-;20348:25:::1;::::0;20402:4:::1;20388:18:::0;::::1;20380:45;;;::::0;-1:-1:-1;;;20380:45:0;;10413:2:1;20380:45:0::1;::::0;::::1;10395:21:1::0;10452:2;10432:18;;;10425:30;-1:-1:-1;;;10471:18:1;;;10464:44;10525:18;;20380:45:0::1;10385:164:1::0;20380:45:0::1;20439:6;20434:193;20455:8;20451:1;:12;20434:193;;;20481:13:::0;::::1;::::0;::::1;:::i;:::-;;;;20503:55;20527:17;20546:11;20503:23;:55::i;:::-;20573:11;20588:4;20573:19;20569:51;;;20605:5;;20569:51;20465:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20434:193;;;-1:-1:-1::0;20635:25:0::1;:39:::0;-1:-1:-1;20254:426:0:o;11066:185::-;11204:39;11221:4;11227:2;11231:7;11204:39;;;;;;;;;;;;:16;:39::i;19285:963::-;17435:13;17416:15;:32;;17408:65;;;;-1:-1:-1;;;17408:65:0;;12977:2:1;17408:65:0;;;12959:21:1;13016:2;12996:18;;;12989:30;-1:-1:-1;;;13035:18:1;;;13028:50;13095:18;;17408:65:0;12949:170:1;17408:65:0;17365:5;17488:24;;:40;17480:75;;;;-1:-1:-1;;;17480:75:0;;19505:2:1;17480:75:0;;;19487:21:1;19544:2;19524:18;;;19517:30;-1:-1:-1;;;19563:18:1;;;19556:52;19625:18;;17480:75:0;19477:172:1;17480:75:0;19376:24:::1;::::0;19357:16:::1;19451:20;19463:8:::0;19451:9:::1;:20;:::i;:::-;19438:9;:33;19430:60;;;::::0;-1:-1:-1;;;19430:60:0;;12283:2:1;19430:60:0::1;::::0;::::1;12265:21:1::0;12322:2;12302:18;;;12295:30;-1:-1:-1;;;12341:18:1;;;12334:44;12395:18;;19430:60:0::1;12255:164:1::0;19430:60:0::1;19504:6;19499:310;19520:8;19516:1;:12;19499:310;;;19546:13:::0;::::1;::::0;::::1;:::i;:::-;;;;19574:11;19589:4;19574:19;19570:64;;;19620:4;19606:18;;19570:64;19644:48;19668:10;19680:11;19644:23;:48::i;:::-;17365:5;19707:11;:28;19703:99;;;19775:1;19760:12;19771:1:::0;19760:8;:12:::1;:::i;:::-;:16;;;;:::i;:::-;19748:28;;19787:5;;19703:99;19530:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19499:310;;;-1:-1:-1::0;19817:24:0::1;:38:::0;;;19868:13;;19864:174:::1;;19892:11;19906:21;19918:9;19906::::0;:21:::1;:::i;:::-;19949:44;::::0;19892:35;;-1:-1:-1;19937:7:0::1;::::0;19957:10:::1;::::0;19892:35;;19937:7;19949:44;19937:7;19949:44;19892:35;19957:10;19949:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19936:57;;;20010:2;20002:28;;;::::0;-1:-1:-1;;;20002:28:0;;16869:2:1;20002:28:0::1;::::0;::::1;16851:21:1::0;16908:2;16888:18;;;16881:30;-1:-1:-1;;;16927:18:1;;;16920:43;16980:18;;20002:28:0::1;16841:163:1::0;20002:28:0::1;19864:174;;;17365:5;20050:11;:28;20046:106;;;20097:32;20107:21;20097:9;:32::i;20046:106::-;20189:8;20164:21;:33;20160:83;;20216:19;20226:8;20216:9;:19::i;17562:1::-;19285:963:::0;:::o;18815:90::-;16158:7;16185:6;-1:-1:-1;;;;;16185:6:0;5692:10;16253:23;16245:68;;;;-1:-1:-1;;;16245:68:0;;;;;;;:::i;:::-;18883:16;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;18815:90:::0;:::o;21700:895::-;21760:17;21779:19;21809:25;;:::i;:::-;21841:27;;:::i;:::-;21875:8;;21892:169;21914:3;21909:1;:8;21892:169;;21965:5;-1:-1:-1;;;;;21937:33:0;:13;-1:-1:-1;;;;;21937:21:0;;21959:1;21937:24;;;;;;;;;;;;;9342:25:1;;9330:2;9315:18;;9297:76;21937:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21937:33:0;;21933:121;;;21998:1;21983:7;21991:3;21983:12;;;;;-1:-1:-1;;;21983:12:0;;;;;;;;;;;;:16;22027:1;22010:9;22020:3;22010:14;;;;;-1:-1:-1;;;22010:14:0;;;;;;;;;;;;:18;22039:5;;;;:::i;:::-;;;;21933:121;21919:3;;;;:::i;:::-;;;;21892:169;;;-1:-1:-1;22083:4:0;22069:173;22094:4;22089:1;:9;22069:173;;22146:5;-1:-1:-1;;;;;22118:33:0;:13;-1:-1:-1;;;;;22118:21:0;;22140:1;22118:24;;;;;;;;;;;;;9342:25:1;;9330:2;9315:18;;9297:76;22118:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22118:33:0;;22114:121;;;22179:1;22164:7;22172:3;22164:12;;;;;-1:-1:-1;;;22164:12:0;;;;;;;;;;;;:16;22208:1;22191:9;22201:3;22191:14;;;;;-1:-1:-1;;;22191:14:0;;;;;;;;;;;;:18;22220:5;;;;:::i;:::-;;;;22114:121;22100:3;;;;:::i;:::-;;;;22069:173;;;-1:-1:-1;22264:4:0;22250:173;22275:4;22270:1;:9;22250:173;;22327:5;-1:-1:-1;;;;;22299:33:0;:13;-1:-1:-1;;;;;22299:21:0;;22321:1;22299:24;;;;;;;;;;;;;9342:25:1;;9330:2;9315:18;;9297:76;22299:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22299:33:0;;22295:121;;;22360:1;22345:7;22353:3;22345:12;;;;;-1:-1:-1;;;22345:12:0;;;;;;;;;;;;:16;22389:1;22372:9;22382:3;22372:14;;;;;-1:-1:-1;;;22372:14:0;;;;;;;;;;;;:18;22401:5;;;;:::i;:::-;;;;22295:121;22281:3;;;;:::i;:::-;;;;22250:173;;;;22448:3;22437:15;;;;;;-1:-1:-1;;;22437:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22437:15:0;;22431:21;;22478:3;22467:15;;;;;;-1:-1:-1;;;22467:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22467:15:0;;22459:23;;22496:6;22491:99;22512:3;22508:1;:7;22491:99;;;22540:7;22548:1;22540:10;;;;;-1:-1:-1;;;22540:10:0;;;;;;;;;;;;;22531:3;22535:1;22531:6;;;;;;-1:-1:-1;;;22531:6:0;;;;;;;;;;;;;;:19;;;;;22570:9;22580:1;22570:12;;;;;-1:-1:-1;;;22570:12:0;;;;;;;;;;;;;22559:5;22565:1;22559:8;;;;;;-1:-1:-1;;;22559:8:0;;;;;;;;;;;;;;;;;;:23;22517:3;;;;:::i;:::-;;;;22491:99;;;;21700:895;;;;;;:::o;8668:239::-;8740:7;8776:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8776:16:0;8811:19;8803:73;;;;-1:-1:-1;;;8803:73:0;;15685:2:1;8803:73:0;;;15667:21:1;15724:2;15704:18;;;15697:30;15763:34;15743:18;;;15736:62;-1:-1:-1;;;15814:18:1;;;15807:39;15863:19;;8803:73:0;15657:231:1;16882:53:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8446:208::-;8518:7;-1:-1:-1;;;;;8546:19:0;;8538:74;;;;-1:-1:-1;;;8538:74:0;;15274:2:1;8538:74:0;;;15256:21:1;15313:2;15293:18;;;15286:30;15352:34;15332:18;;;15325:62;-1:-1:-1;;;15403:18:1;;;15396:40;15453:19;;8538:74:0;15246:232:1;8538:74:0;-1:-1:-1;;;;;;8630:16:0;;;;;:9;:16;;;;;;;8446:208::o;16347:94::-;16158:7;16185:6;-1:-1:-1;;;;;16185:6:0;5692:10;16253:23;16245:68;;;;-1:-1:-1;;;16245:68:0;;;;;;;:::i;:::-;16412:21:::1;16430:1;16412:9;:21::i;:::-;16347:94::o:0;18448:109::-;18510:12;18538:13;18547:3;18538:8;:13::i;19063:87::-;16158:7;16185:6;-1:-1:-1;;;;;16185:6:0;5692:10;16253:23;16245:68;;;;-1:-1:-1;;;16245:68:0;;;;;;;:::i;:::-;19112:32:::1;19122:21;19112:9;:32::i;9035:104::-:0;9091:13;9124:7;9117:14;;;;;:::i;10269:295::-;-1:-1:-1;;;;;10372:24:0;;5692:10;10372:24;;10364:62;;;;-1:-1:-1;;;10364:62:0;;13731:2:1;10364:62:0;;;13713:21:1;13770:2;13750:18;;;13743:30;13809:27;13789:18;;;13782:55;13854:18;;10364:62:0;13703:175:1;10364:62:0;5692:10;10439:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;10439:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;10439:53:0;;;;;;;;;;10508:48;;9144:41:1;;;10439:42:0;;5692:10;10508:48;;9117:18:1;10508:48:0;;;;;;;10269:295;;:::o;11265:328::-;11440:41;5692:10;11473:7;11440:18;:41::i;:::-;11432:103;;;;-1:-1:-1;;;11432:103:0;;;;;;;:::i;:::-;11546:39;11560:4;11566:2;11570:7;11579:5;11546:13;:39::i;:::-;11265:328;;;;:::o;9153:334::-;12001:4;12025:16;;;:7;:16;;;;;;9226:13;;-1:-1:-1;;;;;12025:16:0;9252:76;;;;-1:-1:-1;;;9252:76:0;;17982:2:1;9252:76:0;;;17964:21:1;18021:2;18001:18;;;17994:30;18060:34;18040:18;;;18033:62;-1:-1:-1;;;18111:18:1;;;18104:45;18166:19;;9252:76:0;17954:237:1;9252:76:0;9341:21;9365:10;:8;:10::i;:::-;9341:34;;9417:1;9399:7;9393:21;:25;:86;;;;;;;;;;;;;;;;;9445:7;9454:18;:7;:16;:18::i;:::-;9428:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9393:86;9386:93;9153:334;-1:-1:-1;;;9153:334:0:o;20712:982::-;17365:5;17616:24;;:41;;17608:76;;;;-1:-1:-1;;;17608:76:0;;;;;;;:::i;:::-;20818:26;;::::1;20810:64;;;::::0;-1:-1:-1;;;20810:64:0;;18749:2:1;20810:64:0::1;::::0;::::1;18731:21:1::0;18788:2;18768:18;;;18761:30;18827:27;18807:18;;;18800:55;18872:18;;20810:64:0::1;18721:175:1::0;20810:64:0::1;20905:42;20883:19;20956:733;20973:14:::0;;::::1;20956:733;;;21005:7;21015:3;;21019:1;21015:6;;;;;-1:-1:-1::0;;;21015:6:0::1;;;;;;;;;;;;;;;21005:16;;21030:15;21048:5;;21054:1;21048:8;;;;;-1:-1:-1::0;;;21048:8:0::1;;;;;;;;;;;;;;;21030:26;;21079:10;21093:1;21079:15;21075:325;;;21157:3;21151:2;:9;;21139:52;;;;21172:4;21166:2;:10;;:24;;;;;21186:4;21180:2;:10;;21166:24;21119:120;;;::::0;-1:-1:-1;;;21119:120:0;;18398:2:1;21119:120:0::1;::::0;::::1;18380:21:1::0;18437:2;18417:18;;;18410:30;-1:-1:-1;;;18456:18:1;;;18449:52;18518:18;;21119:120:0::1;18370:172:1::0;21119:120:0::1;21262:59;::::0;-1:-1:-1;;;21262:59:0;;21293:10:::1;21262:59;::::0;::::1;7901:34:1::0;-1:-1:-1;;;;;7971:15:1;;;7951:18;;;7944:43;8003:18;;;7996:34;;;21262:13:0::1;:30;::::0;::::1;::::0;7836:18:1;;21262:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21332:39;21356:10;21368:2;21332:23;:39::i;:::-;21382:8;;;;21075:325;21422:10;21436:1;21422:15;21418:264;;;21476:4;21470:2;:10;;:24;;;;;21490:4;21484:2;:10;;21470:24;21462:59;;;::::0;-1:-1:-1;;;21462:59:0;;12626:2:1;21462:59:0::1;::::0;::::1;12608:21:1::0;12665:2;12645:18;;;12638:30;-1:-1:-1;;;12684:18:1;;;12677:52;12746:18;;21462:59:0::1;12598:172:1::0;21462:59:0::1;21544;::::0;-1:-1:-1;;;21544:59:0;;21575:10:::1;21544:59;::::0;::::1;7901:34:1::0;-1:-1:-1;;;;;7971:15:1;;;7951:18;;;7944:43;8003:18;;;7996:34;;;21544:13:0::1;:30;::::0;::::1;::::0;7836:18:1;;21544:59:0::1;7818:218:1::0;21418:264:0::1;20956:733;;;20989:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20956:733;;;;17691:1;20712:982:::0;;;;:::o;16455:192::-;16158:7;16185:6;-1:-1:-1;;;;;16185:6:0;5692:10;16253:23;16245:68;;;;-1:-1:-1;;;16245:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16544:22:0;::::1;16536:73;;;::::0;-1:-1:-1;;;16536:73:0;;11175:2:1;16536:73:0::1;::::0;::::1;11157:21:1::0;11214:2;11194:18;;;11187:30;11253:34;11233:18;;;11226:62;-1:-1:-1;;;11304:18:1;;;11297:36;11350:19;;16536:73:0::1;11147:228:1::0;16536:73:0::1;16620:19;16630:8;16620:9;:19::i;14200:174::-:0;14275:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;14275:29:0;-1:-1:-1;;;;;14275:29:0;;;;;;;;:24;;14329:23;14275:24;14329:14;:23::i;:::-;-1:-1:-1;;;;;14320:46:0;;;;;;;;;;;14200:174;;:::o;12077:348::-;12170:4;12025:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12025:16:0;12187:73;;;;-1:-1:-1;;;12187:73:0;;14436:2:1;12187:73:0;;;14418:21:1;14475:2;14455:18;;;14448:30;14514:34;14494:18;;;14487:62;-1:-1:-1;;;14565:18:1;;;14558:42;14617:19;;12187:73:0;14408:234:1;12187:73:0;12271:13;12287:23;12302:7;12287:14;:23::i;:::-;12271:39;;12340:5;-1:-1:-1;;;;;12329:16:0;:7;-1:-1:-1;;;;;12329:16:0;;:51;;;;12373:7;-1:-1:-1;;;;;12349:31:0;:20;12361:7;12349:11;:20::i;:::-;-1:-1:-1;;;;;12349:31:0;;12329:51;:87;;;-1:-1:-1;;;;;;10699:25:0;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12384:32;12321:96;12077:348;-1:-1:-1;;;;12077:348:0:o;13650:536::-;13809:4;-1:-1:-1;;;;;13782:31:0;:23;13797:7;13782:14;:23::i;:::-;-1:-1:-1;;;;;13782:31:0;;13774:85;;;;-1:-1:-1;;;13774:85:0;;17572:2:1;13774:85:0;;;17554:21:1;17611:2;17591:18;;;17584:30;17650:34;17630:18;;;17623:62;-1:-1:-1;;;17701:18:1;;;17694:39;17750:19;;13774:85:0;17544:231:1;13774:85:0;-1:-1:-1;;;;;13878:16:0;;13870:65;;;;-1:-1:-1;;;13870:65:0;;13326:2:1;13870:65:0;;;13308:21:1;13365:2;13345:18;;;13338:30;13404:34;13384:18;;;13377:62;-1:-1:-1;;;13455:18:1;;;13448:34;13499:19;;13870:65:0;13298:226:1;13870:65:0;14010:29;14027:1;14031:7;14010:8;:29::i;:::-;-1:-1:-1;;;;;14052:15:0;;;;;;:9;:15;;;;;:20;;14071:1;;14052:15;:20;;14071:1;;14052:20;:::i;:::-;;;;-1:-1:-1;;;;;;;14083:13:0;;;;;;:9;:13;;;;;:18;;14100:1;;14083:13;:18;;14100:1;;14083:18;:::i;:::-;;;;-1:-1:-1;;14112:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14112:21:0;-1:-1:-1;;;;;14112:21:0;;;;;;;;;14151:27;;14112:16;;14151:27;;;;;;;13650:536;;;:::o;18254:188::-;18335:55;;;;;;;;;;;;;;;;;18414:21;;18314:12;;18414:21;;18335:55;;18431:3;;18414:21;;:::i;:::-;;;;;;;;;;;;;18404:32;;;;;;18397:39;;;18254:188;;;:::o;19156:123::-;19231:22;19241:2;19245:7;19231:9;:22::i;:::-;19260:11;:13;;;:11;:13;;;:::i;:::-;;;;;;19156:123;;:::o;18911:146::-;18960:7;18980:8;-1:-1:-1;;;;;18972:22:0;19003:6;18972:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18959:55;;;19029:2;19021:30;;;;-1:-1:-1;;;19021:30:0;;11939:2:1;19021:30:0;;;11921:21:1;11978:2;11958:18;;;11951:30;-1:-1:-1;;;11997:18:1;;;11990:45;12052:18;;19021:30:0;11911:165:1;16655:173:0;16711:16;16730:6;;-1:-1:-1;;;;;16747:17:0;;;-1:-1:-1;;;;;;16747:17:0;;;;;;16780:40;;16730:6;;;;;;;16780:40;;16711:16;16780:40;16655:173;;:::o;11607:315::-;11764:28;11774:4;11780:2;11784:7;11764:9;:28::i;:::-;11811:48;11834:4;11840:2;11844:7;11853:5;11811:22;:48::i;:::-;11803:111;;;;-1:-1:-1;;;11803:111:0;;;;;;;:::i;18154:94::-;18206:13;18235:7;18228:14;;;;;:::i;5922:554::-;5978:13;6030:10;6026:53;;-1:-1:-1;;6057:10:0;;;;;;;;;;;;-1:-1:-1;;;6057:10:0;;;;;5922:554::o;6026:53::-;6104:5;6089:12;6145:78;6152:9;;6145:78;;6178:8;;;;:::i;:::-;;-1:-1:-1;6201:10:0;;-1:-1:-1;6209:2:0;6201:10;;:::i;:::-;;;6145:78;;;6233:19;6265:6;6255:17;;;;;;-1:-1:-1;;;6255:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:17:0;;6233:39;;6283:154;6290:10;;6283:154;;6317:11;6327:1;6317:11;;:::i;:::-;;-1:-1:-1;6386:10:0;6394:2;6386:5;:10;:::i;:::-;6373:24;;:2;:24;:::i;:::-;6360:39;;6343:6;6350;6343:14;;;;;;-1:-1:-1;;;6343:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;6343:56:0;;;;;;;;-1:-1:-1;6414:11:0;6423:2;6414:11;;:::i;:::-;;;6283:154;;12439:110;12515:26;12525:2;12529:7;12515:26;;;;;;;;;;;;:9;:26::i;14388:803::-;14543:4;-1:-1:-1;;;;;14564:13:0;;2106:20;2154:8;14560:624;;14600:72;;-1:-1:-1;;;14600:72:0;;-1:-1:-1;;;;;14600:36:0;;;;;:72;;5692:10;;14651:4;;14657:7;;14666:5;;14600:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14600:72:0;;;;;;;;-1:-1:-1;;14600:72:0;;;;;;;;;;;;:::i;:::-;;;14596:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14846:13:0;;14842:272;;14889:60;;-1:-1:-1;;;14889:60:0;;;;;;;:::i;14842:272::-;15064:6;15058:13;15049:6;15045:2;15041:15;15034:38;14596:533;-1:-1:-1;;;;;;14723:55:0;-1:-1:-1;;;14723:55:0;;-1:-1:-1;14716:62:0;;14560:624;-1:-1:-1;15168:4:0;14388:803;;;;;;:::o;12563:321::-;12693:18;12699:2;12703:7;12693:5;:18::i;:::-;12744:54;12775:1;12779:2;12783:7;12792:5;12744:22;:54::i;:::-;12722:154;;;;-1:-1:-1;;;12722:154:0;;;;;;;:::i;12898:382::-;-1:-1:-1;;;;;12978:16:0;;12970:61;;;;-1:-1:-1;;;12970:61:0;;16095:2:1;12970:61:0;;;16077:21:1;;;16114:18;;;16107:30;16173:34;16153:18;;;16146:62;16225:18;;12970:61:0;16067:182:1;12970:61:0;12001:4;12025:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12025:16:0;:30;13042:58;;;;-1:-1:-1;;;13042:58:0;;11582:2:1;13042:58:0;;;11564:21:1;11621:2;11601:18;;;11594:30;11660;11640:18;;;11633:58;11708:18;;13042:58:0;11554:178:1;13042:58:0;-1:-1:-1;;;;;13171:13:0;;;;;;:9;:13;;;;;:18;;13188:1;;13171:13;:18;;13188:1;;13171:18;:::i;:::-;;;;-1:-1:-1;;13200:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;13200:21:0;-1:-1:-1;;;;;13200:21:0;;;;;;;;13239:33;;13200:16;;;13239:33;;13200:16;;13239:33;12898:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:395::-;713:8;723:6;777:3;770:4;762:6;758:17;754:27;744:2;;802:8;792;785:26;744:2;-1:-1:-1;832:20:1;;875:18;864:30;;861:2;;;914:8;904;897:26;861:2;958:4;950:6;946:17;934:29;;1018:3;1011:4;1001:6;998:1;994:14;986:6;982:27;978:38;975:47;972:2;;;1035:1;1032;1025:12;972:2;734:311;;;;;:::o;1050:257::-;1109:6;1162:2;1150:9;1141:7;1137:23;1133:32;1130:2;;;1183:6;1175;1168:22;1130:2;1227:9;1214:23;1246:31;1271:5;1246:31;:::i;1312:261::-;1382:6;1435:2;1423:9;1414:7;1410:23;1406:32;1403:2;;;1456:6;1448;1441:22;1403:2;1493:9;1487:16;1512:31;1537:5;1512:31;:::i;1578:398::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1898:2:1;1883:18;;1870:32;1911:33;1870:32;1911:33;:::i;:::-;1963:7;1953:17;;;1665:311;;;;;:::o;1981:466::-;2058:6;2066;2074;2127:2;2115:9;2106:7;2102:23;2098:32;2095:2;;;2148:6;2140;2133:22;2095:2;2192:9;2179:23;2211:31;2236:5;2211:31;:::i;:::-;2261:5;-1:-1:-1;2318:2:1;2303:18;;2290:32;2331:33;2290:32;2331:33;:::i;:::-;2085:362;;2383:7;;-1:-1:-1;;;2437:2:1;2422:18;;;;2409:32;;2085:362::o;2452:824::-;2547:6;2555;2563;2571;2624:3;2612:9;2603:7;2599:23;2595:33;2592:2;;;2646:6;2638;2631:22;2592:2;2690:9;2677:23;2709:31;2734:5;2709:31;:::i;:::-;2759:5;-1:-1:-1;2816:2:1;2801:18;;2788:32;2829:33;2788:32;2829:33;:::i;:::-;2881:7;-1:-1:-1;2935:2:1;2920:18;;2907:32;;-1:-1:-1;2990:2:1;2975:18;;2962:32;3017:18;3006:30;;3003:2;;;3054:6;3046;3039:22;3003:2;3082:22;;3135:4;3127:13;;3123:27;-1:-1:-1;3113:2:1;;3169:6;3161;3154:22;3113:2;3197:73;3262:7;3257:2;3244:16;3239:2;3235;3231:11;3197:73;:::i;:::-;3187:83;;;2582:694;;;;;;;:::o;3281:436::-;3346:6;3354;3407:2;3395:9;3386:7;3382:23;3378:32;3375:2;;;3428:6;3420;3413:22;3375:2;3472:9;3459:23;3491:31;3516:5;3491:31;:::i;:::-;3541:5;-1:-1:-1;3598:2:1;3583:18;;3570:32;3640:15;;3633:23;3621:36;;3611:2;;3676:6;3668;3661:22;3722:325;3790:6;3798;3851:2;3839:9;3830:7;3826:23;3822:32;3819:2;;;3872:6;3864;3857:22;3819:2;3916:9;3903:23;3935:31;3960:5;3935:31;:::i;:::-;3985:5;4037:2;4022:18;;;;4009:32;;-1:-1:-1;;;3809:238:1:o;4052:803::-;4174:6;4182;4190;4198;4251:2;4239:9;4230:7;4226:23;4222:32;4219:2;;;4272:6;4264;4257:22;4219:2;4317:9;4304:23;4346:18;4387:2;4379:6;4376:14;4373:2;;;4408:6;4400;4393:22;4373:2;4452:70;4514:7;4505:6;4494:9;4490:22;4452:70;:::i;:::-;4541:8;;-1:-1:-1;4426:96:1;-1:-1:-1;4629:2:1;4614:18;;4601:32;;-1:-1:-1;4645:16:1;;;4642:2;;;4679:6;4671;4664:22;4642:2;;4723:72;4787:7;4776:8;4765:9;4761:24;4723:72;:::i;:::-;4209:646;;;;-1:-1:-1;4814:8:1;-1:-1:-1;;;;4209:646:1:o;4860:255::-;4918:6;4971:2;4959:9;4950:7;4946:23;4942:32;4939:2;;;4992:6;4984;4977:22;4939:2;5036:9;5023:23;5055:30;5079:5;5055:30;:::i;5120:259::-;5189:6;5242:2;5230:9;5221:7;5217:23;5213:32;5210:2;;;5263:6;5255;5248:22;5210:2;5300:9;5294:16;5319:30;5343:5;5319:30;:::i;5384:480::-;5453:6;5506:2;5494:9;5485:7;5481:23;5477:32;5474:2;;;5527:6;5519;5512:22;5474:2;5572:9;5559:23;5605:18;5597:6;5594:30;5591:2;;;5642:6;5634;5627:22;5591:2;5670:22;;5723:4;5715:13;;5711:27;-1:-1:-1;5701:2:1;;5757:6;5749;5742:22;5701:2;5785:73;5850:7;5845:2;5832:16;5827:2;5823;5819:11;5785:73;:::i;5869:190::-;5928:6;5981:2;5969:9;5960:7;5956:23;5952:32;5949:2;;;6002:6;5994;5987:22;5949:2;-1:-1:-1;6030:23:1;;5939:120;-1:-1:-1;5939:120:1:o;6064:437::-;6117:3;6155:5;6149:12;6182:6;6177:3;6170:19;6208:4;6237:2;6232:3;6228:12;6221:19;;6274:2;6267:5;6263:14;6295:3;6307:169;6321:6;6318:1;6315:13;6307:169;;;6382:13;;6370:26;;6416:12;;;;6451:15;;;;6343:1;6336:9;6307:169;;;-1:-1:-1;6492:3:1;;6125:376;-1:-1:-1;;;;;6125:376:1:o;6506:257::-;6547:3;6585:5;6579:12;6612:6;6607:3;6600:19;6628:63;6684:6;6677:4;6672:3;6668:14;6661:4;6654:5;6650:16;6628:63;:::i;:::-;6745:2;6724:15;-1:-1:-1;;6720:29:1;6711:39;;;;6752:4;6707:50;;6555:208;-1:-1:-1;;6555:208:1:o;6768:470::-;6947:3;6985:6;6979:13;7001:53;7047:6;7042:3;7035:4;7027:6;7023:17;7001:53;:::i;:::-;7117:13;;7076:16;;;;7139:57;7117:13;7076:16;7173:4;7161:17;;7139:57;:::i;:::-;7212:20;;6955:283;-1:-1:-1;;;;6955:283:1:o;8041:488::-;-1:-1:-1;;;;;8310:15:1;;;8292:34;;8362:15;;8357:2;8342:18;;8335:43;8409:2;8394:18;;8387:34;;;8457:3;8452:2;8437:18;;8430:31;;;8235:4;;8478:45;;8503:19;;8495:6;8478:45;:::i;:::-;8470:53;8244:285;-1:-1:-1;;;;;;8244:285:1:o;8534:465::-;8791:2;8780:9;8773:21;8754:4;8817:56;8869:2;8858:9;8854:18;8846:6;8817:56;:::i;:::-;8921:9;8913:6;8909:22;8904:2;8893:9;8889:18;8882:50;8949:44;8986:6;8978;8949:44;:::i;:::-;8941:52;8763:236;-1:-1:-1;;;;;8763:236:1:o;9601:219::-;9750:2;9739:9;9732:21;9713:4;9770:44;9810:2;9799:9;9795:18;9787:6;9770:44;:::i;9825:381::-;10022:2;10011:9;10004:21;9985:4;10048:44;10088:2;10077:9;10073:18;10065:6;10048:44;:::i;:::-;10140:9;10132:6;10128:22;10123:2;10112:9;10108:18;10101:50;10168:32;10193:6;10185;10168:32;:::i;10554:414::-;10756:2;10738:21;;;10795:2;10775:18;;;10768:30;10834:34;10829:2;10814:18;;10807:62;-1:-1:-1;;;10900:2:1;10885:18;;10878:48;10958:3;10943:19;;10728:240::o;13883:346::-;14085:2;14067:21;;;14124:2;14104:18;;;14097:30;-1:-1:-1;;;14158:2:1;14143:18;;14136:52;14220:2;14205:18;;14057:172::o;17009:356::-;17211:2;17193:21;;;17230:18;;;17223:30;17289:34;17284:2;17269:18;;17262:62;17356:2;17341:18;;17183:182::o;19654:413::-;19856:2;19838:21;;;19895:2;19875:18;;;19868:30;19934:34;19929:2;19914:18;;19907:62;-1:-1:-1;;;20000:2:1;19985:18;;19978:47;20057:3;20042:19;;19828:239::o;20589:128::-;20629:3;20660:1;20656:6;20653:1;20650:13;20647:2;;;20666:18;;:::i;:::-;-1:-1:-1;20702:9:1;;20637:80::o;20722:120::-;20762:1;20788;20778:2;;20793:18;;:::i;:::-;-1:-1:-1;20827:9:1;;20768:74::o;20847:168::-;20887:7;20953:1;20949;20945:6;20941:14;20938:1;20935:21;20930:1;20923:9;20916:17;20912:45;20909:2;;;20960:18;;:::i;:::-;-1:-1:-1;21000:9:1;;20899:116::o;21020:125::-;21060:4;21088:1;21085;21082:8;21079:2;;;21093:18;;:::i;:::-;-1:-1:-1;21130:9:1;;21069:76::o;21150:258::-;21222:1;21232:113;21246:6;21243:1;21240:13;21232:113;;;21322:11;;;21316:18;21303:11;;;21296:39;21268:2;21261:10;21232:113;;;21363:6;21360:1;21357:13;21354:2;;;-1:-1:-1;;21398:1:1;21380:16;;21373:27;21203:205::o;21413:380::-;21492:1;21488:12;;;;21535;;;21556:2;;21610:4;21602:6;21598:17;21588:27;;21556:2;21663;21655:6;21652:14;21632:18;21629:38;21626:2;;;21709:10;21704:3;21700:20;21697:1;21690:31;21744:4;21741:1;21734:15;21772:4;21769:1;21762:15;21626:2;;21468:325;;;:::o;21798:135::-;21837:3;-1:-1:-1;;21858:17:1;;21855:2;;;21878:18;;:::i;:::-;-1:-1:-1;21925:1:1;21914:13;;21845:88::o;21938:112::-;21970:1;21996;21986:2;;22001:18;;:::i;:::-;-1:-1:-1;22035:9:1;;21976:74::o;22055:127::-;22116:10;22111:3;22107:20;22104:1;22097:31;22147:4;22144:1;22137:15;22171:4;22168:1;22161:15;22187:127;22248:10;22243:3;22239:20;22236:1;22229:31;22279:4;22276:1;22269:15;22303:4;22300:1;22293:15;22319:127;22380:10;22375:3;22371:20;22368:1;22361:31;22411:4;22408:1;22401:15;22435:4;22432:1;22425:15;22451:131;-1:-1:-1;;;;;22526:31:1;;22516:42;;22506:2;;22572:1;22569;22562:12;22587:131;-1:-1:-1;;;;;;22661:32:1;;22651:43;;22641:2;;22708:1;22705;22698:12

Swarm Source

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