ETH Price: $2,633.16 (-0.35%)

Token

Galactic Tigerz (GT)
 

Overview

Max Total Supply

245 GT

Holders

141

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 GT
0x31047ba37a9df3af44884f8e787321e4c0ba8a6f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GalacticTigerz

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-15
*/

// File: contracts/GalacticTigerz.sol



// File: @openzeppelin/contracts/utils/Counters.sol





// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)



pragma solidity >=0.7.0 <0.9.0;



library Counters {

    struct Counter {



        uint256 _value; // default: 0

    }



    function current(Counter storage counter) internal view returns (uint256) {

        return counter._value;

    }



    function increment(Counter storage counter) internal {

        unchecked {

            counter._value += 1;

        }

    }



    function decrement(Counter storage counter) internal {

        uint256 value = counter._value;

        require(value > 0, "Counter: decrement overflow");

        unchecked {

            counter._value = value - 1;

        }

    }



    function reset(Counter storage counter) internal {

        counter._value = 0;

    }

}







pragma solidity >=0.7.0 <0.9.0;



/**

 * @dev String operations.

 */

library Strings {

    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";



    /**

     * @dev Converts a `uint256` to its ASCII `string` decimal representation.

     */

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

    }



    /**

     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.

     */

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

    }



    /**

     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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);

    }

}



// File: @openzeppelin/contracts/utils/Context.sol





// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)



pragma solidity >=0.7.0 <0.9.0;



abstract contract Context {

    function _msgSender() internal view virtual returns (address) {

        return msg.sender;

    }



    function _msgData() internal view virtual returns (bytes calldata) {

        return msg.data;

    }

}



// File: @openzeppelin/contracts/access/Ownable.sol





// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)



pragma solidity >=0.7.0 <0.9.0;





abstract contract Ownable is Context {

    address private _owner;



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



    /**

     * @dev Initializes the contract setting the deployer as the initial owner.

     */

    constructor() {

        _transferOwnership(_msgSender());

    }



    /**

     * @dev Returns the address of the current owner.

     */

    function owner() public view virtual returns (address) {

        return _owner;

    }



    /**

     * @dev Throws if called by any account other than the owner.

     */

    modifier onlyOwner() {

        require(owner() == _msgSender(), "Ownable: caller is not the owner");

        _;

    }



    function renounceOwnership() public virtual onlyOwner {

        _transferOwnership(address(0));

    }



    /**

     * @dev Transfers ownership of the contract to a new account (`newOwner`).

     * Can only be called by the current owner.

     */

    function transferOwnership(address newOwner) public virtual onlyOwner {

        require(newOwner != address(0), "Ownable: new owner is the zero address");

        _transferOwnership(newOwner);

    }



    function _transferOwnership(address newOwner) internal virtual {

        address oldOwner = _owner;

        _owner = newOwner;

        emit OwnershipTransferred(oldOwner, newOwner);

    }

}



// File: @openzeppelin/contracts/utils/Address.sol





// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)



pragma solidity >=0.7.0 <0.9.0;



/**

 * @dev Collection of functions related to the address type

 */

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

    }



    /**

     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with

     * `errorMessage` as a fallback revert reason when `target` reverts.

     *

     * _Available since v3.1._

     */

    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

    ) internal pure returns (bytes memory) {

        if (success) {

            return returndata;

        } else {

            // Look for revert reason and bubble it up if present

            if (returndata.length > 0) {

                // The easiest way to bubble the revert reason is using memory via assembly



                assembly {

                    let returndata_size := mload(returndata)

                    revert(add(32, returndata), returndata_size)

                }

            } else {

                revert(errorMessage);

            }

        }

    }

}



// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol





// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)



pragma solidity >=0.7.0 <0.9.0;



interface IERC721Receiver {



    function onERC721Received(

        address operator,

        address from,

        uint256 tokenId,

        bytes calldata data

    ) external returns (bytes4);

}







pragma solidity >=0.7.0 <0.9.0;





interface IERC165 {



    function supportsInterface(bytes4 interfaceId) external view returns (bool);

}





pragma solidity >=0.7.0 <0.9.0;





abstract contract ERC165 is IERC165 {

    /**

     * @dev See {IERC165-supportsInterface}.

     */

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {

        return interfaceId == type(IERC165).interfaceId;

    }

}







pragma solidity >=0.7.0 <0.9.0;





/**

 * @dev Required interface of an ERC721 compliant contract.

 */

interface IERC721 is IERC165 {

    /**

     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.

     */

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);



    /**

     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.

     */

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);



    /**

     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.

     */

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);



    /**

     * @dev Returns the number of tokens in ``owner``'s account.

     */

    function balanceOf(address owner) external view returns (uint256 balance);



    function ownerOf(uint256 tokenId) external view returns (address owner);



    function safeTransferFrom(

        address from,

        address to,

        uint256 tokenId

    ) external;





    function transferFrom(

        address from,

        address to,

        uint256 tokenId

    ) external;





    function approve(address to, uint256 tokenId) external;





    function getApproved(uint256 tokenId) external view returns (address operator);



    function setApprovalForAll(address operator, bool _approved) external;



    function isApprovedForAll(address owner, address operator) external view returns (bool);



    

    function safeTransferFrom(

        address from,

        address to,

        uint256 tokenId,

        bytes calldata data

    ) external;

}







pragma solidity >=0.7.0 <0.9.0;







interface IERC721Metadata is IERC721 {

    /**

     * @dev Returns the token collection name.

     */

    function name() external view returns (string memory);



    /**

     * @dev Returns the token collection symbol.

     */

    function symbol() external view returns (string memory);



    /**

     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.

     */

    function tokenURI(uint256 tokenId) external view returns (string memory);

}





pragma solidity >=0.7.0 <0.9.0;





contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {

    using Address for address;

    using Strings for uint256;



    // Token name

    string private _name;



    // Token symbol

    string private _symbol;



    // Mapping from token ID to owner address

    mapping(uint256 => address) private _owners;



    // Mapping owner address to token count

    mapping(address => uint256) private _balances;



    // Mapping from token ID to approved address

    mapping(uint256 => address) private _tokenApprovals;



    // Mapping from owner to operator approvals

    mapping(address => mapping(address => bool)) private _operatorApprovals;



    /**

     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.

     */

    constructor(string memory name_, string memory symbol_) {

        _name = name_;

        _symbol = symbol_;

    }



    /**

     * @dev See {IERC165-supportsInterface}.

     */

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {

        return

            interfaceId == type(IERC721).interfaceId ||

            interfaceId == type(IERC721Metadata).interfaceId ||

            super.supportsInterface(interfaceId);

    }



    /**

     * @dev See {IERC721-balanceOf}.

     */

    function balanceOf(address owner) public view virtual override returns (uint256) {

        require(owner != address(0), "ERC721: balance query for the zero address");

        return _balances[owner];

    }



    /**

     * @dev See {IERC721-ownerOf}.

     */

    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;

    }



    /**

     * @dev See {IERC721Metadata-name}.

     */

    function name() public view virtual override returns (string memory) {

        return _name;

    }



    /**

     * @dev See {IERC721Metadata-symbol}.

     */

    function symbol() public view virtual override returns (string memory) {

        return _symbol;

    }



    /**

     * @dev See {IERC721Metadata-tokenURI}.

     */

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

    }



    /**

     * @dev See {IERC721-approve}.

     */

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

    }



    /**

     * @dev See {IERC721-getApproved}.

     */

    function getApproved(uint256 tokenId) public view virtual override returns (address) {

        require(_exists(tokenId), "ERC721: approved query for nonexistent token");



        return _tokenApprovals[tokenId];

    }



    /**

     * @dev See {IERC721-setApprovalForAll}.

     */

    function setApprovalForAll(address operator, bool approved) public virtual override {

        _setApprovalForAll(_msgSender(), operator, approved);

    }



    /**

     * @dev See {IERC721-isApprovedForAll}.

     */

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {

        return _operatorApprovals[owner][operator];

    }



    /**

     * @dev See {IERC721-transferFrom}.

     */

    function transferFrom(

        address from,

        address to,

        uint256 tokenId

    ) public virtual override {

        //solhint-disable-next-line max-line-length

        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");



        _transfer(from, to, tokenId);

    }



    /**

     * @dev See {IERC721-safeTransferFrom}.

     */

    function safeTransferFrom(

        address from,

        address to,

        uint256 tokenId

    ) public virtual override {

        safeTransferFrom(from, to, tokenId, "");

    }



    /**

     * @dev See {IERC721-safeTransferFrom}.

     */

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



        // Clear approvals

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



        // Clear approvals from the previous owner

        _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 _setApprovalForAll(

        address owner,

        address operator,

        bool approved

    ) internal virtual {

        require(owner != operator, "ERC721: approve to caller");

        _operatorApprovals[owner][operator] = approved;

        emit ApprovalForAll(owner, operator, approved);

    }





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

}





// File: contracts/GalacticTigerz.sol







pragma solidity >=0.7.0 <0.9.0;



