ETH Price: $2,308.65 (+0.06%)

Token

BananaDAO (BDO)
 

Overview

Max Total Supply

64 BDO

Holders

10

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
10 BDO
0x0d76fa6fb3a3aad1e1010da6def5122fba3f4a2e
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:
BananaDAO

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-19
*/

// SPDX-License-Identifier: MIT


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


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

pragma solidity ^0.8.0;


library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        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;
    }
}

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


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

pragma solidity ^0.8.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) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    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.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {

    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

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

   
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }


    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }


    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) 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.8.0;


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

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;


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

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.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;
    }
}

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


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

pragma solidity ^0.8.0;



interface IERC721 is IERC165 {

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


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


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

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

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

 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;


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

    function setApprovalForAll(address operator, bool _approved) external;


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

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;



interface IERC721Metadata is IERC721 {

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


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

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

pragma solidity ^0.8.0;


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;


    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

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

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }


    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }


    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }


    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

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


pragma solidity >=0.7.0 <0.9.0;


contract BananaDAO is ERC721, Ownable {
  using Strings for uint256;
  using Counters for Counters.Counter;
  Counters.Counter private supply;

  string public baseURI;
  string public uriSuffix = ".json";
  uint256 public cost = 0.019 ether;
  uint256 public maxSupply = 1111;
  uint256 public maxMintAmountPerTx = 20;
  
   constructor(string memory _initBaseURI)
        ERC721("BananaDAO", "BDO")
    {
        setBaseURI(_initBaseURI);
        
    }

  function totalSupply() public view returns (uint256) {
    return supply.current();
  }
  function updateCost() internal view returns (uint256 _cost){
      if(totalSupply() < 333){
          return 0.00 ether;
      }
      else{return 0.019 ether;}

  }
  function mint(uint256 _mintAmount) public payable {
    require(_mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!");
    require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!");
    require(msg.value >= updateCost() * _mintAmount, "Insufficient funds!");
    _mintLoop(msg.sender, _mintAmount);
  }

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

    string memory currentBaseURI = _baseURI();
    return
            bytes(currentBaseURI).length > 0
                ? string(
                    abi.encodePacked(
                        currentBaseURI,
                        _tokenId.toString(),
                        uriSuffix
                    )
                )
                : "";
  }
    function _baseURI() internal view override returns (string memory) {
        return baseURI;
    }
    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        baseURI = _newBaseURI;
    }

  function withdraw() public onlyOwner {
    (bool os, ) = payable(owner()).call{value: address(this).balance}("");
    require(os);
  }

  function _mintLoop(address _receiver, uint256 _mintAmount) internal {
    for (uint256 i = 0; i < _mintAmount; i++) {
      supply.increment();
      _safeMint(_receiver, supply.current());
    }
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600990805190602001906200005192919062000316565b50664380663abb8000600a55610457600b556014600c553480156200007557600080fd5b5060405162003f4e38038062003f4e83398181016040528101906200009b919062000444565b6040518060400160405280600981526020017f42616e616e6144414f00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42444f000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200011f92919062000316565b5080600190805190602001906200013892919062000316565b5050506200015b6200014f6200017360201b60201c565b6200017b60201b60201c565b6200016c816200024160201b60201c565b506200069c565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002516200017360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000277620002ec60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c790620004bc565b60405180910390fd5b8060089080519060200190620002e892919062000316565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003249062000584565b90600052602060002090601f01602090048101928262000348576000855562000394565b82601f106200036357805160ff191683800117855562000394565b8280016001018555821562000394579182015b828111156200039357825182559160200191906001019062000376565b5b509050620003a39190620003a7565b5090565b5b80821115620003c2576000816000905550600101620003a8565b5090565b6000620003dd620003d78462000507565b620004de565b905082815260208101848484011115620003fc57620003fb62000653565b5b620004098482856200054e565b509392505050565b600082601f8301126200042957620004286200064e565b5b81516200043b848260208601620003c6565b91505092915050565b6000602082840312156200045d576200045c6200065d565b5b600082015167ffffffffffffffff8111156200047e576200047d62000658565b5b6200048c8482850162000411565b91505092915050565b6000620004a46020836200053d565b9150620004b18262000673565b602082019050919050565b60006020820190508181036000830152620004d78162000495565b9050919050565b6000620004ea620004fd565b9050620004f88282620005ba565b919050565b6000604051905090565b600067ffffffffffffffff8211156200052557620005246200061f565b5b620005308262000662565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200056e57808201518184015260208101905062000551565b838111156200057e576000848401525b50505050565b600060028204905060018216806200059d57607f821691505b60208210811415620005b457620005b3620005f0565b5b50919050565b620005c58262000662565b810181811067ffffffffffffffff82111715620005e757620005e66200061f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6138a280620006ac6000396000f3fe6080604052600436106101815760003560e01c80636c0360eb116100d1578063a0712d681161008a578063c87b56dd11610064578063c87b56dd1461054f578063d5abeb011461058c578063e985e9c5146105b7578063f2fde38b146105f457610181565b8063a0712d68146104e1578063a22cb465146104fd578063b88d4fde1461052657610181565b80636c0360eb146103e157806370a082311461040c578063715018a6146104495780638da5cb5b1461046057806394354fd01461048b57806395d89b41146104b657610181565b806323b872dd1161013e578063438b630011610118578063438b6300146103135780635503a0e81461035057806355f804b31461037b5780636352211e146103a457610181565b806323b872dd146102aa5780633ccfd60b146102d357806342842e0e146102ea57610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b57806313faede61461025457806318160ddd1461027f575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a89190612578565b61061d565b6040516101ba9190612ba7565b60405180910390f35b3480156101cf57600080fd5b506101d86106ff565b6040516101e59190612bc2565b60405180910390f35b3480156101fa57600080fd5b506102156004803603810190610210919061261b565b610791565b6040516102229190612b1e565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612538565b610816565b005b34801561026057600080fd5b5061026961092e565b6040516102769190612e44565b60405180910390f35b34801561028b57600080fd5b50610294610934565b6040516102a19190612e44565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612422565b610945565b005b3480156102df57600080fd5b506102e86109a5565b005b3480156102f657600080fd5b50610311600480360381019061030c9190612422565b610aa1565b005b34801561031f57600080fd5b5061033a600480360381019061033591906123b5565b610ac1565b6040516103479190612b85565b60405180910390f35b34801561035c57600080fd5b50610365610bcc565b6040516103729190612bc2565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d91906125d2565b610c5a565b005b3480156103b057600080fd5b506103cb60048036038101906103c6919061261b565b610cf0565b6040516103d89190612b1e565b60405180910390f35b3480156103ed57600080fd5b506103f6610da2565b6040516104039190612bc2565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906123b5565b610e30565b6040516104409190612e44565b60405180910390f35b34801561045557600080fd5b5061045e610ee8565b005b34801561046c57600080fd5b50610475610f70565b6040516104829190612b1e565b60405180910390f35b34801561049757600080fd5b506104a0610f9a565b6040516104ad9190612e44565b60405180910390f35b3480156104c257600080fd5b506104cb610fa0565b6040516104d89190612bc2565b60405180910390f35b6104fb60048036038101906104f6919061261b565b611032565b005b34801561050957600080fd5b50610524600480360381019061051f91906124f8565b61113e565b005b34801561053257600080fd5b5061054d60048036038101906105489190612475565b611154565b005b34801561055b57600080fd5b506105766004803603810190610571919061261b565b6111b6565b6040516105839190612bc2565b60405180910390f35b34801561059857600080fd5b506105a1611260565b6040516105ae9190612e44565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906123e2565b611266565b6040516105eb9190612ba7565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906123b5565b6112fa565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106e857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106f857506106f7826113f2565b5b9050919050565b60606000805461070e9061314d565b80601f016020809104026020016040519081016040528092919081815260200182805461073a9061314d565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b600061079c8261145c565b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612d44565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082182610cf0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990612dc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b16114c8565b73ffffffffffffffffffffffffffffffffffffffff1614806108e057506108df816108da6114c8565b611266565b5b61091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690612cc4565b60405180910390fd5b61092983836114d0565b505050565b600a5481565b60006109406007611589565b905090565b6109566109506114c8565b82611597565b610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90612e04565b60405180910390fd5b6109a0838383611675565b505050565b6109ad6114c8565b73ffffffffffffffffffffffffffffffffffffffff166109cb610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890612d64565b60405180910390fd5b6000610a2b610f70565b73ffffffffffffffffffffffffffffffffffffffff1647604051610a4e90612b09565b60006040518083038185875af1925050503d8060008114610a8b576040519150601f19603f3d011682016040523d82523d6000602084013e610a90565b606091505b5050905080610a9e57600080fd5b50565b610abc83838360405180602001604052806000815250611154565b505050565b60606000610ace83610e30565b905060008167ffffffffffffffff811115610aec57610aeb6132e6565b5b604051908082528060200260200182016040528015610b1a5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610b375750600b548211155b15610bc0576000610b4783610cf0565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bac5782848381518110610b9157610b906132b7565b5b6020026020010181815250508180610ba8906131b0565b9250505b8280610bb7906131b0565b93505050610b26565b82945050505050919050565b60098054610bd99061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c059061314d565b8015610c525780601f10610c2757610100808354040283529160200191610c52565b820191906000526020600020905b815481529060010190602001808311610c3557829003601f168201915b505050505081565b610c626114c8565b73ffffffffffffffffffffffffffffffffffffffff16610c80610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612d64565b60405180910390fd5b8060089080519060200190610cec9291906121c9565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090612d04565b60405180910390fd5b80915050919050565b60088054610daf9061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddb9061314d565b8015610e285780601f10610dfd57610100808354040283529160200191610e28565b820191906000526020600020905b815481529060010190602001808311610e0b57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612ce4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ef06114c8565b73ffffffffffffffffffffffffffffffffffffffff16610f0e610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612d64565b60405180910390fd5b610f6e60006118d1565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b606060018054610faf9061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdb9061314d565b80156110285780601f10610ffd57610100808354040283529160200191611028565b820191906000526020600020905b81548152906001019060200180831161100b57829003601f168201915b5050505050905090565b6000811180156110445750600c548111155b611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90612c44565b60405180910390fd5b600b54816110916007611589565b61109b9190612f82565b11156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390612de4565b60405180910390fd5b806110e5611997565b6110ef9190613009565b341015611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890612e24565b60405180910390fd5b61113b33826119c1565b50565b6111506111496114c8565b8383611a01565b5050565b61116561115f6114c8565b83611597565b6111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612e04565b60405180910390fd5b6111b084848484611b6e565b50505050565b60606111c18261145c565b611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612da4565b60405180910390fd5b600061120a611bca565b9050600081511161122a5760405180602001604052806000815250611258565b8061123484611c5c565b600960405160200161124893929190612ad8565b6040516020818303038152906040525b915050919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113026114c8565b73ffffffffffffffffffffffffffffffffffffffff16611320610f70565b73ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612d64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612c04565b60405180910390fd5b6113ef816118d1565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661154383610cf0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b60006115a28261145c565b6115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612ca4565b60405180910390fd5b60006115ec83610cf0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061165b57508373ffffffffffffffffffffffffffffffffffffffff1661164384610791565b73ffffffffffffffffffffffffffffffffffffffff16145b8061166c575061166b8185611266565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661169582610cf0565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e290612d84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612c64565b60405180910390fd5b611766838383611dbd565b6117716000826114d0565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c19190613063565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118189190612f82565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061014d6119a4610934565b10156119b357600090506119be565b664380663abb800090505b90565b60005b818110156119fc576119d66007611dc2565b6119e9836119e46007611589565b611dd8565b80806119f4906131b0565b9150506119c4565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790612c84565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b619190612ba7565b60405180910390a3505050565b611b79848484611675565b611b8584848484611df6565b611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb90612be4565b60405180910390fd5b50505050565b606060088054611bd99061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c059061314d565b8015611c525780601f10611c2757610100808354040283529160200191611c52565b820191906000526020600020905b815481529060010190602001808311611c3557829003601f168201915b5050505050905090565b60606000821415611ca4576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611db8565b600082905060005b60008214611cd6578080611cbf906131b0565b915050600a82611ccf9190612fd8565b9150611cac565b60008167ffffffffffffffff811115611cf257611cf16132e6565b5b6040519080825280601f01601f191660200182016040528015611d245781602001600182028036833780820191505090505b5090505b60008514611db157600182611d3d9190613063565b9150600a85611d4c91906131f9565b6030611d589190612f82565b60f81b818381518110611d6e57611d6d6132b7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611daa9190612fd8565b9450611d28565b8093505050505b919050565b505050565b6001816000016000828254019250508190555050565b611df2828260405180602001604052806000815250611f8d565b5050565b6000611e178473ffffffffffffffffffffffffffffffffffffffff16611fe8565b15611f80578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611e406114c8565b8786866040518563ffffffff1660e01b8152600401611e629493929190612b39565b602060405180830381600087803b158015611e7c57600080fd5b505af1925050508015611ead57506040513d601f19601f82011682018060405250810190611eaa91906125a5565b60015b611f30573d8060008114611edd576040519150601f19603f3d011682016040523d82523d6000602084013e611ee2565b606091505b50600081511415611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90612be4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611f85565b600190505b949350505050565b611f978383611ffb565b611fa46000848484611df6565b611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90612be4565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290612d24565b60405180910390fd5b6120748161145c565b156120b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ab90612c24565b60405180910390fd5b6120c060008383611dbd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121109190612f82565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546121d59061314d565b90600052602060002090601f0160209004810192826121f7576000855561223e565b82601f1061221057805160ff191683800117855561223e565b8280016001018555821561223e579182015b8281111561223d578251825591602001919060010190612222565b5b50905061224b919061224f565b5090565b5b80821115612268576000816000905550600101612250565b5090565b600061227f61227a84612e84565b612e5f565b90508281526020810184848401111561229b5761229a61331a565b5b6122a684828561310b565b509392505050565b60006122c16122bc84612eb5565b612e5f565b9050828152602081018484840111156122dd576122dc61331a565b5b6122e884828561310b565b509392505050565b6000813590506122ff81613810565b92915050565b60008135905061231481613827565b92915050565b6000813590506123298161383e565b92915050565b60008151905061233e8161383e565b92915050565b600082601f83011261235957612358613315565b5b813561236984826020860161226c565b91505092915050565b600082601f83011261238757612386613315565b5b81356123978482602086016122ae565b91505092915050565b6000813590506123af81613855565b92915050565b6000602082840312156123cb576123ca613324565b5b60006123d9848285016122f0565b91505092915050565b600080604083850312156123f9576123f8613324565b5b6000612407858286016122f0565b9250506020612418858286016122f0565b9150509250929050565b60008060006060848603121561243b5761243a613324565b5b6000612449868287016122f0565b935050602061245a868287016122f0565b925050604061246b868287016123a0565b9150509250925092565b6000806000806080858703121561248f5761248e613324565b5b600061249d878288016122f0565b94505060206124ae878288016122f0565b93505060406124bf878288016123a0565b925050606085013567ffffffffffffffff8111156124e0576124df61331f565b5b6124ec87828801612344565b91505092959194509250565b6000806040838503121561250f5761250e613324565b5b600061251d858286016122f0565b925050602061252e85828601612305565b9150509250929050565b6000806040838503121561254f5761254e613324565b5b600061255d858286016122f0565b925050602061256e858286016123a0565b9150509250929050565b60006020828403121561258e5761258d613324565b5b600061259c8482850161231a565b91505092915050565b6000602082840312156125bb576125ba613324565b5b60006125c98482850161232f565b91505092915050565b6000602082840312156125e8576125e7613324565b5b600082013567ffffffffffffffff8111156126065761260561331f565b5b61261284828501612372565b91505092915050565b60006020828403121561263157612630613324565b5b600061263f848285016123a0565b91505092915050565b60006126548383612aba565b60208301905092915050565b61266981613097565b82525050565b600061267a82612f0b565b6126848185612f39565b935061268f83612ee6565b8060005b838110156126c05781516126a78882612648565b97506126b283612f2c565b925050600181019050612693565b5085935050505092915050565b6126d6816130a9565b82525050565b60006126e782612f16565b6126f18185612f4a565b935061270181856020860161311a565b61270a81613329565b840191505092915050565b600061272082612f21565b61272a8185612f66565b935061273a81856020860161311a565b61274381613329565b840191505092915050565b600061275982612f21565b6127638185612f77565b935061277381856020860161311a565b80840191505092915050565b6000815461278c8161314d565b6127968186612f77565b945060018216600081146127b157600181146127c2576127f5565b60ff198316865281860193506127f5565b6127cb85612ef6565b60005b838110156127ed578154818901526001820191506020810190506127ce565b838801955050505b50505092915050565b600061280b603283612f66565b91506128168261333a565b604082019050919050565b600061282e602683612f66565b915061283982613389565b604082019050919050565b6000612851601c83612f66565b915061285c826133d8565b602082019050919050565b6000612874601483612f66565b915061287f82613401565b602082019050919050565b6000612897602483612f66565b91506128a28261342a565b604082019050919050565b60006128ba601983612f66565b91506128c582613479565b602082019050919050565b60006128dd602c83612f66565b91506128e8826134a2565b604082019050919050565b6000612900603883612f66565b915061290b826134f1565b604082019050919050565b6000612923602a83612f66565b915061292e82613540565b604082019050919050565b6000612946602983612f66565b91506129518261358f565b604082019050919050565b6000612969602083612f66565b9150612974826135de565b602082019050919050565b600061298c602c83612f66565b915061299782613607565b604082019050919050565b60006129af602083612f66565b91506129ba82613656565b602082019050919050565b60006129d2602983612f66565b91506129dd8261367f565b604082019050919050565b60006129f5602f83612f66565b9150612a00826136ce565b604082019050919050565b6000612a18602183612f66565b9150612a238261371d565b604082019050919050565b6000612a3b600083612f5b565b9150612a468261376c565b600082019050919050565b6000612a5e601483612f66565b9150612a698261376f565b602082019050919050565b6000612a81603183612f66565b9150612a8c82613798565b604082019050919050565b6000612aa4601383612f66565b9150612aaf826137e7565b602082019050919050565b612ac381613101565b82525050565b612ad281613101565b82525050565b6000612ae4828661274e565b9150612af0828561274e565b9150612afc828461277f565b9150819050949350505050565b6000612b1482612a2e565b9150819050919050565b6000602082019050612b336000830184612660565b92915050565b6000608082019050612b4e6000830187612660565b612b5b6020830186612660565b612b686040830185612ac9565b8181036060830152612b7a81846126dc565b905095945050505050565b60006020820190508181036000830152612b9f818461266f565b905092915050565b6000602082019050612bbc60008301846126cd565b92915050565b60006020820190508181036000830152612bdc8184612715565b905092915050565b60006020820190508181036000830152612bfd816127fe565b9050919050565b60006020820190508181036000830152612c1d81612821565b9050919050565b60006020820190508181036000830152612c3d81612844565b9050919050565b60006020820190508181036000830152612c5d81612867565b9050919050565b60006020820190508181036000830152612c7d8161288a565b9050919050565b60006020820190508181036000830152612c9d816128ad565b9050919050565b60006020820190508181036000830152612cbd816128d0565b9050919050565b60006020820190508181036000830152612cdd816128f3565b9050919050565b60006020820190508181036000830152612cfd81612916565b9050919050565b60006020820190508181036000830152612d1d81612939565b9050919050565b60006020820190508181036000830152612d3d8161295c565b9050919050565b60006020820190508181036000830152612d5d8161297f565b9050919050565b60006020820190508181036000830152612d7d816129a2565b9050919050565b60006020820190508181036000830152612d9d816129c5565b9050919050565b60006020820190508181036000830152612dbd816129e8565b9050919050565b60006020820190508181036000830152612ddd81612a0b565b9050919050565b60006020820190508181036000830152612dfd81612a51565b9050919050565b60006020820190508181036000830152612e1d81612a74565b9050919050565b60006020820190508181036000830152612e3d81612a97565b9050919050565b6000602082019050612e596000830184612ac9565b92915050565b6000612e69612e7a565b9050612e75828261317f565b919050565b6000604051905090565b600067ffffffffffffffff821115612e9f57612e9e6132e6565b5b612ea882613329565b9050602081019050919050565b600067ffffffffffffffff821115612ed057612ecf6132e6565b5b612ed982613329565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612f8d82613101565b9150612f9883613101565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612fcd57612fcc61322a565b5b828201905092915050565b6000612fe382613101565b9150612fee83613101565b925082612ffe57612ffd613259565b5b828204905092915050565b600061301482613101565b915061301f83613101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130585761305761322a565b5b828202905092915050565b600061306e82613101565b915061307983613101565b92508282101561308c5761308b61322a565b5b828203905092915050565b60006130a2826130e1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561313857808201518184015260208101905061311d565b83811115613147576000848401525b50505050565b6000600282049050600182168061316557607f821691505b6020821081141561317957613178613288565b5b50919050565b61318882613329565b810181811067ffffffffffffffff821117156131a7576131a66132e6565b5b80604052505050565b60006131bb82613101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131ee576131ed61322a565b5b600182019050919050565b600061320482613101565b915061320f83613101565b92508261321f5761321e613259565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61381981613097565b811461382457600080fd5b50565b613830816130a9565b811461383b57600080fd5b50565b613847816130b5565b811461385257600080fd5b50565b61385e81613101565b811461386957600080fd5b5056fea264697066735822122024f3d4de066fc80f43415f7aa9b88a76934c4925cdaa55bdc8775f7d57a2ccec64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d6554506f73335059674b54764e7848775a5274505a59714b384a6371344767596456344e55373943426653672f00000000000000000000

Deployed Bytecode

0x6080604052600436106101815760003560e01c80636c0360eb116100d1578063a0712d681161008a578063c87b56dd11610064578063c87b56dd1461054f578063d5abeb011461058c578063e985e9c5146105b7578063f2fde38b146105f457610181565b8063a0712d68146104e1578063a22cb465146104fd578063b88d4fde1461052657610181565b80636c0360eb146103e157806370a082311461040c578063715018a6146104495780638da5cb5b1461046057806394354fd01461048b57806395d89b41146104b657610181565b806323b872dd1161013e578063438b630011610118578063438b6300146103135780635503a0e81461035057806355f804b31461037b5780636352211e146103a457610181565b806323b872dd146102aa5780633ccfd60b146102d357806342842e0e146102ea57610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b57806313faede61461025457806318160ddd1461027f575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a89190612578565b61061d565b6040516101ba9190612ba7565b60405180910390f35b3480156101cf57600080fd5b506101d86106ff565b6040516101e59190612bc2565b60405180910390f35b3480156101fa57600080fd5b506102156004803603810190610210919061261b565b610791565b6040516102229190612b1e565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612538565b610816565b005b34801561026057600080fd5b5061026961092e565b6040516102769190612e44565b60405180910390f35b34801561028b57600080fd5b50610294610934565b6040516102a19190612e44565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612422565b610945565b005b3480156102df57600080fd5b506102e86109a5565b005b3480156102f657600080fd5b50610311600480360381019061030c9190612422565b610aa1565b005b34801561031f57600080fd5b5061033a600480360381019061033591906123b5565b610ac1565b6040516103479190612b85565b60405180910390f35b34801561035c57600080fd5b50610365610bcc565b6040516103729190612bc2565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d91906125d2565b610c5a565b005b3480156103b057600080fd5b506103cb60048036038101906103c6919061261b565b610cf0565b6040516103d89190612b1e565b60405180910390f35b3480156103ed57600080fd5b506103f6610da2565b6040516104039190612bc2565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906123b5565b610e30565b6040516104409190612e44565b60405180910390f35b34801561045557600080fd5b5061045e610ee8565b005b34801561046c57600080fd5b50610475610f70565b6040516104829190612b1e565b60405180910390f35b34801561049757600080fd5b506104a0610f9a565b6040516104ad9190612e44565b60405180910390f35b3480156104c257600080fd5b506104cb610fa0565b6040516104d89190612bc2565b60405180910390f35b6104fb60048036038101906104f6919061261b565b611032565b005b34801561050957600080fd5b50610524600480360381019061051f91906124f8565b61113e565b005b34801561053257600080fd5b5061054d60048036038101906105489190612475565b611154565b005b34801561055b57600080fd5b506105766004803603810190610571919061261b565b6111b6565b6040516105839190612bc2565b60405180910390f35b34801561059857600080fd5b506105a1611260565b6040516105ae9190612e44565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906123e2565b611266565b6040516105eb9190612ba7565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906123b5565b6112fa565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106e857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106f857506106f7826113f2565b5b9050919050565b60606000805461070e9061314d565b80601f016020809104026020016040519081016040528092919081815260200182805461073a9061314d565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b600061079c8261145c565b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612d44565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082182610cf0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990612dc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b16114c8565b73ffffffffffffffffffffffffffffffffffffffff1614806108e057506108df816108da6114c8565b611266565b5b61091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690612cc4565b60405180910390fd5b61092983836114d0565b505050565b600a5481565b60006109406007611589565b905090565b6109566109506114c8565b82611597565b610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90612e04565b60405180910390fd5b6109a0838383611675565b505050565b6109ad6114c8565b73ffffffffffffffffffffffffffffffffffffffff166109cb610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890612d64565b60405180910390fd5b6000610a2b610f70565b73ffffffffffffffffffffffffffffffffffffffff1647604051610a4e90612b09565b60006040518083038185875af1925050503d8060008114610a8b576040519150601f19603f3d011682016040523d82523d6000602084013e610a90565b606091505b5050905080610a9e57600080fd5b50565b610abc83838360405180602001604052806000815250611154565b505050565b60606000610ace83610e30565b905060008167ffffffffffffffff811115610aec57610aeb6132e6565b5b604051908082528060200260200182016040528015610b1a5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610b375750600b548211155b15610bc0576000610b4783610cf0565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bac5782848381518110610b9157610b906132b7565b5b6020026020010181815250508180610ba8906131b0565b9250505b8280610bb7906131b0565b93505050610b26565b82945050505050919050565b60098054610bd99061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c059061314d565b8015610c525780601f10610c2757610100808354040283529160200191610c52565b820191906000526020600020905b815481529060010190602001808311610c3557829003601f168201915b505050505081565b610c626114c8565b73ffffffffffffffffffffffffffffffffffffffff16610c80610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612d64565b60405180910390fd5b8060089080519060200190610cec9291906121c9565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090612d04565b60405180910390fd5b80915050919050565b60088054610daf9061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddb9061314d565b8015610e285780601f10610dfd57610100808354040283529160200191610e28565b820191906000526020600020905b815481529060010190602001808311610e0b57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612ce4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ef06114c8565b73ffffffffffffffffffffffffffffffffffffffff16610f0e610f70565b73ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612d64565b60405180910390fd5b610f6e60006118d1565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b606060018054610faf9061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdb9061314d565b80156110285780601f10610ffd57610100808354040283529160200191611028565b820191906000526020600020905b81548152906001019060200180831161100b57829003601f168201915b5050505050905090565b6000811180156110445750600c548111155b611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90612c44565b60405180910390fd5b600b54816110916007611589565b61109b9190612f82565b11156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390612de4565b60405180910390fd5b806110e5611997565b6110ef9190613009565b341015611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890612e24565b60405180910390fd5b61113b33826119c1565b50565b6111506111496114c8565b8383611a01565b5050565b61116561115f6114c8565b83611597565b6111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612e04565b60405180910390fd5b6111b084848484611b6e565b50505050565b60606111c18261145c565b611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612da4565b60405180910390fd5b600061120a611bca565b9050600081511161122a5760405180602001604052806000815250611258565b8061123484611c5c565b600960405160200161124893929190612ad8565b6040516020818303038152906040525b915050919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113026114c8565b73ffffffffffffffffffffffffffffffffffffffff16611320610f70565b73ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612d64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612c04565b60405180910390fd5b6113ef816118d1565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661154383610cf0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b60006115a28261145c565b6115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612ca4565b60405180910390fd5b60006115ec83610cf0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061165b57508373ffffffffffffffffffffffffffffffffffffffff1661164384610791565b73ffffffffffffffffffffffffffffffffffffffff16145b8061166c575061166b8185611266565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661169582610cf0565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e290612d84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612c64565b60405180910390fd5b611766838383611dbd565b6117716000826114d0565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c19190613063565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118189190612f82565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061014d6119a4610934565b10156119b357600090506119be565b664380663abb800090505b90565b60005b818110156119fc576119d66007611dc2565b6119e9836119e46007611589565b611dd8565b80806119f4906131b0565b9150506119c4565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790612c84565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b619190612ba7565b60405180910390a3505050565b611b79848484611675565b611b8584848484611df6565b611bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbb90612be4565b60405180910390fd5b50505050565b606060088054611bd99061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c059061314d565b8015611c525780601f10611c2757610100808354040283529160200191611c52565b820191906000526020600020905b815481529060010190602001808311611c3557829003601f168201915b5050505050905090565b60606000821415611ca4576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611db8565b600082905060005b60008214611cd6578080611cbf906131b0565b915050600a82611ccf9190612fd8565b9150611cac565b60008167ffffffffffffffff811115611cf257611cf16132e6565b5b6040519080825280601f01601f191660200182016040528015611d245781602001600182028036833780820191505090505b5090505b60008514611db157600182611d3d9190613063565b9150600a85611d4c91906131f9565b6030611d589190612f82565b60f81b818381518110611d6e57611d6d6132b7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611daa9190612fd8565b9450611d28565b8093505050505b919050565b505050565b6001816000016000828254019250508190555050565b611df2828260405180602001604052806000815250611f8d565b5050565b6000611e178473ffffffffffffffffffffffffffffffffffffffff16611fe8565b15611f80578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611e406114c8565b8786866040518563ffffffff1660e01b8152600401611e629493929190612b39565b602060405180830381600087803b158015611e7c57600080fd5b505af1925050508015611ead57506040513d601f19601f82011682018060405250810190611eaa91906125a5565b60015b611f30573d8060008114611edd576040519150601f19603f3d011682016040523d82523d6000602084013e611ee2565b606091505b50600081511415611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90612be4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611f85565b600190505b949350505050565b611f978383611ffb565b611fa46000848484611df6565b611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90612be4565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290612d24565b60405180910390fd5b6120748161145c565b156120b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ab90612c24565b60405180910390fd5b6120c060008383611dbd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121109190612f82565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546121d59061314d565b90600052602060002090601f0160209004810192826121f7576000855561223e565b82601f1061221057805160ff191683800117855561223e565b8280016001018555821561223e579182015b8281111561223d578251825591602001919060010190612222565b5b50905061224b919061224f565b5090565b5b80821115612268576000816000905550600101612250565b5090565b600061227f61227a84612e84565b612e5f565b90508281526020810184848401111561229b5761229a61331a565b5b6122a684828561310b565b509392505050565b60006122c16122bc84612eb5565b612e5f565b9050828152602081018484840111156122dd576122dc61331a565b5b6122e884828561310b565b509392505050565b6000813590506122ff81613810565b92915050565b60008135905061231481613827565b92915050565b6000813590506123298161383e565b92915050565b60008151905061233e8161383e565b92915050565b600082601f83011261235957612358613315565b5b813561236984826020860161226c565b91505092915050565b600082601f83011261238757612386613315565b5b81356123978482602086016122ae565b91505092915050565b6000813590506123af81613855565b92915050565b6000602082840312156123cb576123ca613324565b5b60006123d9848285016122f0565b91505092915050565b600080604083850312156123f9576123f8613324565b5b6000612407858286016122f0565b9250506020612418858286016122f0565b9150509250929050565b60008060006060848603121561243b5761243a613324565b5b6000612449868287016122f0565b935050602061245a868287016122f0565b925050604061246b868287016123a0565b9150509250925092565b6000806000806080858703121561248f5761248e613324565b5b600061249d878288016122f0565b94505060206124ae878288016122f0565b93505060406124bf878288016123a0565b925050606085013567ffffffffffffffff8111156124e0576124df61331f565b5b6124ec87828801612344565b91505092959194509250565b6000806040838503121561250f5761250e613324565b5b600061251d858286016122f0565b925050602061252e85828601612305565b9150509250929050565b6000806040838503121561254f5761254e613324565b5b600061255d858286016122f0565b925050602061256e858286016123a0565b9150509250929050565b60006020828403121561258e5761258d613324565b5b600061259c8482850161231a565b91505092915050565b6000602082840312156125bb576125ba613324565b5b60006125c98482850161232f565b91505092915050565b6000602082840312156125e8576125e7613324565b5b600082013567ffffffffffffffff8111156126065761260561331f565b5b61261284828501612372565b91505092915050565b60006020828403121561263157612630613324565b5b600061263f848285016123a0565b91505092915050565b60006126548383612aba565b60208301905092915050565b61266981613097565b82525050565b600061267a82612f0b565b6126848185612f39565b935061268f83612ee6565b8060005b838110156126c05781516126a78882612648565b97506126b283612f2c565b925050600181019050612693565b5085935050505092915050565b6126d6816130a9565b82525050565b60006126e782612f16565b6126f18185612f4a565b935061270181856020860161311a565b61270a81613329565b840191505092915050565b600061272082612f21565b61272a8185612f66565b935061273a81856020860161311a565b61274381613329565b840191505092915050565b600061275982612f21565b6127638185612f77565b935061277381856020860161311a565b80840191505092915050565b6000815461278c8161314d565b6127968186612f77565b945060018216600081146127b157600181146127c2576127f5565b60ff198316865281860193506127f5565b6127cb85612ef6565b60005b838110156127ed578154818901526001820191506020810190506127ce565b838801955050505b50505092915050565b600061280b603283612f66565b91506128168261333a565b604082019050919050565b600061282e602683612f66565b915061283982613389565b604082019050919050565b6000612851601c83612f66565b915061285c826133d8565b602082019050919050565b6000612874601483612f66565b915061287f82613401565b602082019050919050565b6000612897602483612f66565b91506128a28261342a565b604082019050919050565b60006128ba601983612f66565b91506128c582613479565b602082019050919050565b60006128dd602c83612f66565b91506128e8826134a2565b604082019050919050565b6000612900603883612f66565b915061290b826134f1565b604082019050919050565b6000612923602a83612f66565b915061292e82613540565b604082019050919050565b6000612946602983612f66565b91506129518261358f565b604082019050919050565b6000612969602083612f66565b9150612974826135de565b602082019050919050565b600061298c602c83612f66565b915061299782613607565b604082019050919050565b60006129af602083612f66565b91506129ba82613656565b602082019050919050565b60006129d2602983612f66565b91506129dd8261367f565b604082019050919050565b60006129f5602f83612f66565b9150612a00826136ce565b604082019050919050565b6000612a18602183612f66565b9150612a238261371d565b604082019050919050565b6000612a3b600083612f5b565b9150612a468261376c565b600082019050919050565b6000612a5e601483612f66565b9150612a698261376f565b602082019050919050565b6000612a81603183612f66565b9150612a8c82613798565b604082019050919050565b6000612aa4601383612f66565b9150612aaf826137e7565b602082019050919050565b612ac381613101565b82525050565b612ad281613101565b82525050565b6000612ae4828661274e565b9150612af0828561274e565b9150612afc828461277f565b9150819050949350505050565b6000612b1482612a2e565b9150819050919050565b6000602082019050612b336000830184612660565b92915050565b6000608082019050612b4e6000830187612660565b612b5b6020830186612660565b612b686040830185612ac9565b8181036060830152612b7a81846126dc565b905095945050505050565b60006020820190508181036000830152612b9f818461266f565b905092915050565b6000602082019050612bbc60008301846126cd565b92915050565b60006020820190508181036000830152612bdc8184612715565b905092915050565b60006020820190508181036000830152612bfd816127fe565b9050919050565b60006020820190508181036000830152612c1d81612821565b9050919050565b60006020820190508181036000830152612c3d81612844565b9050919050565b60006020820190508181036000830152612c5d81612867565b9050919050565b60006020820190508181036000830152612c7d8161288a565b9050919050565b60006020820190508181036000830152612c9d816128ad565b9050919050565b60006020820190508181036000830152612cbd816128d0565b9050919050565b60006020820190508181036000830152612cdd816128f3565b9050919050565b60006020820190508181036000830152612cfd81612916565b9050919050565b60006020820190508181036000830152612d1d81612939565b9050919050565b60006020820190508181036000830152612d3d8161295c565b9050919050565b60006020820190508181036000830152612d5d8161297f565b9050919050565b60006020820190508181036000830152612d7d816129a2565b9050919050565b60006020820190508181036000830152612d9d816129c5565b9050919050565b60006020820190508181036000830152612dbd816129e8565b9050919050565b60006020820190508181036000830152612ddd81612a0b565b9050919050565b60006020820190508181036000830152612dfd81612a51565b9050919050565b60006020820190508181036000830152612e1d81612a74565b9050919050565b60006020820190508181036000830152612e3d81612a97565b9050919050565b6000602082019050612e596000830184612ac9565b92915050565b6000612e69612e7a565b9050612e75828261317f565b919050565b6000604051905090565b600067ffffffffffffffff821115612e9f57612e9e6132e6565b5b612ea882613329565b9050602081019050919050565b600067ffffffffffffffff821115612ed057612ecf6132e6565b5b612ed982613329565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612f8d82613101565b9150612f9883613101565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612fcd57612fcc61322a565b5b828201905092915050565b6000612fe382613101565b9150612fee83613101565b925082612ffe57612ffd613259565b5b828204905092915050565b600061301482613101565b915061301f83613101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130585761305761322a565b5b828202905092915050565b600061306e82613101565b915061307983613101565b92508282101561308c5761308b61322a565b5b828203905092915050565b60006130a2826130e1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561313857808201518184015260208101905061311d565b83811115613147576000848401525b50505050565b6000600282049050600182168061316557607f821691505b6020821081141561317957613178613288565b5b50919050565b61318882613329565b810181811067ffffffffffffffff821117156131a7576131a66132e6565b5b80604052505050565b60006131bb82613101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131ee576131ed61322a565b5b600182019050919050565b600061320482613101565b915061320f83613101565b92508261321f5761321e613259565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61381981613097565b811461382457600080fd5b50565b613830816130a9565b811461383b57600080fd5b50565b613847816130b5565b811461385257600080fd5b50565b61385e81613101565b811461386957600080fd5b5056fea264697066735822122024f3d4de066fc80f43415f7aa9b88a76934c4925cdaa55bdc8775f7d57a2ccec64736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d6554506f73335059674b54764e7848775a5274505a59714b384a6371344767596456344e55373943426653672f00000000000000000000

-----Decoded View---------------
Arg [0] : _initBaseURI (string): ipfs://QmeTPos3PYgKTvNxHwZRtPZYqK8Jcq4GgYdV4NU79CBfSg/

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [2] : 697066733a2f2f516d6554506f73335059674b54764e7848775a5274505a5971
Arg [3] : 4b384a6371344767596456344e55373943426653672f00000000000000000000


Deployed Bytecode Sourcemap

20561:2905:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13226:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14000:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15081:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14660:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20776:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21038:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15647:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23114:137;;;;;;;;;;;;;:::i;:::-;;15941:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21662:635;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20738:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23004:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13753:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20712:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13537:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4563:103;;;;;;;;;;;;;:::i;:::-;;4253:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20850:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14106:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21306:350;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15310:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16134:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22303:589;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20814:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15475:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4821:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13226:305;13328:4;13380:25;13365:40;;;:11;:40;;;;:105;;;;13437:33;13422:48;;;:11;:48;;;;13365:105;:158;;;;13487:36;13511:11;13487:23;:36::i;:::-;13365:158;13345:178;;13226:305;;;:::o;14000:100::-;14054:13;14087:5;14080:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14000:100;:::o;15081:221::-;15157:7;15185:16;15193:7;15185;:16::i;:::-;15177:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15270:15;:24;15286:7;15270:24;;;;;;;;;;;;;;;;;;;;;15263:31;;15081:221;;;:::o;14660:411::-;14741:13;14757:23;14772:7;14757:14;:23::i;:::-;14741:39;;14805:5;14799:11;;:2;:11;;;;14791:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14899:5;14883:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14908:37;14925:5;14932:12;:10;:12::i;:::-;14908:16;:37::i;:::-;14883:62;14861:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;15042:21;15051:2;15055:7;15042:8;:21::i;:::-;14730:341;14660:411;;:::o;20776:33::-;;;;:::o;21038:89::-;21082:7;21105:16;:6;:14;:16::i;:::-;21098:23;;21038:89;:::o;15647:286::-;15789:41;15808:12;:10;:12::i;:::-;15822:7;15789:18;:41::i;:::-;15781:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;15897:28;15907:4;15913:2;15917:7;15897:9;:28::i;:::-;15647:286;;;:::o;23114:137::-;4484:12;:10;:12::i;:::-;4473:23;;:7;:5;:7::i;:::-;:23;;;4465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23159:7:::1;23180;:5;:7::i;:::-;23172:21;;23201;23172:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23158:69;;;23242:2;23234:11;;;::::0;::::1;;23151:100;23114:137::o:0;15941:185::-;16079:39;16096:4;16102:2;16106:7;16079:39;;;;;;;;;;;;:16;:39::i;:::-;15941:185;;;:::o;21662:635::-;21737:16;21765:23;21791:17;21801:6;21791:9;:17::i;:::-;21765:43;;21815:30;21862:15;21848:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21815:63;;21885:22;21910:1;21885:26;;21918:23;21954:309;21979:15;21961;:33;:64;;;;;22016:9;;21998:14;:27;;21961:64;21954:309;;;22036:25;22064:23;22072:14;22064:7;:23::i;:::-;22036:51;;22123:6;22102:27;;:17;:27;;;22098:131;;;22175:14;22142:13;22156:15;22142:30;;;;;;;;:::i;:::-;;;;;;;:47;;;;;22202:17;;;;;:::i;:::-;;;;22098:131;22239:16;;;;;:::i;:::-;;;;22027:236;21954:309;;;22278:13;22271:20;;;;;;21662:635;;;:::o;20738:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23004:104::-;4484:12;:10;:12::i;:::-;4473:23;;:7;:5;:7::i;:::-;:23;;;4465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23089:11:::1;23079:7;:21;;;;;;;;;;;;:::i;:::-;;23004:104:::0;:::o;13753:239::-;13825:7;13845:13;13861:7;:16;13869:7;13861:16;;;;;;;;;;;;;;;;;;;;;13845:32;;13913:1;13896:19;;:5;:19;;;;13888:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13979:5;13972:12;;;13753:239;;;:::o;20712:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13537:208::-;13609:7;13654:1;13637:19;;:5;:19;;;;13629:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13721:9;:16;13731:5;13721:16;;;;;;;;;;;;;;;;13714:23;;13537:208;;;:::o;4563:103::-;4484:12;:10;:12::i;:::-;4473:23;;:7;:5;:7::i;:::-;:23;;;4465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4628:30:::1;4655:1;4628:18;:30::i;:::-;4563:103::o:0;4253:87::-;4299:7;4326:6;;;;;;;;;;;4319:13;;4253:87;:::o;20850:38::-;;;;:::o;14106:104::-;14162:13;14195:7;14188:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14106:104;:::o;21306:350::-;21385:1;21371:11;:15;:52;;;;;21405:18;;21390:11;:33;;21371:52;21363:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21497:9;;21482:11;21463:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:43;;21455:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21574:11;21559:12;:10;:12::i;:::-;:26;;;;:::i;:::-;21546:9;:39;;21538:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21616:34;21626:10;21638:11;21616:9;:34::i;:::-;21306:350;:::o;15310:155::-;15405:52;15424:12;:10;:12::i;:::-;15438:8;15448;15405:18;:52::i;:::-;15310:155;;:::o;16134:328::-;16309:41;16328:12;:10;:12::i;:::-;16342:7;16309:18;:41::i;:::-;16301:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16415:39;16429:4;16435:2;16439:7;16448:5;16415:13;:39::i;:::-;16134:328;;;;:::o;22303:589::-;22402:13;22443:17;22451:8;22443:7;:17::i;:::-;22427:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;22534:28;22565:10;:8;:10::i;:::-;22534:41;;22633:1;22608:14;22602:28;:32;:284;;;;;;;;;;;;;;;;;22726:14;22767:19;:8;:17;:19::i;:::-;22813:9;22683:162;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22602:284;22582:304;;;22303:589;;;:::o;20814:31::-;;;;:::o;15475:164::-;15572:4;15596:18;:25;15615:5;15596:25;;;;;;;;;;;;;;;:35;15622:8;15596:35;;;;;;;;;;;;;;;;;;;;;;;;;15589:42;;15475:164;;;;:::o;4821:201::-;4484:12;:10;:12::i;:::-;4473:23;;:7;:5;:7::i;:::-;:23;;;4465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4930:1:::1;4910:22;;:8;:22;;;;4902:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4986:28;5005:8;4986:18;:28::i;:::-;4821:201:::0;:::o;10426:157::-;10511:4;10550:25;10535:40;;;:11;:40;;;;10528:47;;10426:157;;;:::o;16793:127::-;16858:4;16910:1;16882:30;;:7;:16;16890:7;16882:16;;;;;;;;;;;;;;;;;;;;;:30;;;;16875:37;;16793:127;;;:::o;3482:98::-;3535:7;3562:10;3555:17;;3482:98;:::o;19077:174::-;19179:2;19152:15;:24;19168:7;19152:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19235:7;19231:2;19197:46;;19206:23;19221:7;19206:14;:23::i;:::-;19197:46;;;;;;;;;;;;19077:174;;:::o;591:114::-;656:7;683;:14;;;676:21;;591:114;;;:::o;16928:348::-;17021:4;17046:16;17054:7;17046;:16::i;:::-;17038:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17122:13;17138:23;17153:7;17138:14;:23::i;:::-;17122:39;;17191:5;17180:16;;:7;:16;;;:51;;;;17224:7;17200:31;;:20;17212:7;17200:11;:20::i;:::-;:31;;;17180:51;:87;;;;17235:32;17252:5;17259:7;17235:16;:32::i;:::-;17180:87;17172:96;;;16928:348;;;;:::o;18491:578::-;18650:4;18623:31;;:23;18638:7;18623:14;:23::i;:::-;:31;;;18615:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18733:1;18719:16;;:2;:16;;;;18711:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18789:39;18810:4;18816:2;18820:7;18789:20;:39::i;:::-;18893:29;18910:1;18914:7;18893:8;:29::i;:::-;18954:1;18935:9;:15;18945:4;18935:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;18983:1;18966:9;:13;18976:2;18966:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;19014:2;18995:7;:16;19003:7;18995:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19053:7;19049:2;19034:27;;19043:4;19034:27;;;;;;;;;;;;18491:578;;;:::o;5182:191::-;5256:16;5275:6;;;;;;;;;;;5256:25;;5301:8;5292:6;;:17;;;;;;;;;;;;;;;;;;5356:8;5325:40;;5346:8;5325:40;;;;;;;;;;;;5245:128;5182:191;:::o;21131:171::-;21176:13;21218:3;21202:13;:11;:13::i;:::-;:19;21199:96;;;21242:10;21235:17;;;;21199:96;21282:11;21275:18;;21131:171;;:::o;23257:204::-;23337:9;23332:124;23356:11;23352:1;:15;23332:124;;;23383:18;:6;:16;:18::i;:::-;23410:38;23420:9;23431:16;:6;:14;:16::i;:::-;23410:9;:38::i;:::-;23369:3;;;;;:::i;:::-;;;;23332:124;;;;23257:204;;:::o;19259:315::-;19414:8;19405:17;;:5;:17;;;;19397:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19501:8;19463:18;:25;19482:5;19463:25;;;;;;;;;;;;;;;:35;19489:8;19463:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19547:8;19525:41;;19540:5;19525:41;;;19557:8;19525:41;;;;;;:::i;:::-;;;;;;;;19259:315;;;:::o;16470:::-;16627:28;16637:4;16643:2;16647:7;16627:9;:28::i;:::-;16674:48;16697:4;16703:2;16707:7;16716:5;16674:22;:48::i;:::-;16666:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16470:315;;;;:::o;22898:100::-;22950:13;22983:7;22976:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22898:100;:::o;1549:723::-;1605:13;1835:1;1826:5;:10;1822:53;;;1853:10;;;;;;;;;;;;;;;;;;;;;1822:53;1885:12;1900:5;1885:20;;1916:14;1941:78;1956:1;1948:4;:9;1941:78;;1974:8;;;;;:::i;:::-;;;;2005:2;1997:10;;;;;:::i;:::-;;;1941:78;;;2029:19;2061:6;2051:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2029:39;;2079:154;2095:1;2086:5;:10;2079:154;;2123:1;2113:11;;;;;:::i;:::-;;;2190:2;2182:5;:10;;;;:::i;:::-;2169:2;:24;;;;:::i;:::-;2156:39;;2139:6;2146;2139:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2219:2;2210:11;;;;;:::i;:::-;;;2079:154;;;2257:6;2243:21;;;;;1549:723;;;;:::o;20389:126::-;;;;:::o;713:127::-;820:1;802:7;:14;;;:19;;;;;;;;;;;713:127;:::o;17284:110::-;17360:26;17370:2;17374:7;17360:26;;;;;;;;;;;;:9;:26::i;:::-;17284:110;;:::o;19582:799::-;19737:4;19758:15;:2;:13;;;:15::i;:::-;19754:620;;;19810:2;19794:36;;;19831:12;:10;:12::i;:::-;19845:4;19851:7;19860:5;19794:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19790:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20053:1;20036:6;:13;:18;20032:272;;;20079:60;;;;;;;;;;:::i;:::-;;;;;;;;20032:272;20254:6;20248:13;20239:6;20235:2;20231:15;20224:38;19790:529;19927:41;;;19917:51;;;:6;:51;;;;19910:58;;;;;19754:620;20358:4;20351:11;;19582:799;;;;;;;:::o;17402:321::-;17532:18;17538:2;17542:7;17532:5;:18::i;:::-;17583:54;17614:1;17618:2;17622:7;17631:5;17583:22;:54::i;:::-;17561:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;17402:321;;;:::o;5615:387::-;5675:4;5883:12;5950:7;5938:20;5930:28;;5993:1;5986:4;:8;5979:15;;;5615:387;;;:::o;17731:382::-;17825:1;17811:16;;:2;:16;;;;17803:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17884:16;17892:7;17884;:16::i;:::-;17883:17;17875:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17946:45;17975:1;17979:2;17983:7;17946:20;:45::i;:::-;18021:1;18004:9;:13;18014:2;18004:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;18052:2;18033:7;:16;18041:7;18033:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18097:7;18093:2;18072:33;;18089:1;18072:33;;;;;;;;;;;;17731:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:327::-;5678:6;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:52;5922:7;5913:6;5902:9;5898:22;5878:52;:::i;:::-;5868:62;;5824:116;5620:327;;;;:::o;5953:349::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:63;6277:7;6268:6;6257:9;6253:22;6222:63;:::i;:::-;6212:73;;6168:127;5953:349;;;;:::o;6308:509::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6580:1;6569:9;6565:17;6552:31;6610:18;6602:6;6599:30;6596:117;;;6632:79;;:::i;:::-;6596:117;6737:63;6792:7;6783:6;6772:9;6768:22;6737:63;:::i;:::-;6727:73;;6523:287;6308:509;;;;:::o;6823:329::-;6882:6;6931:2;6919:9;6910:7;6906:23;6902:32;6899:119;;;6937:79;;:::i;:::-;6899:119;7057:1;7082:53;7127:7;7118:6;7107:9;7103:22;7082:53;:::i;:::-;7072:63;;7028:117;6823:329;;;;:::o;7158:179::-;7227:10;7248:46;7290:3;7282:6;7248:46;:::i;:::-;7326:4;7321:3;7317:14;7303:28;;7158:179;;;;:::o;7343:118::-;7430:24;7448:5;7430:24;:::i;:::-;7425:3;7418:37;7343:118;;:::o;7497:732::-;7616:3;7645:54;7693:5;7645:54;:::i;:::-;7715:86;7794:6;7789:3;7715:86;:::i;:::-;7708:93;;7825:56;7875:5;7825:56;:::i;:::-;7904:7;7935:1;7920:284;7945:6;7942:1;7939:13;7920:284;;;8021:6;8015:13;8048:63;8107:3;8092:13;8048:63;:::i;:::-;8041:70;;8134:60;8187:6;8134:60;:::i;:::-;8124:70;;7980:224;7967:1;7964;7960:9;7955:14;;7920:284;;;7924:14;8220:3;8213:10;;7621:608;;;7497:732;;;;:::o;8235:109::-;8316:21;8331:5;8316:21;:::i;:::-;8311:3;8304:34;8235:109;;:::o;8350:360::-;8436:3;8464:38;8496:5;8464:38;:::i;:::-;8518:70;8581:6;8576:3;8518:70;:::i;:::-;8511:77;;8597:52;8642:6;8637:3;8630:4;8623:5;8619:16;8597:52;:::i;:::-;8674:29;8696:6;8674:29;:::i;:::-;8669:3;8665:39;8658:46;;8440:270;8350:360;;;;:::o;8716:364::-;8804:3;8832:39;8865:5;8832:39;:::i;:::-;8887:71;8951:6;8946:3;8887:71;:::i;:::-;8880:78;;8967:52;9012:6;9007:3;9000:4;8993:5;8989:16;8967:52;:::i;:::-;9044:29;9066:6;9044:29;:::i;:::-;9039:3;9035:39;9028:46;;8808:272;8716:364;;;;:::o;9086:377::-;9192:3;9220:39;9253:5;9220:39;:::i;:::-;9275:89;9357:6;9352:3;9275:89;:::i;:::-;9268:96;;9373:52;9418:6;9413:3;9406:4;9399:5;9395:16;9373:52;:::i;:::-;9450:6;9445:3;9441:16;9434:23;;9196:267;9086:377;;;;:::o;9493:845::-;9596:3;9633:5;9627:12;9662:36;9688:9;9662:36;:::i;:::-;9714:89;9796:6;9791:3;9714:89;:::i;:::-;9707:96;;9834:1;9823:9;9819:17;9850:1;9845:137;;;;9996:1;9991:341;;;;9812:520;;9845:137;9929:4;9925:9;9914;9910:25;9905:3;9898:38;9965:6;9960:3;9956:16;9949:23;;9845:137;;9991:341;10058:38;10090:5;10058:38;:::i;:::-;10118:1;10132:154;10146:6;10143:1;10140:13;10132:154;;;10220:7;10214:14;10210:1;10205:3;10201:11;10194:35;10270:1;10261:7;10257:15;10246:26;;10168:4;10165:1;10161:12;10156:17;;10132:154;;;10315:6;10310:3;10306:16;10299:23;;9998:334;;9812:520;;9600:738;;9493:845;;;;:::o;10344:366::-;10486:3;10507:67;10571:2;10566:3;10507:67;:::i;:::-;10500:74;;10583:93;10672:3;10583:93;:::i;:::-;10701:2;10696:3;10692:12;10685:19;;10344:366;;;:::o;10716:::-;10858:3;10879:67;10943:2;10938:3;10879:67;:::i;:::-;10872:74;;10955:93;11044:3;10955:93;:::i;:::-;11073:2;11068:3;11064:12;11057:19;;10716:366;;;:::o;11088:::-;11230:3;11251:67;11315:2;11310:3;11251:67;:::i;:::-;11244:74;;11327:93;11416:3;11327:93;:::i;:::-;11445:2;11440:3;11436:12;11429:19;;11088:366;;;:::o;11460:::-;11602:3;11623:67;11687:2;11682:3;11623:67;:::i;:::-;11616:74;;11699:93;11788:3;11699:93;:::i;:::-;11817:2;11812:3;11808:12;11801:19;;11460:366;;;:::o;11832:::-;11974:3;11995:67;12059:2;12054:3;11995:67;:::i;:::-;11988:74;;12071:93;12160:3;12071:93;:::i;:::-;12189:2;12184:3;12180:12;12173:19;;11832:366;;;:::o;12204:::-;12346:3;12367:67;12431:2;12426:3;12367:67;:::i;:::-;12360:74;;12443:93;12532:3;12443:93;:::i;:::-;12561:2;12556:3;12552:12;12545:19;;12204:366;;;:::o;12576:::-;12718:3;12739:67;12803:2;12798:3;12739:67;:::i;:::-;12732:74;;12815:93;12904:3;12815:93;:::i;:::-;12933:2;12928:3;12924:12;12917:19;;12576:366;;;:::o;12948:::-;13090:3;13111:67;13175:2;13170:3;13111:67;:::i;:::-;13104:74;;13187:93;13276:3;13187:93;:::i;:::-;13305:2;13300:3;13296:12;13289:19;;12948:366;;;:::o;13320:::-;13462:3;13483:67;13547:2;13542:3;13483:67;:::i;:::-;13476:74;;13559:93;13648:3;13559:93;:::i;:::-;13677:2;13672:3;13668:12;13661:19;;13320:366;;;:::o;13692:::-;13834:3;13855:67;13919:2;13914:3;13855:67;:::i;:::-;13848:74;;13931:93;14020:3;13931:93;:::i;:::-;14049:2;14044:3;14040:12;14033:19;;13692:366;;;:::o;14064:::-;14206:3;14227:67;14291:2;14286:3;14227:67;:::i;:::-;14220:74;;14303:93;14392:3;14303:93;:::i;:::-;14421:2;14416:3;14412:12;14405:19;;14064:366;;;:::o;14436:::-;14578:3;14599:67;14663:2;14658:3;14599:67;:::i;:::-;14592:74;;14675:93;14764:3;14675:93;:::i;:::-;14793:2;14788:3;14784:12;14777:19;;14436:366;;;:::o;14808:::-;14950:3;14971:67;15035:2;15030:3;14971:67;:::i;:::-;14964:74;;15047:93;15136:3;15047:93;:::i;:::-;15165:2;15160:3;15156:12;15149:19;;14808:366;;;:::o;15180:::-;15322:3;15343:67;15407:2;15402:3;15343:67;:::i;:::-;15336:74;;15419:93;15508:3;15419:93;:::i;:::-;15537:2;15532:3;15528:12;15521:19;;15180:366;;;:::o;15552:::-;15694:3;15715:67;15779:2;15774:3;15715:67;:::i;:::-;15708:74;;15791:93;15880:3;15791:93;:::i;:::-;15909:2;15904:3;15900:12;15893:19;;15552:366;;;:::o;15924:::-;16066:3;16087:67;16151:2;16146:3;16087:67;:::i;:::-;16080:74;;16163:93;16252:3;16163:93;:::i;:::-;16281:2;16276:3;16272:12;16265:19;;15924:366;;;:::o;16296:398::-;16455:3;16476:83;16557:1;16552:3;16476:83;:::i;:::-;16469:90;;16568:93;16657:3;16568:93;:::i;:::-;16686:1;16681:3;16677:11;16670:18;;16296:398;;;:::o;16700:366::-;16842:3;16863:67;16927:2;16922:3;16863:67;:::i;:::-;16856:74;;16939:93;17028:3;16939:93;:::i;:::-;17057:2;17052:3;17048:12;17041:19;;16700:366;;;:::o;17072:::-;17214:3;17235:67;17299:2;17294:3;17235:67;:::i;:::-;17228:74;;17311:93;17400:3;17311:93;:::i;:::-;17429:2;17424:3;17420:12;17413:19;;17072:366;;;:::o;17444:::-;17586:3;17607:67;17671:2;17666:3;17607:67;:::i;:::-;17600:74;;17683:93;17772:3;17683:93;:::i;:::-;17801:2;17796:3;17792:12;17785:19;;17444:366;;;:::o;17816:108::-;17893:24;17911:5;17893:24;:::i;:::-;17888:3;17881:37;17816:108;;:::o;17930:118::-;18017:24;18035:5;18017:24;:::i;:::-;18012:3;18005:37;17930:118;;:::o;18054:589::-;18279:3;18301:95;18392:3;18383:6;18301:95;:::i;:::-;18294:102;;18413:95;18504:3;18495:6;18413:95;:::i;:::-;18406:102;;18525:92;18613:3;18604:6;18525:92;:::i;:::-;18518:99;;18634:3;18627:10;;18054:589;;;;;;:::o;18649:379::-;18833:3;18855:147;18998:3;18855:147;:::i;:::-;18848:154;;19019:3;19012:10;;18649:379;;;:::o;19034:222::-;19127:4;19165:2;19154:9;19150:18;19142:26;;19178:71;19246:1;19235:9;19231:17;19222:6;19178:71;:::i;:::-;19034:222;;;;:::o;19262:640::-;19457:4;19495:3;19484:9;19480:19;19472:27;;19509:71;19577:1;19566:9;19562:17;19553:6;19509:71;:::i;:::-;19590:72;19658:2;19647:9;19643:18;19634:6;19590:72;:::i;:::-;19672;19740:2;19729:9;19725:18;19716:6;19672:72;:::i;:::-;19791:9;19785:4;19781:20;19776:2;19765:9;19761:18;19754:48;19819:76;19890:4;19881:6;19819:76;:::i;:::-;19811:84;;19262:640;;;;;;;:::o;19908:373::-;20051:4;20089:2;20078:9;20074:18;20066:26;;20138:9;20132:4;20128:20;20124:1;20113:9;20109:17;20102:47;20166:108;20269:4;20260:6;20166:108;:::i;:::-;20158:116;;19908:373;;;;:::o;20287:210::-;20374:4;20412:2;20401:9;20397:18;20389:26;;20425:65;20487:1;20476:9;20472:17;20463:6;20425:65;:::i;:::-;20287:210;;;;:::o;20503:313::-;20616:4;20654:2;20643:9;20639:18;20631:26;;20703:9;20697:4;20693:20;20689:1;20678:9;20674:17;20667:47;20731:78;20804:4;20795:6;20731:78;:::i;:::-;20723:86;;20503:313;;;;:::o;20822:419::-;20988:4;21026:2;21015:9;21011:18;21003:26;;21075:9;21069:4;21065:20;21061:1;21050:9;21046:17;21039:47;21103:131;21229:4;21103:131;:::i;:::-;21095:139;;20822:419;;;:::o;21247:::-;21413:4;21451:2;21440:9;21436:18;21428:26;;21500:9;21494:4;21490:20;21486:1;21475:9;21471:17;21464:47;21528:131;21654:4;21528:131;:::i;:::-;21520:139;;21247:419;;;:::o;21672:::-;21838:4;21876:2;21865:9;21861:18;21853:26;;21925:9;21919:4;21915:20;21911:1;21900:9;21896:17;21889:47;21953:131;22079:4;21953:131;:::i;:::-;21945:139;;21672:419;;;:::o;22097:::-;22263:4;22301:2;22290:9;22286:18;22278:26;;22350:9;22344:4;22340:20;22336:1;22325:9;22321:17;22314:47;22378:131;22504:4;22378:131;:::i;:::-;22370:139;;22097:419;;;:::o;22522:::-;22688:4;22726:2;22715:9;22711:18;22703:26;;22775:9;22769:4;22765:20;22761:1;22750:9;22746:17;22739:47;22803:131;22929:4;22803:131;:::i;:::-;22795:139;;22522:419;;;:::o;22947:::-;23113:4;23151:2;23140:9;23136:18;23128:26;;23200:9;23194:4;23190:20;23186:1;23175:9;23171:17;23164:47;23228:131;23354:4;23228:131;:::i;:::-;23220:139;;22947:419;;;:::o;23372:::-;23538:4;23576:2;23565:9;23561:18;23553:26;;23625:9;23619:4;23615:20;23611:1;23600:9;23596:17;23589:47;23653:131;23779:4;23653:131;:::i;:::-;23645:139;;23372:419;;;:::o;23797:::-;23963:4;24001:2;23990:9;23986:18;23978:26;;24050:9;24044:4;24040:20;24036:1;24025:9;24021:17;24014:47;24078:131;24204:4;24078:131;:::i;:::-;24070:139;;23797:419;;;:::o;24222:::-;24388:4;24426:2;24415:9;24411:18;24403:26;;24475:9;24469:4;24465:20;24461:1;24450:9;24446:17;24439:47;24503:131;24629:4;24503:131;:::i;:::-;24495:139;;24222:419;;;:::o;24647:::-;24813:4;24851:2;24840:9;24836:18;24828:26;;24900:9;24894:4;24890:20;24886:1;24875:9;24871:17;24864:47;24928:131;25054:4;24928:131;:::i;:::-;24920:139;;24647:419;;;:::o;25072:::-;25238:4;25276:2;25265:9;25261:18;25253:26;;25325:9;25319:4;25315:20;25311:1;25300:9;25296:17;25289:47;25353:131;25479:4;25353:131;:::i;:::-;25345:139;;25072:419;;;:::o;25497:::-;25663:4;25701:2;25690:9;25686:18;25678:26;;25750:9;25744:4;25740:20;25736:1;25725:9;25721:17;25714:47;25778:131;25904:4;25778:131;:::i;:::-;25770:139;;25497:419;;;:::o;25922:::-;26088:4;26126:2;26115:9;26111:18;26103:26;;26175:9;26169:4;26165:20;26161:1;26150:9;26146:17;26139:47;26203:131;26329:4;26203:131;:::i;:::-;26195:139;;25922:419;;;:::o;26347:::-;26513:4;26551:2;26540:9;26536:18;26528:26;;26600:9;26594:4;26590:20;26586:1;26575:9;26571:17;26564:47;26628:131;26754:4;26628:131;:::i;:::-;26620:139;;26347:419;;;:::o;26772:::-;26938:4;26976:2;26965:9;26961:18;26953:26;;27025:9;27019:4;27015:20;27011:1;27000:9;26996:17;26989:47;27053:131;27179:4;27053:131;:::i;:::-;27045:139;;26772:419;;;:::o;27197:::-;27363:4;27401:2;27390:9;27386:18;27378:26;;27450:9;27444:4;27440:20;27436:1;27425:9;27421:17;27414:47;27478:131;27604:4;27478:131;:::i;:::-;27470:139;;27197:419;;;:::o;27622:::-;27788:4;27826:2;27815:9;27811:18;27803:26;;27875:9;27869:4;27865:20;27861:1;27850:9;27846:17;27839:47;27903:131;28029:4;27903:131;:::i;:::-;27895:139;;27622:419;;;:::o;28047:::-;28213:4;28251:2;28240:9;28236:18;28228:26;;28300:9;28294:4;28290:20;28286:1;28275:9;28271:17;28264:47;28328:131;28454:4;28328:131;:::i;:::-;28320:139;;28047:419;;;:::o;28472:::-;28638:4;28676:2;28665:9;28661:18;28653:26;;28725:9;28719:4;28715:20;28711:1;28700:9;28696:17;28689:47;28753:131;28879:4;28753:131;:::i;:::-;28745:139;;28472:419;;;:::o;28897:222::-;28990:4;29028:2;29017:9;29013:18;29005:26;;29041:71;29109:1;29098:9;29094:17;29085:6;29041:71;:::i;:::-;28897:222;;;;:::o;29125:129::-;29159:6;29186:20;;:::i;:::-;29176:30;;29215:33;29243:4;29235:6;29215:33;:::i;:::-;29125:129;;;:::o;29260:75::-;29293:6;29326:2;29320:9;29310:19;;29260:75;:::o;29341:307::-;29402:4;29492:18;29484:6;29481:30;29478:56;;;29514:18;;:::i;:::-;29478:56;29552:29;29574:6;29552:29;:::i;:::-;29544:37;;29636:4;29630;29626:15;29618:23;;29341:307;;;:::o;29654:308::-;29716:4;29806:18;29798:6;29795:30;29792:56;;;29828:18;;:::i;:::-;29792:56;29866:29;29888:6;29866:29;:::i;:::-;29858:37;;29950:4;29944;29940:15;29932:23;;29654:308;;;:::o;29968:132::-;30035:4;30058:3;30050:11;;30088:4;30083:3;30079:14;30071:22;;29968:132;;;:::o;30106:141::-;30155:4;30178:3;30170:11;;30201:3;30198:1;30191:14;30235:4;30232:1;30222:18;30214:26;;30106:141;;;:::o;30253:114::-;30320:6;30354:5;30348:12;30338:22;;30253:114;;;:::o;30373:98::-;30424:6;30458:5;30452:12;30442:22;;30373:98;;;:::o;30477:99::-;30529:6;30563:5;30557:12;30547:22;;30477:99;;;:::o;30582:113::-;30652:4;30684;30679:3;30675:14;30667:22;;30582:113;;;:::o;30701:184::-;30800:11;30834:6;30829:3;30822:19;30874:4;30869:3;30865:14;30850:29;;30701:184;;;;:::o;30891:168::-;30974:11;31008:6;31003:3;30996:19;31048:4;31043:3;31039:14;31024:29;;30891:168;;;;:::o;31065:147::-;31166:11;31203:3;31188:18;;31065:147;;;;:::o;31218:169::-;31302:11;31336:6;31331:3;31324:19;31376:4;31371:3;31367:14;31352:29;;31218:169;;;;:::o;31393:148::-;31495:11;31532:3;31517:18;;31393:148;;;;:::o;31547:305::-;31587:3;31606:20;31624:1;31606:20;:::i;:::-;31601:25;;31640:20;31658:1;31640:20;:::i;:::-;31635:25;;31794:1;31726:66;31722:74;31719:1;31716:81;31713:107;;;31800:18;;:::i;:::-;31713:107;31844:1;31841;31837:9;31830:16;;31547:305;;;;:::o;31858:185::-;31898:1;31915:20;31933:1;31915:20;:::i;:::-;31910:25;;31949:20;31967:1;31949:20;:::i;:::-;31944:25;;31988:1;31978:35;;31993:18;;:::i;:::-;31978:35;32035:1;32032;32028:9;32023:14;;31858:185;;;;:::o;32049:348::-;32089:7;32112:20;32130:1;32112:20;:::i;:::-;32107:25;;32146:20;32164:1;32146:20;:::i;:::-;32141:25;;32334:1;32266:66;32262:74;32259:1;32256:81;32251:1;32244:9;32237:17;32233:105;32230:131;;;32341:18;;:::i;:::-;32230:131;32389:1;32386;32382:9;32371:20;;32049:348;;;;:::o;32403:191::-;32443:4;32463:20;32481:1;32463:20;:::i;:::-;32458:25;;32497:20;32515:1;32497:20;:::i;:::-;32492:25;;32536:1;32533;32530:8;32527:34;;;32541:18;;:::i;:::-;32527:34;32586:1;32583;32579:9;32571:17;;32403:191;;;;:::o;32600:96::-;32637:7;32666:24;32684:5;32666:24;:::i;:::-;32655:35;;32600:96;;;:::o;32702:90::-;32736:7;32779:5;32772:13;32765:21;32754:32;;32702:90;;;:::o;32798:149::-;32834:7;32874:66;32867:5;32863:78;32852:89;;32798:149;;;:::o;32953:126::-;32990:7;33030:42;33023:5;33019:54;33008:65;;32953:126;;;:::o;33085:77::-;33122:7;33151:5;33140:16;;33085:77;;;:::o;33168:154::-;33252:6;33247:3;33242;33229:30;33314:1;33305:6;33300:3;33296:16;33289:27;33168:154;;;:::o;33328:307::-;33396:1;33406:113;33420:6;33417:1;33414:13;33406:113;;;33505:1;33500:3;33496:11;33490:18;33486:1;33481:3;33477:11;33470:39;33442:2;33439:1;33435:10;33430:15;;33406:113;;;33537:6;33534:1;33531:13;33528:101;;;33617:1;33608:6;33603:3;33599:16;33592:27;33528:101;33377:258;33328:307;;;:::o;33641:320::-;33685:6;33722:1;33716:4;33712:12;33702:22;;33769:1;33763:4;33759:12;33790:18;33780:81;;33846:4;33838:6;33834:17;33824:27;;33780:81;33908:2;33900:6;33897:14;33877:18;33874:38;33871:84;;;33927:18;;:::i;:::-;33871:84;33692:269;33641:320;;;:::o;33967:281::-;34050:27;34072:4;34050:27;:::i;:::-;34042:6;34038:40;34180:6;34168:10;34165:22;34144:18;34132:10;34129:34;34126:62;34123:88;;;34191:18;;:::i;:::-;34123:88;34231:10;34227:2;34220:22;34010:238;33967:281;;:::o;34254:233::-;34293:3;34316:24;34334:5;34316:24;:::i;:::-;34307:33;;34362:66;34355:5;34352:77;34349:103;;;34432:18;;:::i;:::-;34349:103;34479:1;34472:5;34468:13;34461:20;;34254:233;;;:::o;34493:176::-;34525:1;34542:20;34560:1;34542:20;:::i;:::-;34537:25;;34576:20;34594:1;34576:20;:::i;:::-;34571:25;;34615:1;34605:35;;34620:18;;:::i;:::-;34605:35;34661:1;34658;34654:9;34649:14;;34493:176;;;;:::o;34675:180::-;34723:77;34720:1;34713:88;34820:4;34817:1;34810:15;34844:4;34841:1;34834:15;34861:180;34909:77;34906:1;34899:88;35006:4;35003:1;34996:15;35030:4;35027:1;35020:15;35047:180;35095:77;35092:1;35085:88;35192:4;35189:1;35182:15;35216:4;35213:1;35206:15;35233:180;35281:77;35278:1;35271:88;35378:4;35375:1;35368:15;35402:4;35399:1;35392:15;35419:180;35467:77;35464:1;35457:88;35564:4;35561:1;35554:15;35588:4;35585:1;35578:15;35605:117;35714:1;35711;35704:12;35728:117;35837:1;35834;35827:12;35851:117;35960:1;35957;35950:12;35974:117;36083:1;36080;36073:12;36097:102;36138:6;36189:2;36185:7;36180:2;36173:5;36169:14;36165:28;36155:38;;36097:102;;;:::o;36205:237::-;36345:34;36341:1;36333:6;36329:14;36322:58;36414:20;36409:2;36401:6;36397:15;36390:45;36205:237;:::o;36448:225::-;36588:34;36584:1;36576:6;36572:14;36565:58;36657:8;36652:2;36644:6;36640:15;36633:33;36448:225;:::o;36679:178::-;36819:30;36815:1;36807:6;36803:14;36796:54;36679:178;:::o;36863:170::-;37003:22;36999:1;36991:6;36987:14;36980:46;36863:170;:::o;37039:223::-;37179:34;37175:1;37167:6;37163:14;37156:58;37248:6;37243:2;37235:6;37231:15;37224:31;37039:223;:::o;37268:175::-;37408:27;37404:1;37396:6;37392:14;37385:51;37268:175;:::o;37449:231::-;37589:34;37585:1;37577:6;37573:14;37566:58;37658:14;37653:2;37645:6;37641:15;37634:39;37449:231;:::o;37686:243::-;37826:34;37822:1;37814:6;37810:14;37803:58;37895:26;37890:2;37882:6;37878:15;37871:51;37686:243;:::o;37935:229::-;38075:34;38071:1;38063:6;38059:14;38052:58;38144:12;38139:2;38131:6;38127:15;38120:37;37935:229;:::o;38170:228::-;38310:34;38306:1;38298:6;38294:14;38287:58;38379:11;38374:2;38366:6;38362:15;38355:36;38170:228;:::o;38404:182::-;38544:34;38540:1;38532:6;38528:14;38521:58;38404:182;:::o;38592:231::-;38732:34;38728:1;38720:6;38716:14;38709:58;38801:14;38796:2;38788:6;38784:15;38777:39;38592:231;:::o;38829:182::-;38969:34;38965:1;38957:6;38953:14;38946:58;38829:182;:::o;39017:228::-;39157:34;39153:1;39145:6;39141:14;39134:58;39226:11;39221:2;39213:6;39209:15;39202:36;39017:228;:::o;39251:234::-;39391:34;39387:1;39379:6;39375:14;39368:58;39460:17;39455:2;39447:6;39443:15;39436:42;39251:234;:::o;39491:220::-;39631:34;39627:1;39619:6;39615:14;39608:58;39700:3;39695:2;39687:6;39683:15;39676:28;39491:220;:::o;39717:114::-;;:::o;39837:170::-;39977:22;39973:1;39965:6;39961:14;39954:46;39837:170;:::o;40013:236::-;40153:34;40149:1;40141:6;40137:14;40130:58;40222:19;40217:2;40209:6;40205:15;40198:44;40013:236;:::o;40255:169::-;40395:21;40391:1;40383:6;40379:14;40372:45;40255:169;:::o;40430:122::-;40503:24;40521:5;40503:24;:::i;:::-;40496:5;40493:35;40483:63;;40542:1;40539;40532:12;40483:63;40430:122;:::o;40558:116::-;40628:21;40643:5;40628:21;:::i;:::-;40621:5;40618:32;40608:60;;40664:1;40661;40654:12;40608:60;40558:116;:::o;40680:120::-;40752:23;40769:5;40752:23;:::i;:::-;40745:5;40742:34;40732:62;;40790:1;40787;40780:12;40732:62;40680:120;:::o;40806:122::-;40879:24;40897:5;40879:24;:::i;:::-;40872:5;40869:35;40859:63;;40918:1;40915;40908:12;40859:63;40806:122;:::o

Swarm Source

ipfs://24f3d4de066fc80f43415f7aa9b88a76934c4925cdaa55bdc8775f7d57a2ccec
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.