contract GalacticTigerz is ERC721, Ownable {

  using Strings for uint256;

  using Counters for Counters.Counter;



  Counters.Counter private supply;



  string public uriPrefix = "";

  string public uriSuffix = ".json";

  string public hiddenMetadataUri;

  

  uint256 public cost = 0.098 ether;

  uint256 public maxSupply = 444;

  uint256 public maxMintAmountPerTx = 1;

  uint256 public nftPerAddressLimit = 1;



  bool public paused = true;

  bool public onlyWhitelisted = true;

  bool public allowlist = true;

  bool public revealed = false;



  address[] public whitelistedAddresses ;

  mapping(address => uint256) public addressMintedBalance;



  constructor() ERC721("Galactic Tigerz", "GT") {

    setHiddenMetadataUri("ipfs://Qmb568Dcm7HRJYv1esXKj753W1rkCJB8Nhb7fYKxtFwgdz/hidden.json");

  }



  modifier mintCompliance(uint256 _mintAmount) {

    require(_mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!");

    require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!");

    _;

  }



  function totalSupply() public view returns (uint256) {

    return supply.current();

  }



  function mint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) {

    require(!paused, "The contract is paused!");

    require(!onlyWhitelisted, "Only Whitelisted members can mint!");

    require(msg.value >= cost * _mintAmount, "Insufficient funds!");



    _mintLoop(msg.sender, _mintAmount);

  }



  function WhiteListMint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) {

    require(!paused, "The contract is paused!");

    //require(onlyWhitelisted, "Public mint started!");

    require(isWhitelisted(msg.sender), "user is not whitelisted");

    require(msg.value >= cost * _mintAmount, "Insufficient funds!");



    _mintLoop(msg.sender, _mintAmount);

  }

  

  function mintForAddress(uint256 _mintAmount, address _receiver) public mintCompliance(_mintAmount) onlyOwner {

    _mintLoop2(_receiver, _mintAmount);

  }



  function isWhitelisted(address _user) public view returns (bool) {

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

      if (whitelistedAddresses[i] == _user) {

          return true;

      }

    }

    return false;

  }



  function walletOfOwner(address _owner)

    public

    view

    returns (uint256[] memory)

  {

    uint256 ownerTokenCount = balanceOf(_owner);

    uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);

    uint256 currentTokenId = 1;

    uint256 ownedTokenIndex = 0;



    while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) {

      address currentTokenOwner = ownerOf(currentTokenId);



      if (currentTokenOwner == _owner) {

        ownedTokenIds[ownedTokenIndex] = currentTokenId;



        ownedTokenIndex++;

      }



      currentTokenId++;

    }



    return ownedTokenIds;

  }



  function tokenURI(uint256 _tokenId)

    public

    view

    virtual

    override

    returns (string memory)

  {

    require(

      _exists(_tokenId),

      "ERC721Metadata: URI query for nonexistent token"

    );



    if (revealed == false) {

      return hiddenMetadataUri;

    }



    string memory currentBaseURI = _baseURI();

    return bytes(currentBaseURI).length > 0

        ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), uriSuffix))

        : "";

  }



  function setRevealed(bool _state) public onlyOwner {

    revealed = _state;

  }



  function setCost(uint256 _cost) public onlyOwner {

    cost = _cost;

  }



  function setMaxMintAmountPerTx(uint256 _maxMintAmountPerTx) public onlyOwner {

    maxMintAmountPerTx = _maxMintAmountPerTx;

  }



  function setnftPerAddressLimit(uint256 _nftPerAddressLimit) public onlyOwner {

    nftPerAddressLimit = _nftPerAddressLimit;

  }



  function setHiddenMetadataUri(string memory _hiddenMetadataUri) public onlyOwner {

    hiddenMetadataUri = _hiddenMetadataUri;

  }



  function setUriPrefix(string memory _uriPrefix) public onlyOwner {

    uriPrefix = _uriPrefix;

  }



  function setUriSuffix(string memory _uriSuffix) public onlyOwner {

    uriSuffix = _uriSuffix;

  }



  function setPaused(bool _state) public onlyOwner {

    paused = _state;

  }



  function setOnlyWhitelisted(bool _state) public onlyOwner {

    onlyWhitelisted = _state;

  }

  function setAllowList() public onlyOwner {

      allowlist = false;

  }



  function whitelistUsers(address[] calldata _users) public onlyOwner {

    delete whitelistedAddresses;

    whitelistedAddresses = _users;

  }





  function withdraw() public onlyOwner {

    // =============================================================================

    (bool os, ) = payable(owner()).call{value: address(this).balance}("");

    require(os);

    // =============================================================================

  }



  function _mintLoop(address _receiver, uint256 _mintAmount) internal {



    uint256 ownerMintedCount = addressMintedBalance[msg.sender];

    require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max NFT per address exceeded");

    

    for (uint256 i = 0; i < _mintAmount; i++) {

      supply.increment();

      addressMintedBalance[msg.sender]++;

      _safeMint(_receiver, supply.current());

    }

  }



  function _mintLoop2(address _receiver, uint256 _mintAmount) internal {

    for (uint256 i = 0; i < _mintAmount; i++) {

      supply.increment();

      _safeMint(_receiver, supply.current());

    }

  }



  function _baseURI() internal view virtual override returns (string memory) {

    return uriPrefix;

  }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"uint256","name":"_mintAmount","type":"uint256"}],"name":"WhiteListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"setAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenMetadataUri","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftPerAddressLimit","type":"uint256"}],"name":"setnftPerAddressLimit","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":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040819052600060808190526200001b9160089162000203565b5060408051808201909152600580825264173539b7b760d91b60209092019182526200004a9160099162000203565b5067015c2a7b13fd0000600b556101bc600c556001600d819055600e55600f805463ffffffff1916620101011790553480156200008657600080fd5b50604080518082018252600f81526e23b0b630b1ba34b1902a34b3b2b93d60891b60208083019182528351808501909452600284526111d560f21b908401528151919291620000d89160009162000203565b508051620000ee90600190602084019062000203565b5050506200010b620001056200013560201b60201c565b62000139565b6200012f60405180608001604052806041815260200162002bd5604191396200018b565b620002e6565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620001ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001ff90600a90602084019062000203565b5050565b8280546200021190620002a9565b90600052602060002090601f01602090048101928262000235576000855562000280565b82601f106200025057805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200028057825182559160200191906001019062000263565b506200028e92915062000292565b5090565b5b808211156200028e576000815560010162000293565b600181811c90821680620002be57607f821691505b60208210811415620002e057634e487b7160e01b600052602260045260246000fd5b50919050565b6128df80620002f66000396000f3fe6080604052600436106102875760003560e01c80636352211e1161015a578063b071401b116100c1578063d5abeb011161007a578063d5abeb011461076d578063e0a8085314610783578063e985e9c5146107a3578063edec5f27146107ec578063efbd73f41461080c578063f2fde38b1461082c57600080fd5b8063b071401b146106c4578063b88d4fde146106e4578063ba4e5c4914610704578063ba7d2c7614610724578063c1c880e31461073a578063c87b56dd1461074d57600080fd5b806394354fd01161011357806394354fd01461063257806395d89b41146106485780639c70b5121461065d578063a0712d681461067c578063a22cb4651461068f578063a45ba8e7146106af57600080fd5b80636352211e1461057f57806370a082311461059f578063715018a6146105bf5780637ec4a659146105d45780638da5cb5b146105f45780638f14085d1461061257600080fd5b80632b47da52116101fe57806344a0d68a116101b757806344a0d68a146104da5780634fdd43cb146104fa578063518302271461051a5780635503a0e81461053b5780635c975abb1461055057806362b99ad41461056a57600080fd5b80632b47da52146104185780633af32abf146104385780633c952764146104585780633ccfd60b1461047857806342842e0e1461048d578063438b6300146104ad57600080fd5b806313faede61161025057806313faede61461035257806316ba10e01461037657806316c38b3c1461039657806318160ddd146103b657806318cae269146103cb57806323b872dd146103f857600080fd5b8062ce7f541461028c57806301ffc9a7146102a357806306fdde03146102d8578063081812fc146102fa578063095ea7b314610332575b600080fd5b34801561029857600080fd5b506102a161084c565b005b3480156102af57600080fd5b506102c36102be3660046123cc565b61088d565b60405190151581526020015b60405180910390f35b3480156102e457600080fd5b506102ed6108df565b6040516102cf91906125fc565b34801561030657600080fd5b5061031a61031536600461244f565b610971565b6040516001600160a01b0390911681526020016102cf565b34801561033e57600080fd5b506102a161034d366004612312565b610a06565b34801561035e57600080fd5b50610368600b5481565b6040519081526020016102cf565b34801561038257600080fd5b506102a1610391366004612406565b610b1c565b3480156103a257600080fd5b506102a16103b13660046123b1565b610b5d565b3480156103c257600080fd5b50610368610b9a565b3480156103d757600080fd5b506103686103e63660046121e2565b60116020526000908152604090205481565b34801561040457600080fd5b506102a1610413366004612230565b610baa565b34801561042457600080fd5b50600f546102c39062010000900460ff1681565b34801561044457600080fd5b506102c36104533660046121e2565b610bdb565b34801561046457600080fd5b506102a16104733660046123b1565b610c45565b34801561048457600080fd5b506102a1610c89565b34801561049957600080fd5b506102a16104a8366004612230565b610d27565b3480156104b957600080fd5b506104cd6104c83660046121e2565b610d42565b6040516102cf91906125b8565b3480156104e657600080fd5b506102a16104f536600461244f565b610e23565b34801561050657600080fd5b506102a1610515366004612406565b610e52565b34801561052657600080fd5b50600f546102c3906301000000900460ff1681565b34801561054757600080fd5b506102ed610e8f565b34801561055c57600080fd5b50600f546102c39060ff1681565b34801561057657600080fd5b506102ed610f1d565b34801561058b57600080fd5b5061031a61059a36600461244f565b610f2a565b3480156105ab57600080fd5b506103686105ba3660046121e2565b610fa1565b3480156105cb57600080fd5b506102a1611028565b3480156105e057600080fd5b506102a16105ef366004612406565b61105e565b34801561060057600080fd5b506006546001600160a01b031661031a565b34801561061e57600080fd5b506102a161062d36600461244f565b61109b565b34801561063e57600080fd5b50610368600d5481565b34801561065457600080fd5b506102ed6110ca565b34801561066957600080fd5b50600f546102c390610100900460ff1681565b6102a161068a36600461244f565b6110d9565b34801561069b57600080fd5b506102a16106aa3660046122e8565b61124a565b3480156106bb57600080fd5b506102ed611255565b3480156106d057600080fd5b506102a16106df36600461244f565b611262565b3480156106f057600080fd5b506102a16106ff36600461226c565b611291565b34801561071057600080fd5b5061031a61071f36600461244f565b6112c9565b34801561073057600080fd5b50610368600e5481565b6102a161074836600461244f565b6112f3565b34801561075957600080fd5b506102ed61076836600461244f565b6113f9565b34801561077957600080fd5b50610368600c5481565b34801561078f57600080fd5b506102a161079e3660046123b1565b61157a565b3480156107af57600080fd5b506102c36107be3660046121fd565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107f857600080fd5b506102a161080736600461233c565b6115c2565b34801561081857600080fd5b506102a1610827366004612468565b611604565b34801561083857600080fd5b506102a16108473660046121e2565b61169c565b6006546001600160a01b0316331461087f5760405162461bcd60e51b81526004016108769061268f565b60405180910390fd5b600f805462ff000019169055565b60006001600160e01b031982166380ac58cd60e01b14806108be57506001600160e01b03198216635b5e139f60e01b145b806108d957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108ee906127d1565b80601f016020809104026020016040519081016040528092919081815260200182805461091a906127d1565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109ea5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610876565b506000908152600460205260409020546001600160a01b031690565b6000610a1182610f2a565b9050806001600160a01b0316836001600160a01b03161415610a7f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610876565b336001600160a01b0382161480610a9b5750610a9b81336107be565b610b0d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610876565b610b178383611734565b505050565b6006546001600160a01b03163314610b465760405162461bcd60e51b81526004016108769061268f565b8051610b59906009906020840190612036565b5050565b6006546001600160a01b03163314610b875760405162461bcd60e51b81526004016108769061268f565b600f805460ff1916911515919091179055565b6000610ba560075490565b905090565b610bb433826117a2565b610bd05760405162461bcd60e51b8152600401610876906126f2565b610b17838383611899565b6000805b601054811015610c3c57826001600160a01b031660108281548110610c0657610c06612867565b6000918252602090912001546001600160a01b03161415610c2a5750600192915050565b80610c348161280c565b915050610bdf565b50600092915050565b6006546001600160a01b03163314610c6f5760405162461bcd60e51b81526004016108769061268f565b600f80549115156101000261ff0019909216919091179055565b6006546001600160a01b03163314610cb35760405162461bcd60e51b81526004016108769061268f565b6000610cc76006546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610d11576040519150601f19603f3d011682016040523d82523d6000602084013e610d16565b606091505b5050905080610d2457600080fd5b50565b610b1783838360405180602001604052806000815250611291565b60606000610d4f83610fa1565b905060008167ffffffffffffffff811115610d6c57610d6c61287d565b604051908082528060200260200182016040528015610d95578160200160208202803683370190505b509050600160005b8381108015610dae5750600c548211155b15610e19576000610dbe83610f2a565b9050866001600160a01b0316816001600160a01b03161415610e065782848381518110610ded57610ded612867565b602090810291909101015281610e028161280c565b9250505b82610e108161280c565b93505050610d9d565b5090949350505050565b6006546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016108769061268f565b600b55565b6006546001600160a01b03163314610e7c5760405162461bcd60e51b81526004016108769061268f565b8051610b5990600a906020840190612036565b60098054610e9c906127d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906127d1565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60088054610e9c906127d1565b6000818152600260205260408120546001600160a01b0316806108d95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610876565b60006001600160a01b03821661100c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610876565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146110525760405162461bcd60e51b81526004016108769061268f565b61105c6000611a39565b565b6006546001600160a01b031633146110885760405162461bcd60e51b81526004016108769061268f565b8051610b59906008906020840190612036565b6006546001600160a01b031633146110c55760405162461bcd60e51b81526004016108769061268f565b600e55565b6060600180546108ee906127d1565b806000811180156110ec5750600d548111155b6111085760405162461bcd60e51b815260040161087690612661565b600c548161111560075490565b61111f9190612743565b111561113d5760405162461bcd60e51b8152600401610876906126c4565b600f5460ff161561118a5760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610876565b600f54610100900460ff16156111ed5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c792057686974656c6973746564206d656d626572732063616e206d696e604482015261742160f01b6064820152608401610876565b81600b546111fb919061276f565b3410156112405760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610876565b610b593383611a8b565b610b59338383611b53565b600a8054610e9c906127d1565b6006546001600160a01b0316331461128c5760405162461bcd60e51b81526004016108769061268f565b600d55565b61129b33836117a2565b6112b75760405162461bcd60e51b8152600401610876906126f2565b6112c384848484611c22565b50505050565b601081815481106112d957600080fd5b6000918252602090912001546001600160a01b0316905081565b806000811180156113065750600d548111155b6113225760405162461bcd60e51b815260040161087690612661565b600c548161132f60075490565b6113399190612743565b11156113575760405162461bcd60e51b8152600401610876906126c4565b600f5460ff16156113a45760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610876565b6113ad33610bdb565b6111ed5760405162461bcd60e51b815260206004820152601760248201527f75736572206973206e6f742077686974656c69737465640000000000000000006044820152606401610876565b6000818152600260205260409020546060906001600160a01b03166114785760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610876565b600f546301000000900460ff1661151b57600a8054611496906127d1565b80601f01602080910402602001604051908101604052809291908181526020018280546114c2906127d1565b801561150f5780601f106114e45761010080835404028352916020019161150f565b820191906000526020600020905b8154815290600101906020018083116114f257829003601f168201915b50505050509050919050565b6000611525611c55565b905060008151116115455760405180602001604052806000815250611573565b8061154f84611c64565b6009604051602001611563939291906124b7565b6040516020818303038152906040525b9392505050565b6006546001600160a01b031633146115a45760405162461bcd60e51b81526004016108769061268f565b600f805491151563010000000263ff00000019909216919091179055565b6006546001600160a01b031633146115ec5760405162461bcd60e51b81526004016108769061268f565b6115f8601060006120ba565b610b17601083836120d8565b816000811180156116175750600d548111155b6116335760405162461bcd60e51b815260040161087690612661565b600c548161164060075490565b61164a9190612743565b11156116685760405162461bcd60e51b8152600401610876906126c4565b6006546001600160a01b031633146116925760405162461bcd60e51b81526004016108769061268f565b610b178284611d62565b6006546001600160a01b031633146116c65760405162461bcd60e51b81526004016108769061268f565b6001600160a01b03811661172b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b610d2481611a39565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176982610f2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661181b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610876565b600061182683610f2a565b9050806001600160a01b0316846001600160a01b031614806118615750836001600160a01b031661185684610971565b6001600160a01b0316145b8061189157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166118ac82610f2a565b6001600160a01b0316146119145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610876565b6001600160a01b0382166119765760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610876565b611981600082611734565b6001600160a01b03831660009081526003602052604081208054600192906119aa90849061278e565b90915550506001600160a01b03821660009081526003602052604081208054600192906119d8908490612743565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33600090815260116020526040902054600e54611aa88383612743565b1115611af65760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401610876565b60005b828110156112c357611b0f600780546001019055565b336000908152601160205260408120805491611b2a8361280c565b9190505550611b4184611b3c60075490565b611d9a565b80611b4b8161280c565b915050611af9565b816001600160a01b0316836001600160a01b03161415611bb55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610876565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c2d848484611899565b611c3984848484611db4565b6112c35760405162461bcd60e51b81526004016108769061260f565b6060600880546108ee906127d1565b606081611c885750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cb25780611c9c8161280c565b9150611cab9050600a8361275b565b9150611c8c565b60008167ffffffffffffffff811115611ccd57611ccd61287d565b6040519080825280601f01601f191660200182016040528015611cf7576020820181803683370190505b5090505b841561189157611d0c60018361278e565b9150611d19600a86612827565b611d24906030612743565b60f81b818381518110611d3957611d39612867565b60200101906001600160f81b031916908160001a905350611d5b600a8661275b565b9450611cfb565b60005b81811015610b1757611d7b600780546001019055565b611d8883611b3c60075490565b80611d928161280c565b915050611d65565b610b59828260405180602001604052806000815250611ec1565b60006001600160a01b0384163b15611eb657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611df890339089908890889060040161257b565b602060405180830381600087803b158015611e1257600080fd5b505af1925050508015611e42575060408051601f3d908101601f19168201909252611e3f918101906123e9565b60015b611e9c573d808015611e70576040519150601f19603f3d011682016040523d82523d6000602084013e611e75565b606091505b508051611e945760405162461bcd60e51b81526004016108769061260f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611891565b506001949350505050565b611ecb8383611ef4565b611ed86000848484611db4565b610b175760405162461bcd60e51b81526004016108769061260f565b6001600160a01b038216611f4a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610876565b6000818152600260205260409020546001600160a01b031615611faf5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610876565b6001600160a01b0382166000908152600360205260408120805460019290611fd8908490612743565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612042906127d1565b90600052602060002090601f01602090048101928261206457600085556120aa565b82601f1061207d57805160ff19168380011785556120aa565b828001600101855582156120aa579182015b828111156120aa57825182559160200191906001019061208f565b506120b692915061212b565b5090565b5080546000825590600052602060002090810190610d24919061212b565b8280548282559060005260206000209081019282156120aa579160200282015b828111156120aa5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906120f8565b5b808211156120b6576000815560010161212c565b600067ffffffffffffffff8084111561215b5761215b61287d565b604051601f8501601f19908116603f011681019082821181831017156121835761218361287d565b8160405280935085815286868601111561219c57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146121cd57600080fd5b919050565b803580151581146121cd57600080fd5b6000602082840312156121f457600080fd5b611573826121b6565b6000806040838503121561221057600080fd5b612219836121b6565b9150612227602084016121b6565b90509250929050565b60008060006060848603121561224557600080fd5b61224e846121b6565b925061225c602085016121b6565b9150604084013590509250925092565b6000806000806080858703121561228257600080fd5b61228b856121b6565b9350612299602086016121b6565b925060408501359150606085013567ffffffffffffffff8111156122bc57600080fd5b8501601f810187136122cd57600080fd5b6122dc87823560208401612140565b91505092959194509250565b600080604083850312156122fb57600080fd5b612304836121b6565b9150612227602084016121d2565b6000806040838503121561232557600080fd5b61232e836121b6565b946020939093013593505050565b6000806020838503121561234f57600080fd5b823567ffffffffffffffff8082111561236757600080fd5b818501915085601f83011261237b57600080fd5b81358181111561238a57600080fd5b8660208260051b850101111561239f57600080fd5b60209290920196919550909350505050565b6000602082840312156123c357600080fd5b611573826121d2565b6000602082840312156123de57600080fd5b813561157381612893565b6000602082840312156123fb57600080fd5b815161157381612893565b60006020828403121561241857600080fd5b813567ffffffffffffffff81111561242f57600080fd5b8201601f8101841361244057600080fd5b61189184823560208401612140565b60006020828403121561246157600080fd5b5035919050565b6000806040838503121561247b57600080fd5b82359150612227602084016121b6565b600081518084526124a38160208601602086016127a5565b601f01601f19169290920160200192915050565b6000845160206124ca8285838a016127a5565b8551918401916124dd8184848a016127a5565b8554920191600090600181811c90808316806124fa57607f831692505b85831081141561251857634e487b7160e01b85526022600452602485fd5b80801561252c576001811461253d5761256a565b60ff1985168852838801955061256a565b60008b81526020902060005b858110156125625781548a820152908401908801612549565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906125ae9083018461248b565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156125f0578351835292840192918401916001016125d4565b50909695505050505050565b602081526000611573602083018461248b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260149082015273496e76616c6964206d696e7420616d6f756e742160601b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601490820152734d617820737570706c792065786365656465642160601b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156127565761275661283b565b500190565b60008261276a5761276a612851565b500490565b60008160001904831182151516156127895761278961283b565b500290565b6000828210156127a0576127a061283b565b500390565b60005b838110156127c05781810151838201526020016127a8565b838111156112c35750506000910152565b600181811c908216806127e557607f821691505b6020821081141561280657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128205761282061283b565b5060010190565b60008261283657612836612851565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610d2457600080fdfea26469706673582212209657fe3358d3a7cf975b003afab5abefb1e2ca534f8e60368f0de5d6c47d17ae64736f6c63430008070033697066733a2f2f516d6235363844636d3748524a5976316573584b6a3735335731726b434a42384e68623766594b7874467767647a2f68696464656e2e6a736f6e

Deployed Bytecode

0x6080604052600436106102875760003560e01c80636352211e1161015a578063b071401b116100c1578063d5abeb011161007a578063d5abeb011461076d578063e0a8085314610783578063e985e9c5146107a3578063edec5f27146107ec578063efbd73f41461080c578063f2fde38b1461082c57600080fd5b8063b071401b146106c4578063b88d4fde146106e4578063ba4e5c4914610704578063ba7d2c7614610724578063c1c880e31461073a578063c87b56dd1461074d57600080fd5b806394354fd01161011357806394354fd01461063257806395d89b41146106485780639c70b5121461065d578063a0712d681461067c578063a22cb4651461068f578063a45ba8e7146106af57600080fd5b80636352211e1461057f57806370a082311461059f578063715018a6146105bf5780637ec4a659146105d45780638da5cb5b146105f45780638f14085d1461061257600080fd5b80632b47da52116101fe57806344a0d68a116101b757806344a0d68a146104da5780634fdd43cb146104fa578063518302271461051a5780635503a0e81461053b5780635c975abb1461055057806362b99ad41461056a57600080fd5b80632b47da52146104185780633af32abf146104385780633c952764146104585780633ccfd60b1461047857806342842e0e1461048d578063438b6300146104ad57600080fd5b806313faede61161025057806313faede61461035257806316ba10e01461037657806316c38b3c1461039657806318160ddd146103b657806318cae269146103cb57806323b872dd146103f857600080fd5b8062ce7f541461028c57806301ffc9a7146102a357806306fdde03146102d8578063081812fc146102fa578063095ea7b314610332575b600080fd5b34801561029857600080fd5b506102a161084c565b005b3480156102af57600080fd5b506102c36102be3660046123cc565b61088d565b60405190151581526020015b60405180910390f35b3480156102e457600080fd5b506102ed6108df565b6040516102cf91906125fc565b34801561030657600080fd5b5061031a61031536600461244f565b610971565b6040516001600160a01b0390911681526020016102cf565b34801561033e57600080fd5b506102a161034d366004612312565b610a06565b34801561035e57600080fd5b50610368600b5481565b6040519081526020016102cf565b34801561038257600080fd5b506102a1610391366004612406565b610b1c565b3480156103a257600080fd5b506102a16103b13660046123b1565b610b5d565b3480156103c257600080fd5b50610368610b9a565b3480156103d757600080fd5b506103686103e63660046121e2565b60116020526000908152604090205481565b34801561040457600080fd5b506102a1610413366004612230565b610baa565b34801561042457600080fd5b50600f546102c39062010000900460ff1681565b34801561044457600080fd5b506102c36104533660046121e2565b610bdb565b34801561046457600080fd5b506102a16104733660046123b1565b610c45565b34801561048457600080fd5b506102a1610c89565b34801561049957600080fd5b506102a16104a8366004612230565b610d27565b3480156104b957600080fd5b506104cd6104c83660046121e2565b610d42565b6040516102cf91906125b8565b3480156104e657600080fd5b506102a16104f536600461244f565b610e23565b34801561050657600080fd5b506102a1610515366004612406565b610e52565b34801561052657600080fd5b50600f546102c3906301000000900460ff1681565b34801561054757600080fd5b506102ed610e8f565b34801561055c57600080fd5b50600f546102c39060ff1681565b34801561057657600080fd5b506102ed610f1d565b34801561058b57600080fd5b5061031a61059a36600461244f565b610f2a565b3480156105ab57600080fd5b506103686105ba3660046121e2565b610fa1565b3480156105cb57600080fd5b506102a1611028565b3480156105e057600080fd5b506102a16105ef366004612406565b61105e565b34801561060057600080fd5b506006546001600160a01b031661031a565b34801561061e57600080fd5b506102a161062d36600461244f565b61109b565b34801561063e57600080fd5b50610368600d5481565b34801561065457600080fd5b506102ed6110ca565b34801561066957600080fd5b50600f546102c390610100900460ff1681565b6102a161068a36600461244f565b6110d9565b34801561069b57600080fd5b506102a16106aa3660046122e8565b61124a565b3480156106bb57600080fd5b506102ed611255565b3480156106d057600080fd5b506102a16106df36600461244f565b611262565b3480156106f057600080fd5b506102a16106ff36600461226c565b611291565b34801561071057600080fd5b5061031a61071f36600461244f565b6112c9565b34801561073057600080fd5b50610368600e5481565b6102a161074836600461244f565b6112f3565b34801561075957600080fd5b506102ed61076836600461244f565b6113f9565b34801561077957600080fd5b50610368600c5481565b34801561078f57600080fd5b506102a161079e3660046123b1565b61157a565b3480156107af57600080fd5b506102c36107be3660046121fd565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107f857600080fd5b506102a161080736600461233c565b6115c2565b34801561081857600080fd5b506102a1610827366004612468565b611604565b34801561083857600080fd5b506102a16108473660046121e2565b61169c565b6006546001600160a01b0316331461087f5760405162461bcd60e51b81526004016108769061268f565b60405180910390fd5b600f805462ff000019169055565b60006001600160e01b031982166380ac58cd60e01b14806108be57506001600160e01b03198216635b5e139f60e01b145b806108d957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108ee906127d1565b80601f016020809104026020016040519081016040528092919081815260200182805461091a906127d1565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109ea5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610876565b506000908152600460205260409020546001600160a01b031690565b6000610a1182610f2a565b9050806001600160a01b0316836001600160a01b03161415610a7f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610876565b336001600160a01b0382161480610a9b5750610a9b81336107be565b610b0d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610876565b610b178383611734565b505050565b6006546001600160a01b03163314610b465760405162461bcd60e51b81526004016108769061268f565b8051610b59906009906020840190612036565b5050565b6006546001600160a01b03163314610b875760405162461bcd60e51b81526004016108769061268f565b600f805460ff1916911515919091179055565b6000610ba560075490565b905090565b610bb433826117a2565b610bd05760405162461bcd60e51b8152600401610876906126f2565b610b17838383611899565b6000805b601054811015610c3c57826001600160a01b031660108281548110610c0657610c06612867565b6000918252602090912001546001600160a01b03161415610c2a5750600192915050565b80610c348161280c565b915050610bdf565b50600092915050565b6006546001600160a01b03163314610c6f5760405162461bcd60e51b81526004016108769061268f565b600f80549115156101000261ff0019909216919091179055565b6006546001600160a01b03163314610cb35760405162461bcd60e51b81526004016108769061268f565b6000610cc76006546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610d11576040519150601f19603f3d011682016040523d82523d6000602084013e610d16565b606091505b5050905080610d2457600080fd5b50565b610b1783838360405180602001604052806000815250611291565b60606000610d4f83610fa1565b905060008167ffffffffffffffff811115610d6c57610d6c61287d565b604051908082528060200260200182016040528015610d95578160200160208202803683370190505b509050600160005b8381108015610dae5750600c548211155b15610e19576000610dbe83610f2a565b9050866001600160a01b0316816001600160a01b03161415610e065782848381518110610ded57610ded612867565b602090810291909101015281610e028161280c565b9250505b82610e108161280c565b93505050610d9d565b5090949350505050565b6006546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016108769061268f565b600b55565b6006546001600160a01b03163314610e7c5760405162461bcd60e51b81526004016108769061268f565b8051610b5990600a906020840190612036565b60098054610e9c906127d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906127d1565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60088054610e9c906127d1565b6000818152600260205260408120546001600160a01b0316806108d95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610876565b60006001600160a01b03821661100c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610876565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146110525760405162461bcd60e51b81526004016108769061268f565b61105c6000611a39565b565b6006546001600160a01b031633146110885760405162461bcd60e51b81526004016108769061268f565b8051610b59906008906020840190612036565b6006546001600160a01b031633146110c55760405162461bcd60e51b81526004016108769061268f565b600e55565b6060600180546108ee906127d1565b806000811180156110ec5750600d548111155b6111085760405162461bcd60e51b815260040161087690612661565b600c548161111560075490565b61111f9190612743565b111561113d5760405162461bcd60e51b8152600401610876906126c4565b600f5460ff161561118a5760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610876565b600f54610100900460ff16156111ed5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c792057686974656c6973746564206d656d626572732063616e206d696e604482015261742160f01b6064820152608401610876565b81600b546111fb919061276f565b3410156112405760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610876565b610b593383611a8b565b610b59338383611b53565b600a8054610e9c906127d1565b6006546001600160a01b0316331461128c5760405162461bcd60e51b81526004016108769061268f565b600d55565b61129b33836117a2565b6112b75760405162461bcd60e51b8152600401610876906126f2565b6112c384848484611c22565b50505050565b601081815481106112d957600080fd5b6000918252602090912001546001600160a01b0316905081565b806000811180156113065750600d548111155b6113225760405162461bcd60e51b815260040161087690612661565b600c548161132f60075490565b6113399190612743565b11156113575760405162461bcd60e51b8152600401610876906126c4565b600f5460ff16156113a45760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610876565b6113ad33610bdb565b6111ed5760405162461bcd60e51b815260206004820152601760248201527f75736572206973206e6f742077686974656c69737465640000000000000000006044820152606401610876565b6000818152600260205260409020546060906001600160a01b03166114785760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610876565b600f546301000000900460ff1661151b57600a8054611496906127d1565b80601f01602080910402602001604051908101604052809291908181526020018280546114c2906127d1565b801561150f5780601f106114e45761010080835404028352916020019161150f565b820191906000526020600020905b8154815290600101906020018083116114f257829003601f168201915b50505050509050919050565b6000611525611c55565b905060008151116115455760405180602001604052806000815250611573565b8061154f84611c64565b6009604051602001611563939291906124b7565b6040516020818303038152906040525b9392505050565b6006546001600160a01b031633146115a45760405162461bcd60e51b81526004016108769061268f565b600f805491151563010000000263ff00000019909216919091179055565b6006546001600160a01b031633146115ec5760405162461bcd60e51b81526004016108769061268f565b6115f8601060006120ba565b610b17601083836120d8565b816000811180156116175750600d548111155b6116335760405162461bcd60e51b815260040161087690612661565b600c548161164060075490565b61164a9190612743565b11156116685760405162461bcd60e51b8152600401610876906126c4565b6006546001600160a01b031633146116925760405162461bcd60e51b81526004016108769061268f565b610b178284611d62565b6006546001600160a01b031633146116c65760405162461bcd60e51b81526004016108769061268f565b6001600160a01b03811661172b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b610d2481611a39565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176982610f2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661181b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610876565b600061182683610f2a565b9050806001600160a01b0316846001600160a01b031614806118615750836001600160a01b031661185684610971565b6001600160a01b0316145b8061189157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166118ac82610f2a565b6001600160a01b0316146119145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610876565b6001600160a01b0382166119765760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610876565b611981600082611734565b6001600160a01b03831660009081526003602052604081208054600192906119aa90849061278e565b90915550506001600160a01b03821660009081526003602052604081208054600192906119d8908490612743565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33600090815260116020526040902054600e54611aa88383612743565b1115611af65760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401610876565b60005b828110156112c357611b0f600780546001019055565b336000908152601160205260408120805491611b2a8361280c565b9190505550611b4184611b3c60075490565b611d9a565b80611b4b8161280c565b915050611af9565b816001600160a01b0316836001600160a01b03161415611bb55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610876565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c2d848484611899565b611c3984848484611db4565b6112c35760405162461bcd60e51b81526004016108769061260f565b6060600880546108ee906127d1565b606081611c885750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cb25780611c9c8161280c565b9150611cab9050600a8361275b565b9150611c8c565b60008167ffffffffffffffff811115611ccd57611ccd61287d565b6040519080825280601f01601f191660200182016040528015611cf7576020820181803683370190505b5090505b841561189157611d0c60018361278e565b9150611d19600a86612827565b611d24906030612743565b60f81b818381518110611d3957611d39612867565b60200101906001600160f81b031916908160001a905350611d5b600a8661275b565b9450611cfb565b60005b81811015610b1757611d7b600780546001019055565b611d8883611b3c60075490565b80611d928161280c565b915050611d65565b610b59828260405180602001604052806000815250611ec1565b60006001600160a01b0384163b15611eb657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611df890339089908890889060040161257b565b602060405180830381600087803b158015611e1257600080fd5b505af1925050508015611e42575060408051601f3d908101601f19168201909252611e3f918101906123e9565b60015b611e9c573d808015611e70576040519150601f19603f3d011682016040523d82523d6000602084013e611e75565b606091505b508051611e945760405162461bcd60e51b81526004016108769061260f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611891565b506001949350505050565b611ecb8383611ef4565b611ed86000848484611db4565b610b175760405162461bcd60e51b81526004016108769061260f565b6001600160a01b038216611f4a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610876565b6000818152600260205260409020546001600160a01b031615611faf5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610876565b6001600160a01b0382166000908152600360205260408120805460019290611fd8908490612743565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612042906127d1565b90600052602060002090601f01602090048101928261206457600085556120aa565b82601f1061207d57805160ff19168380011785556120aa565b828001600101855582156120aa579182015b828111156120aa57825182559160200191906001019061208f565b506120b692915061212b565b5090565b5080546000825590600052602060002090810190610d24919061212b565b8280548282559060005260206000209081019282156120aa579160200282015b828111156120aa5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906120f8565b5b808211156120b6576000815560010161212c565b600067ffffffffffffffff8084111561215b5761215b61287d565b604051601f8501601f19908116603f011681019082821181831017156121835761218361287d565b8160405280935085815286868601111561219c57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146121cd57600080fd5b919050565b803580151581146121cd57600080fd5b6000602082840312156121f457600080fd5b611573826121b6565b6000806040838503121561221057600080fd5b612219836121b6565b9150612227602084016121b6565b90509250929050565b60008060006060848603121561224557600080fd5b61224e846121b6565b925061225c602085016121b6565b9150604084013590509250925092565b6000806000806080858703121561228257600080fd5b61228b856121b6565b9350612299602086016121b6565b925060408501359150606085013567ffffffffffffffff8111156122bc57600080fd5b8501601f810187136122cd57600080fd5b6122dc87823560208401612140565b91505092959194509250565b600080604083850312156122fb57600080fd5b612304836121b6565b9150612227602084016121d2565b6000806040838503121561232557600080fd5b61232e836121b6565b946020939093013593505050565b6000806020838503121561234f57600080fd5b823567ffffffffffffffff8082111561236757600080fd5b818501915085601f83011261237b57600080fd5b81358181111561238a57600080fd5b8660208260051b850101111561239f57600080fd5b60209290920196919550909350505050565b6000602082840312156123c357600080fd5b611573826121d2565b6000602082840312156123de57600080fd5b813561157381612893565b6000602082840312156123fb57600080fd5b815161157381612893565b60006020828403121561241857600080fd5b813567ffffffffffffffff81111561242f57600080fd5b8201601f8101841361244057600080fd5b61189184823560208401612140565b60006020828403121561246157600080fd5b5035919050565b6000806040838503121561247b57600080fd5b82359150612227602084016121b6565b600081518084526124a38160208601602086016127a5565b601f01601f19169290920160200192915050565b6000845160206124ca8285838a016127a5565b8551918401916124dd8184848a016127a5565b8554920191600090600181811c90808316806124fa57607f831692505b85831081141561251857634e487b7160e01b85526022600452602485fd5b80801561252c576001811461253d5761256a565b60ff1985168852838801955061256a565b60008b81526020902060005b858110156125625781548a820152908401908801612549565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906125ae9083018461248b565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156125f0578351835292840192918401916001016125d4565b50909695505050505050565b602081526000611573602083018461248b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260149082015273496e76616c6964206d696e7420616d6f756e742160601b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601490820152734d617820737570706c792065786365656465642160601b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156127565761275661283b565b500190565b60008261276a5761276a612851565b500490565b60008160001904831182151516156127895761278961283b565b500290565b6000828210156127a0576127a061283b565b500390565b60005b838110156127c05781810151838201526020016127a8565b838111156112c35750506000910152565b600181811c908216806127e557607f821691505b6020821081141561280657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128205761282061283b565b5060010190565b60008261283657612836612851565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610d2457600080fdfea26469706673582212209657fe3358d3a7cf975b003afab5abefb1e2ca534f8e60368f0de5d6c47d17ae64736f6c63430008070033

Deployed Bytecode Sourcemap

22567:6057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27255:77;;;;;;;;;;;;;:::i;:::-;;13845:315;;;;;;;;;;-1:-1:-1;13845:315:0;;;;;:::i;:::-;;:::i;:::-;;;8686:14:1;;8679:22;8661:41;;8649:2;8634:18;13845:315:0;;;;;;;;14844:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16253:229::-;;;;;;;;;;-1:-1:-1;16253:229:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7347:32:1;;;7329:51;;7317:2;7302:18;16253:229:0;7183:203:1;15746:431:0;;;;;;;;;;-1:-1:-1;15746:431:0;;;;;:::i;:::-;;:::i;22856:33::-;;;;;;;;;;;;;;;;;;;17975:25:1;;;17963:2;17948:18;22856:33:0;17829:177:1;26945:104:0;;;;;;;;;;-1:-1:-1;26945:104:0;;;;;:::i;:::-;;:::i;27059:81::-;;;;;;;;;;-1:-1:-1;27059:81:0;;;;;:::i;:::-;;:::i;23697:93::-;;;;;;;;;;;;;:::i;23217:55::-;;;;;;;;;;-1:-1:-1;23217:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;17049:357;;;;;;;;;;-1:-1:-1;17049:357:0;;;;;:::i;:::-;;:::i;23098:28::-;;;;;;;;;;-1:-1:-1;23098:28:0;;;;;;;;;;;24716:253;;;;;;;;;;-1:-1:-1;24716:253:0;;;;;:::i;:::-;;:::i;27150:99::-;;;;;;;;;;-1:-1:-1;27150:99:0;;;;;:::i;:::-;;:::i;27506:319::-;;;;;;;;;;;;;:::i;17487:197::-;;;;;;;;;;-1:-1:-1;17487:197:0;;;;;:::i;:::-;;:::i;24979:681::-;;;;;;;;;;-1:-1:-1;24979:681:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26309:78::-;;;;;;;;;;-1:-1:-1;26309:78:0;;;;;:::i;:::-;;:::i;26685:136::-;;;;;;;;;;-1:-1:-1;26685:136:0;;;;;:::i;:::-;;:::i;23133:28::-;;;;;;;;;;-1:-1:-1;23133:28:0;;;;;;;;;;;22772:33;;;;;;;;;;;;;:::i;23025:25::-;;;;;;;;;;-1:-1:-1;23025:25:0;;;;;;;;22737:28;;;;;;;;;;;;;:::i;14520:247::-;;;;;;;;;;-1:-1:-1;14520:247:0;;;;;:::i;:::-;;:::i;14234:214::-;;;;;;;;;;-1:-1:-1;14234:214:0;;;;;:::i;:::-;;:::i;4293:107::-;;;;;;;;;;;;;:::i;26831:104::-;;;;;;;;;;-1:-1:-1;26831:104:0;;;;;:::i;:::-;;:::i;3961:91::-;;;;;;;;;;-1:-1:-1;4036:6:0;;-1:-1:-1;;;;;4036:6:0;3961:91;;26541:134;;;;;;;;;;-1:-1:-1;26541:134:0;;;;;:::i;:::-;;:::i;22933:37::-;;;;;;;;;;;;;;;;15027:108;;;;;;;;;;;;;:::i;23057:34::-;;;;;;;;;;-1:-1:-1;23057:34:0;;;;;;;;;;;23800:329;;;;;;:::i;:::-;;:::i;16564:159::-;;;;;;;;;;-1:-1:-1;16564:159:0;;;;;:::i;:::-;;:::i;22812:31::-;;;;;;;;;;;;;:::i;26397:134::-;;;;;;;;;;-1:-1:-1;26397:134:0;;;;;:::i;:::-;;:::i;17765:344::-;;;;;;;;;;-1:-1:-1;17765:344:0;;;;;:::i;:::-;;:::i;23172:37::-;;;;;;;;;;-1:-1:-1;23172:37:0;;;;;:::i;:::-;;:::i;22977:::-;;;;;;;;;;;;;;;;24139:395;;;;;;:::i;:::-;;:::i;25670:534::-;;;;;;;;;;-1:-1:-1;25670:534:0;;;;;:::i;:::-;;:::i;22896:30::-;;;;;;;;;;;;;;;;26214:85;;;;;;;;;;-1:-1:-1;26214:85:0;;;;;:::i;:::-;;:::i;16804:168::-;;;;;;;;;;-1:-1:-1;16804:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;16927:25:0;;;16901:4;16927:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;16804:168;27342:150;;;;;;;;;;-1:-1:-1;27342:150:0;;;;;:::i;:::-;;:::i;24546:160::-;;;;;;;;;;-1:-1:-1;24546:160:0;;;;;:::i;:::-;;:::i;4567:207::-;;;;;;;;;;-1:-1:-1;4567:207:0;;;;;:::i;:::-;;:::i;27255:77::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;;;;;;;;;27307:9:::1;:17:::0;;-1:-1:-1;;27307:17:0::1;::::0;;27255:77::o;13845:315::-;13947:4;-1:-1:-1;;;;;;13988:40:0;;-1:-1:-1;;;13988:40:0;;:107;;-1:-1:-1;;;;;;;14047:48:0;;-1:-1:-1;;;14047:48:0;13988:107;:162;;;-1:-1:-1;;;;;;;;;;10279:40:0;;;14114:36;13966:184;13845:315;-1:-1:-1;;13845:315:0:o;14844:104::-;14898:13;14933:5;14926:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14844:104;:::o;16253:229::-;16329:7;18563:16;;;:7;:16;;;;;;-1:-1:-1;;;;;18563:16:0;16351:73;;;;-1:-1:-1;;;16351:73:0;;14210:2:1;16351:73:0;;;14192:21:1;14249:2;14229:18;;;14222:30;14288:34;14268:18;;;14261:62;-1:-1:-1;;;14339:18:1;;;14332:42;14391:19;;16351:73:0;14008:408:1;16351:73:0;-1:-1:-1;16448:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;16448:24:0;;16253:229::o;15746:431::-;15829:13;15845:23;15860:7;15845:14;:23::i;:::-;15829:39;;15895:5;-1:-1:-1;;;;;15889:11:0;:2;-1:-1:-1;;;;;15889:11:0;;;15881:57;;;;-1:-1:-1;;;15881:57:0;;16162:2:1;15881:57:0;;;16144:21:1;16201:2;16181:18;;;16174:30;16240:34;16220:18;;;16213:62;-1:-1:-1;;;16291:18:1;;;16284:31;16332:19;;15881:57:0;15960:397:1;15881:57:0;3202:10;-1:-1:-1;;;;;15979:21:0;;;;:62;;-1:-1:-1;16004:37:0;16021:5;3202:10;16804:168;:::i;16004:37::-;15955:174;;;;-1:-1:-1;;;15955:174:0;;12200:2:1;15955:174:0;;;12182:21:1;12239:2;12219:18;;;12212:30;12278:34;12258:18;;;12251:62;12349:26;12329:18;;;12322:54;12393:19;;15955:174:0;11998:420:1;15955:174:0;16146:21;16155:2;16159:7;16146:8;:21::i;:::-;15816:361;15746:431;;:::o;26945:104::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;27019:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;;26945:104:::0;:::o;27059:81::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;27117:6:::1;:15:::0;;-1:-1:-1;;27117:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27059:81::o;23697:93::-;23741:7;23766:16;:6;410:14;;316:118;23766:16;23759:23;;23697:93;:::o;17049:357::-;17256:41;3202:10;17289:7;17256:18;:41::i;:::-;17248:103;;;;-1:-1:-1;;;17248:103:0;;;;;;;:::i;:::-;17368:28;17378:4;17384:2;17388:7;17368:9;:28::i;24716:253::-;24775:4;;24790:151;24811:20;:27;24807:31;;24790:151;;;24887:5;-1:-1:-1;;;;;24860:32:0;:20;24881:1;24860:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;24860:23:0;:32;24856:76;;;-1:-1:-1;24916:4:0;;24716:253;-1:-1:-1;;24716:253:0:o;24856:76::-;24840:3;;;;:::i;:::-;;;;24790:151;;;-1:-1:-1;24956:5:0;;24716:253;-1:-1:-1;;24716:253:0:o;27150:99::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;27217:15:::1;:24:::0;;;::::1;;;;-1:-1:-1::0;;27217:24:0;;::::1;::::0;;;::::1;::::0;;27150:99::o;27506:319::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;27641:7:::1;27662;4036:6:::0;;-1:-1:-1;;;;;4036:6:0;;3961:91;27662:7:::1;-1:-1:-1::0;;;;;27654:21:0::1;27683;27654:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27640:69;;;27726:2;27718:11;;;::::0;::::1;;27543:282;27506:319::o:0;17487:197::-;17635:39;17652:4;17658:2;17662:7;17635:39;;;;;;;;;;;;:16;:39::i;24979:681::-;25060:16;25092:23;25118:17;25128:6;25118:9;:17::i;:::-;25092:43;;25144:30;25191:15;25177:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25177:30:0;-1:-1:-1;25144:63:0;-1:-1:-1;25241:1:0;25216:22;25291:329;25316:15;25298;:33;:64;;;;;25353:9;;25335:14;:27;;25298:64;25291:329;;;25375:25;25403:23;25411:14;25403:7;:23::i;:::-;25375:51;;25466:6;-1:-1:-1;;;;;25445:27:0;:17;-1:-1:-1;;;;;25445:27:0;;25441:139;;;25520:14;25487:13;25501:15;25487:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;25551:17;;;;:::i;:::-;;;;25441:139;25594:16;;;;:::i;:::-;;;;25364:256;25291:329;;;-1:-1:-1;25639:13:0;;24979:681;-1:-1:-1;;;;24979:681:0:o;26309:78::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26367:4:::1;:12:::0;26309:78::o;26685:136::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26775:38;;::::1;::::0;:17:::1;::::0;:38:::1;::::0;::::1;::::0;::::1;:::i;22772:33::-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22737:28::-;;;;;;;:::i;14520:247::-;14592:7;14630:16;;;:7;:16;;;;;;-1:-1:-1;;;;;14630:16:0;14667:19;14659:73;;;;-1:-1:-1;;;14659:73:0;;13439:2:1;14659:73:0;;;13421:21:1;13478:2;13458:18;;;13451:30;13517:34;13497:18;;;13490:62;-1:-1:-1;;;13568:18:1;;;13561:39;13617:19;;14659:73:0;13237:405:1;14234:214:0;14306:7;-1:-1:-1;;;;;14336:19:0;;14328:74;;;;-1:-1:-1;;;14328:74:0;;13028:2:1;14328:74:0;;;13010:21:1;13067:2;13047:18;;;13040:30;13106:34;13086:18;;;13079:62;-1:-1:-1;;;13157:18:1;;;13150:40;13207:19;;14328:74:0;12826:406:1;14328:74:0;-1:-1:-1;;;;;;14422:16:0;;;;;:9;:16;;;;;;;14234:214::o;4293:107::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;4360:30:::1;4387:1;4360:18;:30::i;:::-;4293:107::o:0;26831:104::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26905:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;26541:134::-:0;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26627:18:::1;:40:::0;26541:134::o;15027:108::-;15083:13;15118:7;15111:14;;;;;:::i;23800:329::-;23865:11;23521:1;23507:11;:15;:52;;;;;23541:18;;23526:11;:33;;23507:52;23499:85;;;;-1:-1:-1;;;23499:85:0;;;;;;;:::i;:::-;23635:9;;23620:11;23601:16;:6;410:14;;316:118;23601:16;:30;;;;:::i;:::-;:43;;23593:76;;;;-1:-1:-1;;;23593:76:0;;;;;;;:::i;:::-;23896:6:::1;::::0;::::1;;23895:7;23887:43;;;::::0;-1:-1:-1;;;23887:43:0;;14984:2:1;23887:43:0::1;::::0;::::1;14966:21:1::0;15023:2;15003:18;;;14996:30;-1:-1:-1;;;15042:18:1;;;15035:53;15105:18;;23887:43:0::1;14782:347:1::0;23887:43:0::1;23948:15;::::0;::::1;::::0;::::1;;;23947:16;23939:63;;;::::0;-1:-1:-1;;;23939:63:0;;12625:2:1;23939:63:0::1;::::0;::::1;12607:21:1::0;12664:2;12644:18;;;12637:30;12703:34;12683:18;;;12676:62;-1:-1:-1;;;12754:18:1;;;12747:32;12796:19;;23939:63:0::1;12423:398:1::0;23939:63:0::1;24039:11;24032:4;;:18;;;;:::i;:::-;24019:9;:31;;24011:63;;;::::0;-1:-1:-1;;;24011:63:0;;17683:2:1;24011:63:0::1;::::0;::::1;17665:21:1::0;17722:2;17702:18;;;17695:30;-1:-1:-1;;;17741:18:1;;;17734:49;17800:18;;24011:63:0::1;17481:343:1::0;24011:63:0::1;24087:34;24097:10;24109:11;24087:9;:34::i;16564:159::-:0;16661:52;3202:10;16694:8;16704;16661:18;:52::i;22812:31::-;;;;;;;:::i;26397:134::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26483:18:::1;:40:::0;26397:134::o;17765:344::-;17952:41;3202:10;17985:7;17952:18;:41::i;:::-;17944:103;;;;-1:-1:-1;;;17944:103:0;;;;;;;:::i;:::-;18060:39;18074:4;18080:2;18084:7;18093:5;18060:13;:39::i;:::-;17765:344;;;;:::o;23172:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23172:37:0;;-1:-1:-1;23172:37:0;:::o;24139:395::-;24213:11;23521:1;23507:11;:15;:52;;;;;23541:18;;23526:11;:33;;23507:52;23499:85;;;;-1:-1:-1;;;23499:85:0;;;;;;;:::i;:::-;23635:9;;23620:11;23601:16;:6;410:14;;316:118;23601:16;:30;;;;:::i;:::-;:43;;23593:76;;;;-1:-1:-1;;;23593:76:0;;;;;;;:::i;:::-;24244:6:::1;::::0;::::1;;24243:7;24235:43;;;::::0;-1:-1:-1;;;24235:43:0;;14984:2:1;24235:43:0::1;::::0;::::1;14966:21:1::0;15023:2;15003:18;;;14996:30;-1:-1:-1;;;15042:18:1;;;15035:53;15105:18;;24235:43:0::1;14782:347:1::0;24235:43:0::1;24354:25;24368:10;24354:13;:25::i;:::-;24346:61;;;::::0;-1:-1:-1;;;24346:61:0;;17331:2:1;24346:61:0::1;::::0;::::1;17313:21:1::0;17370:2;17350:18;;;17343:30;17409:25;17389:18;;;17382:53;17452:18;;24346:61:0::1;17129:347:1::0;25670:534:0;18537:4;18563:16;;;:7;:16;;;;;;25779:13;;-1:-1:-1;;;;;18563:16:0;25808:104;;;;-1:-1:-1;;;25808:104:0;;15746:2:1;25808:104:0;;;15728:21:1;15785:2;15765:18;;;15758:30;15824:34;15804:18;;;15797:62;-1:-1:-1;;;15875:18:1;;;15868:45;15930:19;;25808:104:0;15544:411:1;25808:104:0;25929:8;;;;;;;25925:68;;25966:17;25959:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25670:534;;;:::o;25925:68::-;26005:28;26036:10;:8;:10::i;:::-;26005:41;;26093:1;26068:14;26062:28;:32;:134;;;;;;;;;;;;;;;;;26132:14;26148:19;:8;:17;:19::i;:::-;26169:9;26115:64;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26062:134;26055:141;25670:534;-1:-1:-1;;;25670:534:0:o;26214:85::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;26274:8:::1;:17:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;26274:17:0;;::::1;::::0;;;::::1;::::0;;26214:85::o;27342:150::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;27419:27:::1;27426:20;;27419:27;:::i;:::-;27455:29;:20;27478:6:::0;;27455:29:::1;:::i;24546:160::-:0;24632:11;23521:1;23507:11;:15;:52;;;;;23541:18;;23526:11;:33;;23507:52;23499:85;;;;-1:-1:-1;;;23499:85:0;;;;;;;:::i;:::-;23635:9;;23620:11;23601:16;:6;410:14;;316:118;23601:16;:30;;;;:::i;:::-;:43;;23593:76;;;;-1:-1:-1;;;23593:76:0;;;;;;;:::i;:::-;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23:::1;4189:68;;;;-1:-1:-1::0;;;4189:68:0::1;;;;;;;:::i;:::-;24664:34:::2;24675:9;24686:11;24664:10;:34::i;4567:207::-:0;4036:6;;-1:-1:-1;;;;;4036:6:0;3202:10;4197:23;4189:68;;;;-1:-1:-1;;;4189:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4658:22:0;::::1;4650:73;;;::::0;-1:-1:-1;;;4650:73:0;;9558:2:1;4650:73:0::1;::::0;::::1;9540:21:1::0;9597:2;9577:18;;;9570:30;9636:34;9616:18;;;9609:62;-1:-1:-1;;;9687:18:1;;;9680:36;9733:19;;4650:73:0::1;9356:402:1::0;4650:73:0::1;4736:28;4755:8;4736:18;:28::i;20924:180::-:0;21001:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;21001:29:0;-1:-1:-1;;;;;21001:29:0;;;;;;;;:24;;21057:23;21001:24;21057:14;:23::i;:::-;-1:-1:-1;;;;;21048:46:0;;;;;;;;;;;20924:180;;:::o;18619:356::-;18712:4;18563:16;;;:7;:16;;;;;;-1:-1:-1;;;;;18563:16:0;18731:73;;;;-1:-1:-1;;;18731:73:0;;11787:2:1;18731:73:0;;;11769:21:1;11826:2;11806:18;;;11799:30;11865:34;11845:18;;;11838:62;-1:-1:-1;;;11916:18:1;;;11909:42;11968:19;;18731:73:0;11585:408:1;18731:73:0;18817:13;18833:23;18848:7;18833:14;:23::i;:::-;18817:39;;18888:5;-1:-1:-1;;;;;18877:16:0;:7;-1:-1:-1;;;;;18877:16:0;;:51;;;;18921:7;-1:-1:-1;;;;;18897:31:0;:20;18909:7;18897:11;:20::i;:::-;-1:-1:-1;;;;;18897:31:0;;18877:51;:87;;;-1:-1:-1;;;;;;16927:25:0;;;16901:4;16927:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;18932:32;18869:96;18619:356;-1:-1:-1;;;;18619:356:0:o;20294:614::-;20463:4;-1:-1:-1;;;;;20436:31:0;:23;20451:7;20436:14;:23::i;:::-;-1:-1:-1;;;;;20436:31:0;;20428:85;;;;-1:-1:-1;;;20428:85:0;;15336:2:1;20428:85:0;;;15318:21:1;15375:2;15355:18;;;15348:30;15414:34;15394:18;;;15387:62;-1:-1:-1;;;15465:18:1;;;15458:39;15514:19;;20428:85:0;15134:405:1;20428:85:0;-1:-1:-1;;;;;20534:16:0;;20526:65;;;;-1:-1:-1;;;20526:65:0;;11028:2:1;20526:65:0;;;11010:21:1;11067:2;11047:18;;;11040:30;11106:34;11086:18;;;11079:62;-1:-1:-1;;;11157:18:1;;;11150:34;11201:19;;20526:65:0;10826:400:1;20526:65:0;20718:29;20735:1;20739:7;20718:8;:29::i;:::-;-1:-1:-1;;;;;20764:15:0;;;;;;:9;:15;;;;;:20;;20783:1;;20764:15;:20;;20783:1;;20764:20;:::i;:::-;;;;-1:-1:-1;;;;;;;20797:13:0;;;;;;:9;:13;;;;;:18;;20814:1;;20797:13;:18;;20814:1;;20797:18;:::i;:::-;;;;-1:-1:-1;;20828:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;20828:21:0;-1:-1:-1;;;;;20828:21:0;;;;;;;;;20871:27;;20828:16;;20871:27;;;;;;;20294:614;;;:::o;4786:199::-;4881:6;;;-1:-1:-1;;;;;4900:17:0;;;-1:-1:-1;;;;;;4900:17:0;;;;;;;4935:40;;4881:6;;;4900:17;4881:6;;4935:40;;4862:16;;4935:40;4849:136;4786:199;:::o;27835:441::-;27964:10;27916:24;27943:32;;;:20;:32;;;;;;28026:18;;27992:30;28011:11;27943:32;27992:30;:::i;:::-;:52;;27984:93;;;;-1:-1:-1;;;27984:93:0;;10671:2:1;27984:93:0;;;10653:21:1;10710:2;10690:18;;;10683:30;10749;10729:18;;;10722:58;10797:18;;27984:93:0;10469:352:1;27984:93:0;28099:9;28094:175;28118:11;28114:1;:15;28094:175;;;28147:18;:6;539:19;;557:1;539:19;;;446:135;28147:18;28197:10;28176:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;;;28221:38;28231:9;28242:16;:6;410:14;;316:118;28242:16;28221:9;:38::i;:::-;28131:3;;;;:::i;:::-;;;;28094:175;;21120:331;21285:8;-1:-1:-1;;;;;21276:17:0;:5;-1:-1:-1;;;;;21276:17:0;;;21268:55;;;;-1:-1:-1;;;21268:55:0;;11433:2:1;21268:55:0;;;11415:21:1;11472:2;11452:18;;;11445:30;11511:27;11491:18;;;11484:55;11556:18;;21268:55:0;11231:349:1;21268:55:0;-1:-1:-1;;;;;21336:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;21336:46:0;;;;;;;;;;21400:41;;8661::1;;;21400::0;;8634:18:1;21400:41:0;;;;;;;21120:331;;;:::o;18125:::-;18294:28;18304:4;18310:2;18314:7;18294:9;:28::i;:::-;18343:48;18366:4;18372:2;18376:7;18385:5;18343:22;:48::i;:::-;18335:111;;;;-1:-1:-1;;;18335:111:0;;;;;;;:::i;28511:108::-;28571:13;28602:9;28595:16;;;;;:::i;1246:574::-;1302:13;1342:10;1338:57;;-1:-1:-1;;1371:10:0;;;;;;;;;;;;-1:-1:-1;;;1371:10:0;;;;;1246:574::o;1338:57::-;1422:5;1407:12;1467:84;1474:9;;1467:84;;1502:8;;;;:::i;:::-;;-1:-1:-1;1527:10:0;;-1:-1:-1;1535:2:0;1527:10;;:::i;:::-;;;1467:84;;;1563:19;1595:6;1585:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1585:17:0;;1563:39;;1615:162;1622:10;;1615:162;;1651:11;1661:1;1651:11;;:::i;:::-;;-1:-1:-1;1722:10:0;1730:2;1722:5;:10;:::i;:::-;1709:24;;:2;:24;:::i;:::-;1696:39;;1679:6;1686;1679:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1679:56:0;;;;;;;;-1:-1:-1;1752:11:0;1761:2;1752:11;;:::i;:::-;;;1615:162;;28286:215;28369:9;28364:130;28388:11;28384:1;:15;28364:130;;;28417:18;:6;539:19;;557:1;539:19;;;446:135;28417:18;28446:38;28456:9;28467:16;:6;410:14;;316:118;28446:38;28401:3;;;;:::i;:::-;;;;28364:130;;18991:114;19069:26;19079:2;19083:7;19069:26;;;;;;;;;;;;:9;:26::i;21467:841::-;21632:4;-1:-1:-1;;;;;21655:13:0;;5411:20;5463:8;21651:648;;21693:72;;-1:-1:-1;;;21693:72:0;;-1:-1:-1;;;;;21693:36:0;;;;;:72;;3202:10;;21744:4;;21750:7;;21759:5;;21693:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21693:72:0;;;;;;;;-1:-1:-1;;21693:72:0;;;;;;;;;;;;:::i;:::-;;;21689:549;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21941:13:0;;21937:284;;21986:60;;-1:-1:-1;;;21986:60:0;;;;;;;:::i;21937:284::-;22167:6;22161:13;22152:6;22148:2;22144:15;22137:38;21689:549;-1:-1:-1;;;;;;21818:51:0;-1:-1:-1;;;21818:51:0;;-1:-1:-1;21811:58:0;;21651:648;-1:-1:-1;22281:4:0;21467:841;;;;;;:::o;19123:341::-;19263:18;19269:2;19273:7;19263:5;:18::i;:::-;19318:54;19349:1;19353:2;19357:7;19366:5;19318:22;:54::i;:::-;19294:160;;;;-1:-1:-1;;;19294:160:0;;;;;;;:::i;19480:402::-;-1:-1:-1;;;;;19562:16:0;;19554:61;;;;-1:-1:-1;;;19554:61:0;;13849:2:1;19554:61:0;;;13831:21:1;;;13868:18;;;13861:30;13927:34;13907:18;;;13900:62;13979:18;;19554:61:0;13647:356:1;19554:61:0;18537:4;18563:16;;;:7;:16;;;;;;-1:-1:-1;;;;;18563:16:0;:30;19628:58;;;;-1:-1:-1;;;19628:58:0;;9965:2:1;19628:58:0;;;9947:21:1;10004:2;9984:18;;;9977:30;10043;10023:18;;;10016:58;10091:18;;19628:58:0;9763:352:1;19628:58:0;-1:-1:-1;;;;;19765:13:0;;;;;;:9;:13;;;;;:18;;19782:1;;19765:13;:18;;19782:1;;19765:18;:::i;:::-;;;;-1:-1:-1;;19796:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;19796:21:0;-1:-1:-1;;;;;19796:21:0;;;;;;;;19839:33;;19796:16;;;19839:33;;19796:16;;19839:33;19480:402;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;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:72;;;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:45;;;532:1;529;522:12;491:45;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;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:615::-;3057:6;3065;3118:2;3106:9;3097:7;3093:23;3089:32;3086:52;;;3134:1;3131;3124:12;3086:52;3174:9;3161:23;3203:18;3244:2;3236:6;3233:14;3230:34;;;3260:1;3257;3250:12;3230:34;3298:6;3287:9;3283:22;3273:32;;3343:7;3336:4;3332:2;3328:13;3324:27;3314:55;;3365:1;3362;3355:12;3314:55;3405:2;3392:16;3431:2;3423:6;3420:14;3417:34;;;3447:1;3444;3437:12;3417:34;3500:7;3495:2;3485:6;3482:1;3478:14;3474:2;3470:23;3466:32;3463:45;3460:65;;;3521:1;3518;3511:12;3460:65;3552:2;3544:11;;;;;3574:6;;-1:-1:-1;2971:615:1;;-1:-1:-1;;;;2971:615:1:o;3591:180::-;3647:6;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3739:26;3755:9;3739:26;:::i;3776:245::-;3834:6;3887:2;3875:9;3866:7;3862:23;3858:32;3855:52;;;3903:1;3900;3893:12;3855:52;3942:9;3929:23;3961:30;3985:5;3961:30;:::i;4026:249::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;4196:9;4190:16;4215:30;4239:5;4215:30;:::i;4280:450::-;4349:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;4458:9;4445:23;4491:18;4483:6;4480:30;4477:50;;;4523:1;4520;4513:12;4477:50;4546:22;;4599:4;4591:13;;4587:27;-1:-1:-1;4577:55:1;;4628:1;4625;4618:12;4577:55;4651:73;4716:7;4711:2;4698:16;4693:2;4689;4685:11;4651:73;:::i;4735:180::-;4794:6;4847:2;4835:9;4826:7;4822:23;4818:32;4815:52;;;4863:1;4860;4853:12;4815:52;-1:-1:-1;4886:23:1;;4735:180;-1:-1:-1;4735:180:1:o;4920:254::-;4988:6;4996;5049:2;5037:9;5028:7;5024:23;5020:32;5017:52;;;5065:1;5062;5055:12;5017:52;5101:9;5088:23;5078:33;;5130:38;5164:2;5153:9;5149:18;5130:38;:::i;5179:257::-;5220:3;5258:5;5252:12;5285:6;5280:3;5273:19;5301:63;5357:6;5350:4;5345:3;5341:14;5334:4;5327:5;5323:16;5301:63;:::i;:::-;5418:2;5397:15;-1:-1:-1;;5393:29:1;5384:39;;;;5425:4;5380:50;;5179:257;-1:-1:-1;;5179:257:1:o;5441:1527::-;5665:3;5703:6;5697:13;5729:4;5742:51;5786:6;5781:3;5776:2;5768:6;5764:15;5742:51;:::i;:::-;5856:13;;5815:16;;;;5878:55;5856:13;5815:16;5900:15;;;5878:55;:::i;:::-;6022:13;;5955:20;;;5995:1;;6082;6104:18;;;;6157;;;;6184:93;;6262:4;6252:8;6248:19;6236:31;;6184:93;6325:2;6315:8;6312:16;6292:18;6289:40;6286:167;;;-1:-1:-1;;;6352:33:1;;6408:4;6405:1;6398:15;6438:4;6359:3;6426:17;6286:167;6469:18;6496:110;;;;6620:1;6615:328;;;;6462:481;;6496:110;-1:-1:-1;;6531:24:1;;6517:39;;6576:20;;;;-1:-1:-1;6496:110:1;;6615:328;18084:1;18077:14;;;18121:4;18108:18;;6710:1;6724:169;6738:8;6735:1;6732:15;6724:169;;;6820:14;;6805:13;;;6798:37;6863:16;;;;6755:10;;6724:169;;;6728:3;;6924:8;6917:5;6913:20;6906:27;;6462:481;-1:-1:-1;6959:3:1;;5441:1527;-1:-1:-1;;;;;;;;;;;5441:1527:1:o;7391:488::-;-1:-1:-1;;;;;7660:15:1;;;7642:34;;7712:15;;7707:2;7692:18;;7685:43;7759:2;7744:18;;7737:34;;;7807:3;7802:2;7787:18;;7780:31;;;7585:4;;7828:45;;7853:19;;7845:6;7828:45;:::i;:::-;7820:53;7391:488;-1:-1:-1;;;;;;7391:488:1:o;7884:632::-;8055:2;8107:21;;;8177:13;;8080:18;;;8199:22;;;8026:4;;8055:2;8278:15;;;;8252:2;8237:18;;;8026:4;8321:169;8335:6;8332:1;8329:13;8321:169;;;8396:13;;8384:26;;8465:15;;;;8430:12;;;;8357:1;8350:9;8321:169;;;-1:-1:-1;8507:3:1;;7884:632;-1:-1:-1;;;;;;7884:632:1:o;8713:219::-;8862:2;8851:9;8844:21;8825:4;8882:44;8922:2;8911:9;8907:18;8899:6;8882:44;:::i;8937:414::-;9139:2;9121:21;;;9178:2;9158:18;;;9151:30;9217:34;9212:2;9197:18;;9190:62;-1:-1:-1;;;9283:2:1;9268:18;;9261:48;9341:3;9326:19;;8937:414::o;10120:344::-;10322:2;10304:21;;;10361:2;10341:18;;;10334:30;-1:-1:-1;;;10395:2:1;10380:18;;10373:50;10455:2;10440:18;;10120:344::o;14421:356::-;14623:2;14605:21;;;14642:18;;;14635:30;14701:34;14696:2;14681:18;;14674:62;14768:2;14753:18;;14421:356::o;16362:344::-;16564:2;16546:21;;;16603:2;16583:18;;;16576:30;-1:-1:-1;;;16637:2:1;16622:18;;16615:50;16697:2;16682:18;;16362:344::o;16711:413::-;16913:2;16895:21;;;16952:2;16932:18;;;16925:30;16991:34;16986:2;16971:18;;16964:62;-1:-1:-1;;;17057:2:1;17042:18;;17035:47;17114:3;17099:19;;16711:413::o;18137:128::-;18177:3;18208:1;18204:6;18201:1;18198:13;18195:39;;;18214:18;;:::i;:::-;-1:-1:-1;18250:9:1;;18137:128::o;18270:120::-;18310:1;18336;18326:35;;18341:18;;:::i;:::-;-1:-1:-1;18375:9:1;;18270:120::o;18395:168::-;18435:7;18501:1;18497;18493:6;18489:14;18486:1;18483:21;18478:1;18471:9;18464:17;18460:45;18457:71;;;18508:18;;:::i;:::-;-1:-1:-1;18548:9:1;;18395:168::o;18568:125::-;18608:4;18636:1;18633;18630:8;18627:34;;;18641:18;;:::i;:::-;-1:-1:-1;18678:9:1;;18568:125::o;18698:258::-;18770:1;18780:113;18794:6;18791:1;18788:13;18780:113;;;18870:11;;;18864:18;18851:11;;;18844:39;18816:2;18809:10;18780:113;;;18911:6;18908:1;18905:13;18902:48;;;-1:-1:-1;;18946:1:1;18928:16;;18921:27;18698:258::o;18961:380::-;19040:1;19036:12;;;;19083;;;19104:61;;19158:4;19150:6;19146:17;19136:27;;19104:61;19211:2;19203:6;19200:14;19180:18;19177:38;19174:161;;;19257:10;19252:3;19248:20;19245:1;19238:31;19292:4;19289:1;19282:15;19320:4;19317:1;19310:15;19174:161;;18961:380;;;:::o;19346:135::-;19385:3;-1:-1:-1;;19406:17:1;;19403:43;;;19426:18;;:::i;:::-;-1:-1:-1;19473:1:1;19462:13;;19346:135::o;19486:112::-;19518:1;19544;19534:35;;19549:18;;:::i;:::-;-1:-1:-1;19583:9:1;;19486:112::o;19603:127::-;19664:10;19659:3;19655:20;19652:1;19645:31;19695:4;19692:1;19685:15;19719:4;19716:1;19709:15;19735:127;19796:10;19791:3;19787:20;19784:1;19777:31;19827:4;19824:1;19817:15;19851:4;19848:1;19841:15;19867:127;19928:10;19923:3;19919:20;19916:1;19909:31;19959:4;19956:1;19949:15;19983:4;19980:1;19973:15;19999:127;20060:10;20055:3;20051:20;20048:1;20041:31;20091:4;20088:1;20081:15;20115:4;20112:1;20105:15;20131:131;-1:-1:-1;;;;;;20205:32:1;;20195:43;;20185:71;;20252:1;20249;20242:12

Swarm Source

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