ETH Price: $3,550.35 (+7.68%)

milAIdy (AILADY)
 

Overview

TokenID

287

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
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:
milAIdy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 400 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

// SPDX-License-Identifier: MIT

/**
 * @title MilAIdy contract
 * @dev Extends ERC721A Non-Fungible Token Standard basic implementation
 */


pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);


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

    event Approval(address indexed owner, address indexed spender, uint256 value);
}


pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}


pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}




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


pragma solidity ^0.8.0;


abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


pragma solidity ^0.8.1;

library Address {

    function isContract(address account) internal view returns (bool) {

        return account.code.length > 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 {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


pragma solidity ^0.8.0;



library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {

        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}


pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;


abstract contract ERC165 is IERC165 {

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

pragma solidity ^0.8.0;


interface IERC721 is IERC165 {

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

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

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

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

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

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

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

    function approve(address to, uint256 tokenId) external;

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

    function setApprovalForAll(address operator, bool _approved) external;

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

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

pragma solidity ^0.8.0;


interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    function tokenByIndex(uint256 index) external view returns (uint256);
}


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 ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex;

    string private _name;

    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;

    mapping(address => AddressData) private _addressData;

    mapping(uint256 => address) private _tokenApprovals;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;

        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }

        revert("ERC721A: unable to get token of owner by index");
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), "ERC721A: balance query for the zero address");
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), "ERC721A: number minted query for the zero address");
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        unchecked {
            for (uint256 curr = tokenId; curr >= 0; curr--) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (ownership.addr != address(0)) {
                    return ownership;
                }
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    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 override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

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

        _approve(to, tokenId, owner);
    }

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

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), "ERC721A: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

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

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        _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 override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

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

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(quantity != 0, "ERC721A: quantity must be greater than 0");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;

            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                if (safe) {
                    require(
                        _checkOnERC721Received(address(0), to, updatedIndex, _data),
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                }

                updatedIndex++;
            }

            currentIndex = updatedIndex;
        }

        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved");

        require(prevOwnership.addr == from, "ERC721A: transfer from incorrect owner");
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721A: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}



contract milAIdy is ERC721A, Ownable, ReentrancyGuard {

  string public        baseURI;
  uint public          MAX_MILAIDY = 333;
  uint public          price             = 0.033 ether;
  uint public          maxPerTx          = 3;
  uint public          maxPerWallet      = 3;
  uint public          nextOwnerToExplicitlySet;
  bool public          canMint;

  constructor()
    ERC721A("milAIdy", "AILADY")
  {}

  function mintMilAIdy(uint256 quantity) external payable
  {
    require(canMint, "Minting is not enabled at this time");
    require(msg.value == quantity * price,"Please send the exact amount required for mint");
    require(msg.sender == tx.origin,"Tx failed: minting from external contract calls is not allowed");
    require( totalSupply() + quantity < MAX_MILAIDY + 1,"The collection is sold out");
    require( quantity < maxPerTx + 1, "Max mint is 3 per wallet");
    require(numberMinted(msg.sender) + quantity <= maxPerWallet,"Max mint is 3 per wallet");

    _safeMint(msg.sender, quantity);
  }

  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }

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

  function setBaseURI(string calldata baseURI_) external onlyOwner {
    baseURI = baseURI_;
  }

  function setOwnersExplicit(uint256 quantity) external onlyOwner nonReentrant {
    _setOwnersExplicit(quantity);
  }


  function toggleMinting() external onlyOwner {
      canMint = !canMint;
  }

  function withdraw() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }

  function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }

  function setPrice(uint256 price_) external onlyOwner {
      price = price_;
  }

  function setMaxPerTx(uint256 maxPerTx_) external onlyOwner {
      maxPerTx = maxPerTx_;
  }

  function setMaxPerWallet(uint256 maxPerWallet_) external onlyOwner {
      maxPerWallet = maxPerWallet_;
  }


  function _setOwnersExplicit(uint256 quantity) internal {
      require(quantity != 0, "quantity must be nonzero");
      require(currentIndex != 0, "no tokens minted yet");
      uint256 _nextOwnerToExplicitlySet = nextOwnerToExplicitlySet;
      require(_nextOwnerToExplicitlySet < currentIndex, "all ownerships have been set");

      unchecked {
          uint256 endIndex = _nextOwnerToExplicitlySet + quantity - 1;

          if (endIndex + 1 > currentIndex) {
              endIndex = currentIndex - 1;
          }

          for (uint256 i = _nextOwnerToExplicitlySet; i <= endIndex; i++) {
              if (_ownerships[i].addr == address(0)) {
                  TokenOwnership memory ownership = ownershipOf(i);
                  _ownerships[i].addr = ownership.addr;
                  _ownerships[i].startTimestamp = ownership.startTimestamp;
              }
          }

          nextOwnerToExplicitlySet = endIndex + 1;
      }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_MILAIDY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"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":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintMilAIdy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerTx_","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerWallet_","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setOwnersExplicit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setPrice","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":[],"name":"toggleMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261014d600a5566753d533d968000600b556003600c556003600d553480156200002c57600080fd5b5060408051808201825260078152666d696c4149647960c81b60208083019182528351808501909452600684526541494c41445960d01b9084015281519192916200007a916001916200010e565b508051620000909060029060208401906200010e565b505050620000ad620000a7620000b860201b60201c565b620000bc565b6001600855620001f1565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011c90620001b4565b90600052602060002090601f0160209004810192826200014057600085556200018b565b82601f106200015b57805160ff19168380011785556200018b565b828001600101855582156200018b579182015b828111156200018b5782518255916020019190600101906200016e565b50620001999291506200019d565b5090565b5b808211156200019957600081556001016200019e565b600181811c90821680620001c957607f821691505b60208210811415620001eb57634e487b7160e01b600052602260045260246000fd5b50919050565b61264180620002016000396000f3fe60806040526004361061020f5760003560e01c80637d55094d11610118578063beb9716d116100a0578063dc33e6811161006f578063dc33e681146105de578063e268e4d3146105fe578063e985e9c51461061e578063f2fde38b14610667578063f968adbe1461068757600080fd5b8063beb9716d1461056e578063c6f6f21614610588578063c87b56dd146105a8578063d7224ba0146105c857600080fd5b806395d89b41116100e757806395d89b41146104f0578063a035b1fe14610505578063a22cb4651461051b578063aced368a1461053b578063b88d4fde1461054e57600080fd5b80637d55094d1461044f5780638da5cb5b1461046457806391b7f5ed146104825780639231ab2a146104a257600080fd5b80633ccfd60b1161019b57806355f804b31161016a57806355f804b3146103c55780636352211e146103e55780636c0360eb1461040557806370a082311461041a578063715018a61461043a57600080fd5b80633ccfd60b1461035a57806342842e0e1461036f578063453c23101461038f5780634f6ccce7146103a557600080fd5b806318160ddd116101e257806318160ddd146102c55780632176e68c146102e457806323b872dd146102fa5780632d20fb601461031a5780632f745c591461033a57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046122b9565b61069d565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e61070a565b6040516102409190612415565b34801561027757600080fd5b5061028b610286366004612365565b61079c565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be36600461228f565b61082c565b005b3480156102d157600080fd5b506000545b604051908152602001610240565b3480156102f057600080fd5b506102d6600a5481565b34801561030657600080fd5b506102c361031536600461213b565b610944565b34801561032657600080fd5b506102c3610335366004612365565b61094f565b34801561034657600080fd5b506102d661035536600461228f565b610a00565b34801561036657600080fd5b506102c3610b5d565b34801561037b57600080fd5b506102c361038a36600461213b565b610c88565b34801561039b57600080fd5b506102d6600d5481565b3480156103b157600080fd5b506102d66103c0366004612365565b610ca3565b3480156103d157600080fd5b506102c36103e03660046122f3565b610d05565b3480156103f157600080fd5b5061028b610400366004612365565b610d59565b34801561041157600080fd5b5061025e610d6b565b34801561042657600080fd5b506102d66104353660046120ed565b610df9565b34801561044657600080fd5b506102c3610e8a565b34801561045b57600080fd5b506102c3610ede565b34801561047057600080fd5b506007546001600160a01b031661028b565b34801561048e57600080fd5b506102c361049d366004612365565b610f3a565b3480156104ae57600080fd5b506104c26104bd366004612365565b610f87565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610240565b3480156104fc57600080fd5b5061025e610fa4565b34801561051157600080fd5b506102d6600b5481565b34801561052757600080fd5b506102c3610536366004612253565b610fb3565b6102c3610549366004612365565b611078565b34801561055a57600080fd5b506102c3610569366004612177565b6112fa565b34801561057a57600080fd5b50600f546102349060ff1681565b34801561059457600080fd5b506102c36105a3366004612365565b611333565b3480156105b457600080fd5b5061025e6105c3366004612365565b611380565b3480156105d457600080fd5b506102d6600e5481565b3480156105ea57600080fd5b506102d66105f93660046120ed565b61144e565b34801561060a57600080fd5b506102c3610619366004612365565b611459565b34801561062a57600080fd5b50610234610639366004612108565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561067357600080fd5b506102c36106823660046120ed565b6114a6565b34801561069357600080fd5b506102d6600c5481565b60006001600160e01b031982166380ac58cd60e01b14806106ce57506001600160e01b03198216635b5e139f60e01b145b806106e957506001600160e01b0319821663780e9d6360e01b145b8061070457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461071990612513565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612513565b80156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b5050505050905090565b60006107a9826000541190565b6108105760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061083782610d59565b9050806001600160a01b0316836001600160a01b031614156108a65760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610807565b336001600160a01b03821614806108c257506108c28133610639565b6109345760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610807565b61093f83838361155c565b505050565b61093f8383836115b8565b6007546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600260085414156109ea5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b60026008556109f8816118b1565b506001600855565b6000610a0b83610df9565b8210610a645760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610807565b600080549080805b83811015610afd576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610abf57805192505b876001600160a01b0316836001600160a01b03161415610af45786841415610aed5750935061070492505050565b6001909301925b50600101610a6c565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610807565b6007546001600160a01b03163314610ba55760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b60026008541415610bf85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600855604051600090339047908381818185875af1925050503d8060008114610c3f576040519150601f19603f3d011682016040523d82523d6000602084013e610c44565b606091505b50509050806109f85760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610807565b61093f838383604051806020016040528060008152506112fa565b600080548210610d015760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610807565b5090565b6007546001600160a01b03163314610d4d5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b61093f60098383612041565b6000610d6482611a49565b5192915050565b60098054610d7890612513565b80601f0160208091040260200160405190810160405280929190818152602001828054610da490612513565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b505050505081565b60006001600160a01b038216610e655760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610807565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610ed25760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b610edc6000611b20565b565b6007546001600160a01b03163314610f265760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600f805460ff19811660ff90911615179055565b6007546001600160a01b03163314610f825760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600b55565b604080518082019091526000808252602082015261070482611a49565b60606002805461071990612513565b6001600160a01b03821633141561100c5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610807565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f5460ff166110d65760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e67206973206e6f7420656e61626c656420617420746869732074604482015262696d6560e81b6064820152608401610807565b600b546110e390826124b1565b34146111485760405162461bcd60e51b815260206004820152602e60248201527f506c656173652073656e642074686520657861637420616d6f756e742072657160448201526d1d5a5c995908199bdc881b5a5b9d60921b6064820152608401610807565b3332146111bd5760405162461bcd60e51b815260206004820152603e60248201527f5478206661696c65643a206d696e74696e672066726f6d2065787465726e616c60448201527f20636f6e74726163742063616c6c73206973206e6f7420616c6c6f77656400006064820152608401610807565b600a546111cb906001612485565b816111d560005490565b6111df9190612485565b1061122c5760405162461bcd60e51b815260206004820152601a60248201527f54686520636f6c6c656374696f6e20697320736f6c64206f75740000000000006044820152606401610807565b600c5461123a906001612485565b81106112885760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b600d54816112953361144e565b61129f9190612485565b11156112ed5760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b6112f73382611b72565b50565b6113058484846115b8565b61131184848484611b90565b61132d5760405162461bcd60e51b815260040161080790612428565b50505050565b6007546001600160a01b0316331461137b5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600c55565b606061138d826000541190565b6113f15760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b60006113fb611c9e565b905080516000141561141c5760405180602001604052806000815250611447565b8061142684611cad565b6040516020016114379291906123aa565b6040516020818303038152906040525b9392505050565b600061070482611dc3565b6007546001600160a01b031633146114a15760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600d55565b6007546001600160a01b031633146114ee5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b6001600160a01b0381166115535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6112f781611b20565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006115c382611a49565b80519091506000906001600160a01b0316336001600160a01b031614806115fa5750336115ef8461079c565b6001600160a01b0316145b8061160c5750815161160c9033610639565b9050806116815760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610807565b846001600160a01b031682600001516001600160a01b0316146116f55760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610807565b6001600160a01b0384166117595760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610807565b611769600084846000015161155c565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff16021790559086018083529120549091166118675761181a816000541190565b15611867578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b806118fe5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610807565b60005461194d5760405162461bcd60e51b815260206004820152601460248201527f6e6f20746f6b656e73206d696e746564207965740000000000000000000000006044820152606401610807565b600e5460005481106119a15760405162461bcd60e51b815260206004820152601c60248201527f616c6c206f776e657273686970732068617665206265656e20736574000000006044820152606401610807565b60005482820160001981019110156119bc5750600054600019015b815b818111611a3e576000818152600360205260409020546001600160a01b0316611a365760006119ec82611a49565b805160008481526003602090815260409091208054919093015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b0390921691909117179055505b6001016119be565b50600101600e555050565b6040805180820190915260008082526020820152611a68826000541190565b611ac75760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610807565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b16579392505050565b5060001901611ac9565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b8c828260405180602001604052806000815250611e6d565b5050565b60006001600160a01b0384163b15611c9257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd49033908990889088906004016123d9565b602060405180830381600087803b158015611bee57600080fd5b505af1925050508015611c1e575060408051601f3d908101601f19168201909252611c1b918101906122d6565b60015b611c78573d808015611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b508051611c705760405162461bcd60e51b815260040161080790612428565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c96565b5060015b949350505050565b60606009805461071990612513565b606081611cd15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cfb5780611ce58161254e565b9150611cf49050600a8361249d565b9150611cd5565b60008167ffffffffffffffff811115611d1657611d166125bf565b6040519080825280601f01601f191660200182016040528015611d40576020820181803683370190505b5090505b8415611c9657611d556001836124d0565b9150611d62600a86612569565b611d6d906030612485565b60f81b818381518110611d8257611d826125a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611dbc600a8661249d565b9450611d44565b60006001600160a01b038216611e415760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610807565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b61093f83838360016000546001600160a01b038516611ed85760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610807565b83611f365760405162461bcd60e51b815260206004820152602860248201527f455243373231413a207175616e74697479206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608401610807565b6001600160a01b03851660008181526004602090815260408083208054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b858110156120385760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4831561202c576120106000888488611b90565b61202c5760405162461bcd60e51b815260040161080790612428565b60019182019101611fbd565b506000556118aa565b82805461204d90612513565b90600052602060002090601f01602090048101928261206f57600085556120b5565b82601f106120885782800160ff198235161785556120b5565b828001600101855582156120b5579182015b828111156120b557823582559160200191906001019061209a565b50610d019291505b80821115610d0157600081556001016120bd565b80356001600160a01b03811681146120e857600080fd5b919050565b6000602082840312156120ff57600080fd5b611447826120d1565b6000806040838503121561211b57600080fd5b612124836120d1565b9150612132602084016120d1565b90509250929050565b60008060006060848603121561215057600080fd5b612159846120d1565b9250612167602085016120d1565b9150604084013590509250925092565b6000806000806080858703121561218d57600080fd5b612196856120d1565b93506121a4602086016120d1565b925060408501359150606085013567ffffffffffffffff808211156121c857600080fd5b818701915087601f8301126121dc57600080fd5b8135818111156121ee576121ee6125bf565b604051601f8201601f19908116603f01168101908382118183101715612216576122166125bf565b816040528281528a602084870101111561222f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561226657600080fd5b61226f836120d1565b91506020830135801515811461228457600080fd5b809150509250929050565b600080604083850312156122a257600080fd5b6122ab836120d1565b946020939093013593505050565b6000602082840312156122cb57600080fd5b8135611447816125d5565b6000602082840312156122e857600080fd5b8151611447816125d5565b6000806020838503121561230657600080fd5b823567ffffffffffffffff8082111561231e57600080fd5b818501915085601f83011261233257600080fd5b81358181111561234157600080fd5b86602082850101111561235357600080fd5b60209290920196919550909350505050565b60006020828403121561237757600080fd5b5035919050565b600081518084526123968160208601602086016124e7565b601f01601f19169290920160200192915050565b600083516123bc8184602088016124e7565b8351908301906123d08183602088016124e7565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261240b608083018461237e565b9695505050505050565b602081526000611447602083018461237e565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527f6563656976657220696d706c656d656e74657200000000000000000000000000606082015260800190565b600082198211156124985761249861257d565b500190565b6000826124ac576124ac612593565b500490565b60008160001904831182151516156124cb576124cb61257d565b500290565b6000828210156124e2576124e261257d565b500390565b60005b838110156125025781810151838201526020016124ea565b8381111561132d5750506000910152565b600181811c9082168061252757607f821691505b6020821081141561254857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125625761256261257d565b5060010190565b60008261257857612578612593565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112f757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a164736f6c63430008070033

Deployed Bytecode

0x60806040526004361061020f5760003560e01c80637d55094d11610118578063beb9716d116100a0578063dc33e6811161006f578063dc33e681146105de578063e268e4d3146105fe578063e985e9c51461061e578063f2fde38b14610667578063f968adbe1461068757600080fd5b8063beb9716d1461056e578063c6f6f21614610588578063c87b56dd146105a8578063d7224ba0146105c857600080fd5b806395d89b41116100e757806395d89b41146104f0578063a035b1fe14610505578063a22cb4651461051b578063aced368a1461053b578063b88d4fde1461054e57600080fd5b80637d55094d1461044f5780638da5cb5b1461046457806391b7f5ed146104825780639231ab2a146104a257600080fd5b80633ccfd60b1161019b57806355f804b31161016a57806355f804b3146103c55780636352211e146103e55780636c0360eb1461040557806370a082311461041a578063715018a61461043a57600080fd5b80633ccfd60b1461035a57806342842e0e1461036f578063453c23101461038f5780634f6ccce7146103a557600080fd5b806318160ddd116101e257806318160ddd146102c55780632176e68c146102e457806323b872dd146102fa5780632d20fb601461031a5780632f745c591461033a57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046122b9565b61069d565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e61070a565b6040516102409190612415565b34801561027757600080fd5b5061028b610286366004612365565b61079c565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be36600461228f565b61082c565b005b3480156102d157600080fd5b506000545b604051908152602001610240565b3480156102f057600080fd5b506102d6600a5481565b34801561030657600080fd5b506102c361031536600461213b565b610944565b34801561032657600080fd5b506102c3610335366004612365565b61094f565b34801561034657600080fd5b506102d661035536600461228f565b610a00565b34801561036657600080fd5b506102c3610b5d565b34801561037b57600080fd5b506102c361038a36600461213b565b610c88565b34801561039b57600080fd5b506102d6600d5481565b3480156103b157600080fd5b506102d66103c0366004612365565b610ca3565b3480156103d157600080fd5b506102c36103e03660046122f3565b610d05565b3480156103f157600080fd5b5061028b610400366004612365565b610d59565b34801561041157600080fd5b5061025e610d6b565b34801561042657600080fd5b506102d66104353660046120ed565b610df9565b34801561044657600080fd5b506102c3610e8a565b34801561045b57600080fd5b506102c3610ede565b34801561047057600080fd5b506007546001600160a01b031661028b565b34801561048e57600080fd5b506102c361049d366004612365565b610f3a565b3480156104ae57600080fd5b506104c26104bd366004612365565b610f87565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610240565b3480156104fc57600080fd5b5061025e610fa4565b34801561051157600080fd5b506102d6600b5481565b34801561052757600080fd5b506102c3610536366004612253565b610fb3565b6102c3610549366004612365565b611078565b34801561055a57600080fd5b506102c3610569366004612177565b6112fa565b34801561057a57600080fd5b50600f546102349060ff1681565b34801561059457600080fd5b506102c36105a3366004612365565b611333565b3480156105b457600080fd5b5061025e6105c3366004612365565b611380565b3480156105d457600080fd5b506102d6600e5481565b3480156105ea57600080fd5b506102d66105f93660046120ed565b61144e565b34801561060a57600080fd5b506102c3610619366004612365565b611459565b34801561062a57600080fd5b50610234610639366004612108565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561067357600080fd5b506102c36106823660046120ed565b6114a6565b34801561069357600080fd5b506102d6600c5481565b60006001600160e01b031982166380ac58cd60e01b14806106ce57506001600160e01b03198216635b5e139f60e01b145b806106e957506001600160e01b0319821663780e9d6360e01b145b8061070457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461071990612513565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612513565b80156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b5050505050905090565b60006107a9826000541190565b6108105760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061083782610d59565b9050806001600160a01b0316836001600160a01b031614156108a65760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610807565b336001600160a01b03821614806108c257506108c28133610639565b6109345760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610807565b61093f83838361155c565b505050565b61093f8383836115b8565b6007546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600260085414156109ea5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b60026008556109f8816118b1565b506001600855565b6000610a0b83610df9565b8210610a645760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610807565b600080549080805b83811015610afd576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610abf57805192505b876001600160a01b0316836001600160a01b03161415610af45786841415610aed5750935061070492505050565b6001909301925b50600101610a6c565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610807565b6007546001600160a01b03163314610ba55760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b60026008541415610bf85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600855604051600090339047908381818185875af1925050503d8060008114610c3f576040519150601f19603f3d011682016040523d82523d6000602084013e610c44565b606091505b50509050806109f85760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610807565b61093f838383604051806020016040528060008152506112fa565b600080548210610d015760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610807565b5090565b6007546001600160a01b03163314610d4d5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b61093f60098383612041565b6000610d6482611a49565b5192915050565b60098054610d7890612513565b80601f0160208091040260200160405190810160405280929190818152602001828054610da490612513565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b505050505081565b60006001600160a01b038216610e655760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610807565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610ed25760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b610edc6000611b20565b565b6007546001600160a01b03163314610f265760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600f805460ff19811660ff90911615179055565b6007546001600160a01b03163314610f825760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600b55565b604080518082019091526000808252602082015261070482611a49565b60606002805461071990612513565b6001600160a01b03821633141561100c5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610807565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f5460ff166110d65760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e67206973206e6f7420656e61626c656420617420746869732074604482015262696d6560e81b6064820152608401610807565b600b546110e390826124b1565b34146111485760405162461bcd60e51b815260206004820152602e60248201527f506c656173652073656e642074686520657861637420616d6f756e742072657160448201526d1d5a5c995908199bdc881b5a5b9d60921b6064820152608401610807565b3332146111bd5760405162461bcd60e51b815260206004820152603e60248201527f5478206661696c65643a206d696e74696e672066726f6d2065787465726e616c60448201527f20636f6e74726163742063616c6c73206973206e6f7420616c6c6f77656400006064820152608401610807565b600a546111cb906001612485565b816111d560005490565b6111df9190612485565b1061122c5760405162461bcd60e51b815260206004820152601a60248201527f54686520636f6c6c656374696f6e20697320736f6c64206f75740000000000006044820152606401610807565b600c5461123a906001612485565b81106112885760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b600d54816112953361144e565b61129f9190612485565b11156112ed5760405162461bcd60e51b815260206004820152601860248201527f4d6178206d696e742069732033207065722077616c6c657400000000000000006044820152606401610807565b6112f73382611b72565b50565b6113058484846115b8565b61131184848484611b90565b61132d5760405162461bcd60e51b815260040161080790612428565b50505050565b6007546001600160a01b0316331461137b5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600c55565b606061138d826000541190565b6113f15760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b60006113fb611c9e565b905080516000141561141c5760405180602001604052806000815250611447565b8061142684611cad565b6040516020016114379291906123aa565b6040516020818303038152906040525b9392505050565b600061070482611dc3565b6007546001600160a01b031633146114a15760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b600d55565b6007546001600160a01b031633146114ee5760405162461bcd60e51b815260206004820181905260248201526000805160206125ec8339815191526044820152606401610807565b6001600160a01b0381166115535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6112f781611b20565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006115c382611a49565b80519091506000906001600160a01b0316336001600160a01b031614806115fa5750336115ef8461079c565b6001600160a01b0316145b8061160c5750815161160c9033610639565b9050806116815760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610807565b846001600160a01b031682600001516001600160a01b0316146116f55760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610807565b6001600160a01b0384166117595760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610807565b611769600084846000015161155c565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255888552600390935281842080546001600160e01b031916909117600160a01b4267ffffffffffffffff16021790559086018083529120549091166118675761181a816000541190565b15611867578251600082815260036020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b806118fe5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610807565b60005461194d5760405162461bcd60e51b815260206004820152601460248201527f6e6f20746f6b656e73206d696e746564207965740000000000000000000000006044820152606401610807565b600e5460005481106119a15760405162461bcd60e51b815260206004820152601c60248201527f616c6c206f776e657273686970732068617665206265656e20736574000000006044820152606401610807565b60005482820160001981019110156119bc5750600054600019015b815b818111611a3e576000818152600360205260409020546001600160a01b0316611a365760006119ec82611a49565b805160008481526003602090815260409091208054919093015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b0390921691909117179055505b6001016119be565b50600101600e555050565b6040805180820190915260008082526020820152611a68826000541190565b611ac75760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610807565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b16579392505050565b5060001901611ac9565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b8c828260405180602001604052806000815250611e6d565b5050565b60006001600160a01b0384163b15611c9257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd49033908990889088906004016123d9565b602060405180830381600087803b158015611bee57600080fd5b505af1925050508015611c1e575060408051601f3d908101601f19168201909252611c1b918101906122d6565b60015b611c78573d808015611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b508051611c705760405162461bcd60e51b815260040161080790612428565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c96565b5060015b949350505050565b60606009805461071990612513565b606081611cd15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611cfb5780611ce58161254e565b9150611cf49050600a8361249d565b9150611cd5565b60008167ffffffffffffffff811115611d1657611d166125bf565b6040519080825280601f01601f191660200182016040528015611d40576020820181803683370190505b5090505b8415611c9657611d556001836124d0565b9150611d62600a86612569565b611d6d906030612485565b60f81b818381518110611d8257611d826125a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611dbc600a8661249d565b9450611d44565b60006001600160a01b038216611e415760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610807565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b61093f83838360016000546001600160a01b038516611ed85760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610807565b83611f365760405162461bcd60e51b815260206004820152602860248201527f455243373231413a207175616e74697479206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608401610807565b6001600160a01b03851660008181526004602090815260408083208054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168c01831690811782900483168c01909216021790558483526003909152812080546001600160e01b031916909217600160a01b4267ffffffffffffffff16021790915581905b858110156120385760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4831561202c576120106000888488611b90565b61202c5760405162461bcd60e51b815260040161080790612428565b60019182019101611fbd565b506000556118aa565b82805461204d90612513565b90600052602060002090601f01602090048101928261206f57600085556120b5565b82601f106120885782800160ff198235161785556120b5565b828001600101855582156120b5579182015b828111156120b557823582559160200191906001019061209a565b50610d019291505b80821115610d0157600081556001016120bd565b80356001600160a01b03811681146120e857600080fd5b919050565b6000602082840312156120ff57600080fd5b611447826120d1565b6000806040838503121561211b57600080fd5b612124836120d1565b9150612132602084016120d1565b90509250929050565b60008060006060848603121561215057600080fd5b612159846120d1565b9250612167602085016120d1565b9150604084013590509250925092565b6000806000806080858703121561218d57600080fd5b612196856120d1565b93506121a4602086016120d1565b925060408501359150606085013567ffffffffffffffff808211156121c857600080fd5b818701915087601f8301126121dc57600080fd5b8135818111156121ee576121ee6125bf565b604051601f8201601f19908116603f01168101908382118183101715612216576122166125bf565b816040528281528a602084870101111561222f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561226657600080fd5b61226f836120d1565b91506020830135801515811461228457600080fd5b809150509250929050565b600080604083850312156122a257600080fd5b6122ab836120d1565b946020939093013593505050565b6000602082840312156122cb57600080fd5b8135611447816125d5565b6000602082840312156122e857600080fd5b8151611447816125d5565b6000806020838503121561230657600080fd5b823567ffffffffffffffff8082111561231e57600080fd5b818501915085601f83011261233257600080fd5b81358181111561234157600080fd5b86602082850101111561235357600080fd5b60209290920196919550909350505050565b60006020828403121561237757600080fd5b5035919050565b600081518084526123968160208601602086016124e7565b601f01601f19169290920160200192915050565b600083516123bc8184602088016124e7565b8351908301906123d08183602088016124e7565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261240b608083018461237e565b9695505050505050565b602081526000611447602083018461237e565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527f6563656976657220696d706c656d656e74657200000000000000000000000000606082015260800190565b600082198211156124985761249861257d565b500190565b6000826124ac576124ac612593565b500490565b60008160001904831182151516156124cb576124cb61257d565b500290565b6000828210156124e2576124e261257d565b500390565b60005b838110156125025781810151838201526020016124ea565b8381111561132d5750506000910152565b600181811c9082168061252757607f821691505b6020821081141561254857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125625761256261257d565b5060010190565b60008261257857612578612593565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112f757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a164736f6c63430008070033

Deployed Bytecode Sourcemap

22773:3181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14215:372;;;;;;;;;;-1:-1:-1;14215:372:0;;;;;:::i;:::-;;:::i;:::-;;;5903:14:1;;5896:22;5878:41;;5866:2;5851:18;14215:372:0;;;;;;;;15738:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16824:214::-;;;;;;;;;;-1:-1:-1;16824:214:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5155:55:1;;;5137:74;;5125:2;5110:18;16824:214:0;4991:226:1;16403:413:0;;;;;;;;;;-1:-1:-1;16403:413:0;;;;;:::i;:::-;;:::i;:::-;;13018:100;;;;;;;;;;-1:-1:-1;13071:7:0;13098:12;13018:100;;;18536:25:1;;;18524:2;18509:18;13018:100:0;18390:177:1;22867:38:0;;;;;;;;;;;;;;;;17514:170;;;;;;;;;;-1:-1:-1;17514:170:0;;;;;:::i;:::-;;:::i;24149:118::-;;;;;;;;;;-1:-1:-1;24149:118:0;;;;;:::i;:::-;;:::i;13321:886::-;;;;;;;;;;-1:-1:-1;13321:886:0;;;;;:::i;:::-;;:::i;24358:176::-;;;;;;;;;;;;;:::i;17692:185::-;;;;;;;;;;-1:-1:-1;17692:185:0;;;;;:::i;:::-;;:::i;23014:42::-;;;;;;;;;;;;;;;;13126:187;;;;;;;;;;-1:-1:-1;13126:187:0;;;;;:::i;:::-;;:::i;24047:96::-;;;;;;;;;;-1:-1:-1;24047:96:0;;;;;:::i;:::-;;:::i;15606:124::-;;;;;;;;;;-1:-1:-1;15606:124:0;;;;;:::i;:::-;;:::i;22834:28::-;;;;;;;;;;;;;:::i;14595:221::-;;;;;;;;;;-1:-1:-1;14595:221:0;;;;;:::i;:::-;;:::i;3584:103::-;;;;;;;;;;;;;:::i;24275:77::-;;;;;;;;;;;;;:::i;3361:87::-;;;;;;;;;;-1:-1:-1;3434:6:0;;-1:-1:-1;;;;;3434:6:0;3361:87;;24678:82;;;;;;;;;;-1:-1:-1;24678:82:0;;;;;:::i;:::-;;:::i;24540:132::-;;;;;;;;;;-1:-1:-1;24540:132:0;;;;;:::i;:::-;;:::i;:::-;;;;18232:13:1;;-1:-1:-1;;;;;18228:62:1;18210:81;;18351:4;18339:17;;;18333:24;18359:18;18329:49;18307:20;;;18300:79;;;;18183:18;24540:132:0;18000:385:1;15846:104:0;;;;;;;;;;;;;:::i;22910:52::-;;;;;;;;;;;;;;;;17046:288;;;;;;;;;;-1:-1:-1;17046:288:0;;;;;:::i;:::-;;:::i;23205:615::-;;;;;;:::i;:::-;;:::i;17885:355::-;;;;;;;;;;-1:-1:-1;17885:355:0;;;;;:::i;:::-;;:::i;23111:28::-;;;;;;;;;;-1:-1:-1;23111:28:0;;;;;;;;24766:94;;;;;;;;;;-1:-1:-1;24766:94:0;;;;;:::i;:::-;;:::i;15958:335::-;;;;;;;;;;-1:-1:-1;15958:335:0;;;;;:::i;:::-;;:::i;23061:45::-;;;;;;;;;;;;;;;;23826:107;;;;;;;;;;-1:-1:-1;23826:107:0;;;;;:::i;:::-;;:::i;24866:110::-;;;;;;;;;;-1:-1:-1;24866:110:0;;;;;:::i;:::-;;:::i;17342:164::-;;;;;;;;;;-1:-1:-1;17342:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;17463:25:0;;;17439:4;17463:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;17342:164;3695:201;;;;;;;;;;-1:-1:-1;3695:201:0;;;;;:::i;:::-;;:::i;22967:42::-;;;;;;;;;;;;;;;;14215:372;14317:4;-1:-1:-1;;;;;;14354:40:0;;-1:-1:-1;;;14354:40:0;;:105;;-1:-1:-1;;;;;;;14411:48:0;;-1:-1:-1;;;14411:48:0;14354:105;:172;;;-1:-1:-1;;;;;;;14476:50:0;;-1:-1:-1;;;14476:50:0;14354:172;:225;;;-1:-1:-1;;;;;;;;;;10292:40:0;;;14543:36;14334:245;14215:372;-1:-1:-1;;14215:372:0:o;15738:100::-;15792:13;15825:5;15818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15738:100;:::o;16824:214::-;16892:7;16920:16;16928:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;16920:16;16912:74;;;;-1:-1:-1;;;16912:74:0;;17373:2:1;16912:74:0;;;17355:21:1;17412:2;17392:18;;;17385:30;17451:34;17431:18;;;17424:62;-1:-1:-1;;;17502:18:1;;;17495:43;17555:19;;16912:74:0;;;;;;;;;-1:-1:-1;17006:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;17006:24:0;;16824:214::o;16403:413::-;16476:13;16492:24;16508:7;16492:15;:24::i;:::-;16476:40;;16541:5;-1:-1:-1;;;;;16535:11:0;:2;-1:-1:-1;;;;;16535:11:0;;;16527:58;;;;-1:-1:-1;;;16527:58:0;;14203:2:1;16527:58:0;;;14185:21:1;14242:2;14222:18;;;14215:30;14281:34;14261:18;;;14254:62;-1:-1:-1;;;14332:18:1;;;14325:32;14374:19;;16527:58:0;14001:398:1;16527:58:0;2956:10;-1:-1:-1;;;;;16620:21:0;;;;:62;;-1:-1:-1;16645:37:0;16662:5;2956:10;17342:164;:::i;16645:37::-;16598:169;;;;-1:-1:-1;;;16598:169:0;;9864:2:1;16598:169:0;;;9846:21:1;9903:2;9883:18;;;9876:30;9942:34;9922:18;;;9915:62;10013:27;9993:18;;;9986:55;10058:19;;16598:169:0;9662:421:1;16598:169:0;16780:28;16789:2;16793:7;16802:5;16780:8;:28::i;:::-;16465:351;16403:413;;:::o;17514:170::-;17648:28;17658:4;17664:2;17668:7;17648:9;:28::i;24149:118::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;1045:1:::1;1193:7;;:19;;1185:63;;;::::0;-1:-1:-1;;;1185:63:0;;16597:2:1;1185:63:0::1;::::0;::::1;16579:21:1::0;16636:2;16616:18;;;16609:30;16675:33;16655:18;;;16648:61;16726:18;;1185:63:0::1;16395:355:1::0;1185:63:0::1;1045:1;1261:7;:18:::0;24233:28:::2;24252:8:::0;24233:18:::2;:28::i;:::-;-1:-1:-1::0;1001:1:0::1;1306:7;:22:::0;24149:118::o;13321:886::-;13410:7;13446:16;13456:5;13446:9;:16::i;:::-;13438:5;:24;13430:71;;;;-1:-1:-1;;;13430:71:0;;6356:2:1;13430:71:0;;;6338:21:1;6395:2;6375:18;;;6368:30;6434:34;6414:18;;;6407:62;-1:-1:-1;;;6485:18:1;;;6478:32;6527:19;;13430:71:0;6154:398:1;13430:71:0;13512:22;13098:12;;;13512:22;;13654:466;13674:14;13670:1;:18;13654:466;;;13714:31;13748:14;;;:11;:14;;;;;;;;;13714:48;;;;;;;;;-1:-1:-1;;;;;13714:48:0;;;;;-1:-1:-1;;;13714:48:0;;;;;;;;;;;;13785:28;13781:111;;13858:14;;;-1:-1:-1;13781:111:0;13935:5;-1:-1:-1;;;;;13914:26:0;:17;-1:-1:-1;;;;;13914:26:0;;13910:195;;;13984:5;13969:11;:20;13965:85;;;-1:-1:-1;14025:1:0;-1:-1:-1;14018:8:0;;-1:-1:-1;;;14018:8:0;13965:85;14072:13;;;;;13910:195;-1:-1:-1;13690:3:0;;13654:466;;;-1:-1:-1;14143:56:0;;-1:-1:-1;;;14143:56:0;;16182:2:1;14143:56:0;;;16164:21:1;16221:2;16201:18;;;16194:30;16260:34;16240:18;;;16233:62;-1:-1:-1;;;16311:18:1;;;16304:44;16365:19;;14143:56:0;15980:410:1;24358:176:0;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;1045:1:::1;1193:7;;:19;;1185:63;;;::::0;-1:-1:-1;;;1185:63:0;;16597:2:1;1185:63:0::1;::::0;::::1;16579:21:1::0;16636:2;16616:18;;;16609:30;16675:33;16655:18;;;16648:61;16726:18;;1185:63:0::1;16395:355:1::0;1185:63:0::1;1045:1;1261:7;:18:::0;24436:49:::2;::::0;24418:12:::2;::::0;24436:10:::2;::::0;24459:21:::2;::::0;24418:12;24436:49;24418:12;24436:49;24459:21;24436:10;:49:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24417:68;;;24500:7;24492:36;;;::::0;-1:-1:-1;;;24492:36:0;;14606:2:1;24492:36:0::2;::::0;::::2;14588:21:1::0;14645:2;14625:18;;;14618:30;-1:-1:-1;;;14664:18:1;;;14657:46;14720:18;;24492:36:0::2;14404:340:1::0;17692:185:0;17830:39;17847:4;17853:2;17857:7;17830:39;;;;;;;;;;;;:16;:39::i;13126:187::-;13193:7;13098:12;;13221:5;:21;13213:69;;;;-1:-1:-1;;;13213:69:0;;7926:2:1;13213:69:0;;;7908:21:1;7965:2;7945:18;;;7938:30;8004:34;7984:18;;;7977:62;-1:-1:-1;;;8055:18:1;;;8048:33;8098:19;;13213:69:0;7724:399:1;13213:69:0;-1:-1:-1;13300:5:0;13126:187::o;24047:96::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24119:18:::1;:7;24129:8:::0;;24119:18:::1;:::i;15606:124::-:0;15670:7;15697:20;15709:7;15697:11;:20::i;:::-;:25;;15606:124;-1:-1:-1;;15606:124:0:o;22834:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14595:221::-;14659:7;-1:-1:-1;;;;;14687:19:0;;14679:75;;;;-1:-1:-1;;;14679:75:0;;11074:2:1;14679:75:0;;;11056:21:1;11113:2;11093:18;;;11086:30;11152:34;11132:18;;;11125:62;-1:-1:-1;;;11203:18:1;;;11196:41;11254:19;;14679:75:0;10872:407:1;14679:75:0;-1:-1:-1;;;;;;14780:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;14780:27:0;;14595:221::o;3584:103::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;3649:30:::1;3676:1;3649:18;:30::i;:::-;3584:103::o:0;24275:77::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24339:7:::1;::::0;;-1:-1:-1;;24328:18:0;::::1;24339:7;::::0;;::::1;24338:8;24328:18;::::0;;24275:77::o;24678:82::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24740:5:::1;:14:::0;24678:82::o;24540:132::-;-1:-1:-1;;;;;;;;;;;;;;;;;24646:20:0;24658:7;24646:11;:20::i;15846:104::-;15902:13;15935:7;15928:14;;;;;:::i;17046:288::-;-1:-1:-1;;;;;17141:24:0;;2956:10;17141:24;;17133:63;;;;-1:-1:-1;;;17133:63:0;;13429:2:1;17133:63:0;;;13411:21:1;13468:2;13448:18;;;13441:30;13507:28;13487:18;;;13480:56;13553:18;;17133:63:0;13227:350:1;17133:63:0;2956:10;17209:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;17209:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;17209:53:0;;;;;;;;;;17278:48;;5878:41:1;;;17209:42:0;;2956:10;17278:48;;5851:18:1;17278:48:0;;;;;;;17046:288;;:::o;23205:615::-;23279:7;;;;23271:55;;;;-1:-1:-1;;;23271:55:0;;11893:2:1;23271:55:0;;;11875:21:1;11932:2;11912:18;;;11905:30;11971:34;11951:18;;;11944:62;-1:-1:-1;;;12022:18:1;;;12015:33;12065:19;;23271:55:0;11691:399:1;23271:55:0;23365:5;;23354:16;;:8;:16;:::i;:::-;23341:9;:29;23333:87;;;;-1:-1:-1;;;23333:87:0;;17787:2:1;23333:87:0;;;17769:21:1;17826:2;17806:18;;;17799:30;17865:34;17845:18;;;17838:62;-1:-1:-1;;;17916:18:1;;;17909:44;17970:19;;23333:87:0;17585:410:1;23333:87:0;23435:10;23449:9;23435:23;23427:97;;;;-1:-1:-1;;;23427:97:0;;10643:2:1;23427:97:0;;;10625:21:1;10682:2;10662:18;;;10655:30;10721:34;10701:18;;;10694:62;10792:32;10772:18;;;10765:60;10842:19;;23427:97:0;10441:426:1;23427:97:0;23567:11;;:15;;23581:1;23567:15;:::i;:::-;23556:8;23540:13;13071:7;13098:12;;13018:100;23540:13;:24;;;;:::i;:::-;:42;23531:81;;;;-1:-1:-1;;;23531:81:0;;12658:2:1;23531:81:0;;;12640:21:1;12697:2;12677:18;;;12670:30;12736:28;12716:18;;;12709:56;12782:18;;23531:81:0;12456:350:1;23531:81:0;23639:8;;:12;;23650:1;23639:12;:::i;:::-;23628:8;:23;23619:61;;;;-1:-1:-1;;;23619:61:0;;8736:2:1;23619:61:0;;;8718:21:1;8775:2;8755:18;;;8748:30;8814:26;8794:18;;;8787:54;8858:18;;23619:61:0;8534:348:1;23619:61:0;23734:12;;23722:8;23695:24;23708:10;23695:12;:24::i;:::-;:35;;;;:::i;:::-;:51;;23687:87;;;;-1:-1:-1;;;23687:87:0;;8736:2:1;23687:87:0;;;8718:21:1;8775:2;8755:18;;;8748:30;8814:26;8794:18;;;8787:54;8858:18;;23687:87:0;8534:348:1;23687:87:0;23783:31;23793:10;23805:8;23783:9;:31::i;:::-;23205:615;:::o;17885:355::-;18044:28;18054:4;18060:2;18064:7;18044:9;:28::i;:::-;18105:48;18128:4;18134:2;18138:7;18147:5;18105:22;:48::i;:::-;18083:149;;;;-1:-1:-1;;;18083:149:0;;;;;;;:::i;:::-;17885:355;;;;:::o;24766:94::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24834:8:::1;:20:::0;24766:94::o;15958:335::-;16031:13;16065:16;16073:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;16065:16;16057:76;;;;-1:-1:-1;;;16057:76:0;;13013:2:1;16057:76:0;;;12995:21:1;13052:2;13032:18;;;13025:30;13091:34;13071:18;;;13064:62;-1:-1:-1;;;13142:18:1;;;13135:45;13197:19;;16057:76:0;12811:411:1;16057:76:0;16146:21;16170:10;:8;:10::i;:::-;16146:34;;16204:7;16198:21;16223:1;16198:26;;:87;;;;;;;;;;;;;;;;;16251:7;16260:18;:7;:16;:18::i;:::-;16234:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16198:87;16191:94;15958:335;-1:-1:-1;;;15958:335:0:o;23826:107::-;23884:7;23907:20;23921:5;23907:13;:20::i;24866:110::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;24942:12:::1;:28:::0;24866:110::o;3695:201::-;3434:6;;-1:-1:-1;;;;;3434:6:0;2956:10;3496:23;3488:68;;;;-1:-1:-1;;;3488:68:0;;12297:2:1;3488:68:0;;;12279:21:1;;;12316:18;;;12309:30;-1:-1:-1;;;;;;;;;;;12355:18:1;;;12348:62;12427:18;;3488:68:0;12095:356:1;3488:68:0;-1:-1:-1;;;;;3784:22:0;::::1;3776:73;;;::::0;-1:-1:-1;;;3776:73:0;;6759:2:1;3776:73:0::1;::::0;::::1;6741:21:1::0;6798:2;6778:18;;;6771:30;6837:34;6817:18;;;6810:62;-1:-1:-1;;;6888:18:1;;;6881:36;6934:19;;3776:73:0::1;6557:402:1::0;3776:73:0::1;3860:28;3879:8;3860:18;:28::i;21421:196::-:0;21536:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;21536:29:0;-1:-1:-1;;;;;21536:29:0;;;;;;;;;21581:28;;21536:24;;21581:28;;;;;;;21421:196;;;:::o;19956:1457::-;20071:35;20109:20;20121:7;20109:11;:20::i;:::-;20184:18;;20071:58;;-1:-1:-1;20142:22:0;;-1:-1:-1;;;;;20168:34:0;2956:10;-1:-1:-1;;;;;20168:34:0;;:87;;;-1:-1:-1;2956:10:0;20219:20;20231:7;20219:11;:20::i;:::-;-1:-1:-1;;;;;20219:36:0;;20168:87;:154;;;-1:-1:-1;20289:18:0;;20272:50;;2956:10;17342:164;:::i;20272:50::-;20142:181;;20344:17;20336:80;;;;-1:-1:-1;;;20336:80:0;;13784:2:1;20336:80:0;;;13766:21:1;13823:2;13803:18;;;13796:30;13862:34;13842:18;;;13835:62;13933:20;13913:18;;;13906:48;13971:19;;20336:80:0;13582:414:1;20336:80:0;20459:4;-1:-1:-1;;;;;20437:26:0;:13;:18;;;-1:-1:-1;;;;;20437:26:0;;20429:77;;;;-1:-1:-1;;;20429:77:0;;11486:2:1;20429:77:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:34;11544:18;;;11537:62;-1:-1:-1;;;11615:18:1;;;11608:36;11661:19;;20429:77:0;11284:402:1;20429:77:0;-1:-1:-1;;;;;20525:16:0;;20517:66;;;;-1:-1:-1;;;20517:66:0;;8330:2:1;20517:66:0;;;8312:21:1;8369:2;8349:18;;;8342:30;8408:34;8388:18;;;8381:62;-1:-1:-1;;;8459:18:1;;;8452:35;8504:19;;20517:66:0;8128:401:1;20517:66:0;20652:49;20669:1;20673:7;20682:13;:18;;;20652:8;:49::i;:::-;-1:-1:-1;;;;;20739:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;20739:31:0;;;-1:-1:-1;;;;;20739:31:0;;;-1:-1:-1;;20739:31:0;;;;;;;20785:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;20785:29:0;;;;;;;;;;;;;20831:20;;;:11;:20;;;;;;:30;;-1:-1:-1;;;;;;20876:61:0;;;;-1:-1:-1;;;20921:15:0;20876:61;;;;;;20976:11;;;21006:24;;;;;:29;20976:11;;21006:29;21002:295;;21074:20;21082:11;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;21074:20;21070:212;;;21151:18;;;21119:24;;;:11;:24;;;;;;;;:50;;21234:28;;;;21192:70;;-1:-1:-1;;;21192:70:0;-1:-1:-1;;;;;;21192:70:0;;;-1:-1:-1;;;;;21119:50:0;;;21192:70;;;;;;;21070:212;20714:594;21344:7;21340:2;-1:-1:-1;;;;;21325:27:0;21334:4;-1:-1:-1;;;;;21325:27:0;;;;;;;;;;;21363:42;20060:1353;;19956:1457;;;:::o;24984:967::-;25056:13;25048:50;;;;-1:-1:-1;;;25048:50:0;;10290:2:1;25048:50:0;;;10272:21:1;10329:2;10309:18;;;10302:30;10368:26;10348:18;;;10341:54;10412:18;;25048:50:0;10088:348:1;25048:50:0;25115:12;;25107:50;;;;-1:-1:-1;;;25107:50:0;;7577:2:1;25107:50:0;;;7559:21:1;7616:2;7596:18;;;7589:30;7655:22;7635:18;;;7628:50;7695:18;;25107:50:0;7375:344:1;25107:50:0;25202:24;;25166:33;25271:12;25243:40;;25235:81;;;;-1:-1:-1;;;25235:81:0;;9507:2:1;25235:81:0;;;9489:21:1;9546:2;9526:18;;;9519:30;9585;9565:18;;;9558:58;9633:18;;25235:81:0;9305:352:1;25235:81:0;25350:16;25443:12;25369:36;;;-1:-1:-1;;25369:40:0;;;-1:-1:-1;25424:91:0;;;-1:-1:-1;25485:12:0;;-1:-1:-1;;25485:16:0;25424:91;25546:25;25529:354;25578:8;25573:1;:13;25529:354;;25645:1;25614:14;;;:11;:14;;;;;:19;-1:-1:-1;;;;;25614:19:0;25610:260;;25670:31;25704:14;25716:1;25704:11;:14::i;:::-;25761;;;25739;;;:11;:14;;;;;;;;:36;;25828:24;;;;;25796:56;;-1:-1:-1;;;25796:56:0;-1:-1:-1;;;;;;25796:56:0;;;-1:-1:-1;;;;;25739:36:0;;;25796:56;;;;;;;-1:-1:-1;25610:260:0;25588:3;;25529:354;;;-1:-1:-1;25935:1:0;25924:12;25897:24;:39;-1:-1:-1;;24984:967:0:o;15061:537::-;-1:-1:-1;;;;;;;;;;;;;;;;;15164:16:0;15172:7;18305:4;18339:12;-1:-1:-1;18329:22:0;18248:111;15164:16;15156:71;;;;-1:-1:-1;;;15156:71:0;;7166:2:1;15156:71:0;;;7148:21:1;7205:2;7185:18;;;7178:30;7244:34;7224:18;;;7217:62;-1:-1:-1;;;7295:18:1;;;7288:40;7345:19;;15156:71:0;6964:406:1;15156:71:0;15285:7;15265:245;15332:31;15366:17;;;:11;:17;;;;;;;;;15332:51;;;;;;;;;-1:-1:-1;;;;;15332:51:0;;;;;-1:-1:-1;;;15332:51:0;;;;;;;;;;;;15406:28;15402:93;;15466:9;15061:537;-1:-1:-1;;;15061:537:0:o;15402:93::-;-1:-1:-1;;;15305:6:0;15265:245;;3904:191;3997:6;;;-1:-1:-1;;;;;4014:17:0;;;-1:-1:-1;;;;;;4014:17:0;;;;;;;4047:40;;3997:6;;;4014:17;3997:6;;4047:40;;3978:16;;4047:40;3967:128;3904:191;:::o;18367:104::-;18436:27;18446:2;18450:8;18436:27;;;;;;;;;;;;:9;:27::i;:::-;18367:104;;:::o;21625:804::-;21780:4;-1:-1:-1;;;;;21801:13:0;;4242:19;:23;21797:625;;21837:72;;-1:-1:-1;;;21837:72:0;;-1:-1:-1;;;;;21837:36:0;;;;;:72;;2956:10;;21888:4;;21894:7;;21903:5;;21837:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21837:72:0;;;;;;;;-1:-1:-1;;21837:72:0;;;;;;;;;;;;:::i;:::-;;;21833:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22083:13:0;;22079:273;;22126:61;;-1:-1:-1;;;22126:61:0;;;;;;;:::i;22079:273::-;22302:6;22296:13;22287:6;22283:2;22279:15;22272:38;21833:534;-1:-1:-1;;;;;;21960:55:0;-1:-1:-1;;;21960:55:0;;-1:-1:-1;21953:62:0;;21797:625;-1:-1:-1;22406:4:0;21797:625;21625:804;;;;;;:::o;23939:102::-;23999:13;24028:7;24021:14;;;;;:::i;1462:534::-;1518:13;1550:10;1546:53;;-1:-1:-1;;1577:10:0;;;;;;;;;;;;-1:-1:-1;;;1577:10:0;;;;;1462:534::o;1546:53::-;1624:5;1609:12;1665:78;1672:9;;1665:78;;1698:8;;;;:::i;:::-;;-1:-1:-1;1721:10:0;;-1:-1:-1;1729:2:0;1721:10;;:::i;:::-;;;1665:78;;;1753:19;1785:6;1775:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1775:17:0;;1753:39;;1803:154;1810:10;;1803:154;;1837:11;1847:1;1837:11;;:::i;:::-;;-1:-1:-1;1906:10:0;1914:2;1906:5;:10;:::i;:::-;1893:24;;:2;:24;:::i;:::-;1880:39;;1863:6;1870;1863:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;1934:11:0;1943:2;1934:11;;:::i;:::-;;;1803:154;;14824:229;14885:7;-1:-1:-1;;;;;14913:19:0;;14905:81;;;;-1:-1:-1;;;14905:81:0;;9089:2:1;14905:81:0;;;9071:21:1;9128:2;9108:18;;;9101:30;9167:34;9147:18;;;9140:62;9238:19;9218:18;;;9211:47;9275:19;;14905:81:0;8887:413:1;14905:81:0;-1:-1:-1;;;;;;15012:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;15012:32:0;;-1:-1:-1;;;;;15012:32:0;;14824:229::o;18479:163::-;18602:32;18608:2;18612:8;18622:5;18629:4;18789:20;18812:12;-1:-1:-1;;;;;18843:16:0;;18835:62;;;;-1:-1:-1;;;18835:62:0;;15371:2:1;18835:62:0;;;15353:21:1;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;-1:-1:-1;;;15500:18:1;;;15493:31;15541:19;;18835:62:0;15169:397:1;18835:62:0;18916:13;18908:66;;;;-1:-1:-1;;;18908:66:0;;15773:2:1;18908:66:0;;;15755:21:1;15812:2;15792:18;;;15785:30;15851:34;15831:18;;;15824:62;-1:-1:-1;;;15902:18:1;;;15895:38;15950:19;;18908:66:0;15571:404:1;18908:66:0;-1:-1:-1;;;;;19086:16:0;;;;;;:12;:16;;;;;;;;:45;;-1:-1:-1;;;;;19086:45:0;;-1:-1:-1;;;;;19086:45:0;;;;;;;;;;19146:50;;;;;;;;;;;;;;19213:25;;;:11;:25;;;;;:35;;-1:-1:-1;;;;;;19263:66:0;;;;-1:-1:-1;;;19313:15:0;19263:66;;;;;;;19213:25;;19398:415;19418:8;19414:1;:12;19398:415;;;19457:38;;19482:12;;-1:-1:-1;;;;;19457:38:0;;;19474:1;;19457:38;;19474:1;;19457:38;19518:4;19514:249;;;19581:59;19612:1;19616:2;19620:12;19634:5;19581:22;:59::i;:::-;19547:196;;;;-1:-1:-1;;;19547:196:0;;;;;;;:::i;:::-;19783:14;;;;;19428:3;19398:415;;;-1:-1:-1;19829:12:0;:27;19880:60;17885:355;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:196:1;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:1138::-;1099:6;1107;1115;1123;1176:3;1164:9;1155:7;1151:23;1147:33;1144:53;;;1193:1;1190;1183:12;1144:53;1216:29;1235:9;1216:29;:::i;:::-;1206:39;;1264:38;1298:2;1287:9;1283:18;1264:38;:::i;:::-;1254:48;;1349:2;1338:9;1334:18;1321:32;1311:42;;1404:2;1393:9;1389:18;1376:32;1427:18;1468:2;1460:6;1457:14;1454:34;;;1484:1;1481;1474:12;1454:34;1522:6;1511:9;1507:22;1497:32;;1567:7;1560:4;1556:2;1552:13;1548:27;1538:55;;1589:1;1586;1579:12;1538:55;1625:2;1612:16;1647:2;1643;1640:10;1637:36;;;1653:18;;:::i;:::-;1728:2;1722:9;1696:2;1782:13;;-1:-1:-1;;1778:22:1;;;1802:2;1774:31;1770:40;1758:53;;;1826:18;;;1846:22;;;1823:46;1820:72;;;1872:18;;:::i;:::-;1912:10;1908:2;1901:22;1947:2;1939:6;1932:18;1987:7;1982:2;1977;1973;1969:11;1965:20;1962:33;1959:53;;;2008:1;2005;1998:12;1959:53;2064:2;2059;2055;2051:11;2046:2;2038:6;2034:15;2021:46;2109:1;2104:2;2099;2091:6;2087:15;2083:24;2076:35;2130:6;2120:16;;;;;;;1004:1138;;;;;;;:::o;2147:347::-;2212:6;2220;2273:2;2261:9;2252:7;2248:23;2244:32;2241:52;;;2289:1;2286;2279:12;2241:52;2312:29;2331:9;2312:29;:::i;:::-;2302:39;;2391:2;2380:9;2376:18;2363:32;2438:5;2431:13;2424:21;2417:5;2414:32;2404:60;;2460:1;2457;2450:12;2404:60;2483:5;2473:15;;;2147:347;;;;;:::o;2499:254::-;2567:6;2575;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;2667:29;2686:9;2667:29;:::i;:::-;2657:39;2743:2;2728:18;;;;2715:32;;-1:-1:-1;;;2499:254:1:o;2758:245::-;2816:6;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;2924:9;2911:23;2943:30;2967:5;2943:30;:::i;3008:249::-;3077:6;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;3178:9;3172:16;3197:30;3221:5;3197:30;:::i;3262:592::-;3333:6;3341;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;3450:9;3437:23;3479:18;3520:2;3512:6;3509:14;3506:34;;;3536:1;3533;3526:12;3506:34;3574:6;3563:9;3559:22;3549:32;;3619:7;3612:4;3608:2;3604:13;3600:27;3590:55;;3641:1;3638;3631:12;3590:55;3681:2;3668:16;3707:2;3699:6;3696:14;3693:34;;;3723:1;3720;3713:12;3693:34;3768:7;3763:2;3754:6;3750:2;3746:15;3742:24;3739:37;3736:57;;;3789:1;3786;3779:12;3736:57;3820:2;3812:11;;;;;3842:6;;-1:-1:-1;3262:592:1;;-1:-1:-1;;;;3262:592:1:o;3859:180::-;3918:6;3971:2;3959:9;3950:7;3946:23;3942:32;3939:52;;;3987:1;3984;3977:12;3939:52;-1:-1:-1;4010:23:1;;3859:180;-1:-1:-1;3859:180:1:o;4044:257::-;4085:3;4123:5;4117:12;4150:6;4145:3;4138:19;4166:63;4222:6;4215:4;4210:3;4206:14;4199:4;4192:5;4188:16;4166:63;:::i;:::-;4283:2;4262:15;-1:-1:-1;;4258:29:1;4249:39;;;;4290:4;4245:50;;4044:257;-1:-1:-1;;4044:257:1:o;4306:470::-;4485:3;4523:6;4517:13;4539:53;4585:6;4580:3;4573:4;4565:6;4561:17;4539:53;:::i;:::-;4655:13;;4614:16;;;;4677:57;4655:13;4614:16;4711:4;4699:17;;4677:57;:::i;:::-;4750:20;;4306:470;-1:-1:-1;;;;4306:470:1:o;5222:511::-;5416:4;-1:-1:-1;;;;;5526:2:1;5518:6;5514:15;5503:9;5496:34;5578:2;5570:6;5566:15;5561:2;5550:9;5546:18;5539:43;;5618:6;5613:2;5602:9;5598:18;5591:34;5661:3;5656:2;5645:9;5641:18;5634:31;5682:45;5722:3;5711:9;5707:19;5699:6;5682:45;:::i;:::-;5674:53;5222:511;-1:-1:-1;;;;;;5222:511:1:o;5930:219::-;6079:2;6068:9;6061:21;6042:4;6099:44;6139:2;6128:9;6124:18;6116:6;6099:44;:::i;14749:415::-;14951:2;14933:21;;;14990:2;14970:18;;;14963:30;15029:34;15024:2;15009:18;;15002:62;15100:21;15095:2;15080:18;;15073:49;15154:3;15139:19;;14749:415::o;18572:128::-;18612:3;18643:1;18639:6;18636:1;18633:13;18630:39;;;18649:18;;:::i;:::-;-1:-1:-1;18685:9:1;;18572:128::o;18705:120::-;18745:1;18771;18761:35;;18776:18;;:::i;:::-;-1:-1:-1;18810:9:1;;18705:120::o;18830:168::-;18870:7;18936:1;18932;18928:6;18924:14;18921:1;18918:21;18913:1;18906:9;18899:17;18895:45;18892:71;;;18943:18;;:::i;:::-;-1:-1:-1;18983:9:1;;18830:168::o;19003:125::-;19043:4;19071:1;19068;19065:8;19062:34;;;19076:18;;:::i;:::-;-1:-1:-1;19113:9:1;;19003:125::o;19133:258::-;19205:1;19215:113;19229:6;19226:1;19223:13;19215:113;;;19305:11;;;19299:18;19286:11;;;19279:39;19251:2;19244:10;19215:113;;;19346:6;19343:1;19340:13;19337:48;;;-1:-1:-1;;19381:1:1;19363:16;;19356:27;19133:258::o;19396:380::-;19475:1;19471:12;;;;19518;;;19539:61;;19593:4;19585:6;19581:17;19571:27;;19539:61;19646:2;19638:6;19635:14;19615:18;19612:38;19609:161;;;19692:10;19687:3;19683:20;19680:1;19673:31;19727:4;19724:1;19717:15;19755:4;19752:1;19745:15;19609:161;;19396:380;;;:::o;19781:135::-;19820:3;-1:-1:-1;;19841:17:1;;19838:43;;;19861:18;;:::i;:::-;-1:-1:-1;19908:1:1;19897:13;;19781:135::o;19921:112::-;19953:1;19979;19969:35;;19984:18;;:::i;:::-;-1:-1:-1;20018:9:1;;19921:112::o;20038:127::-;20099:10;20094:3;20090:20;20087:1;20080:31;20130:4;20127:1;20120:15;20154:4;20151:1;20144:15;20170:127;20231:10;20226:3;20222:20;20219:1;20212:31;20262:4;20259:1;20252:15;20286:4;20283:1;20276:15;20302:127;20363:10;20358:3;20354:20;20351:1;20344:31;20394:4;20391:1;20384:15;20418:4;20415:1;20408:15;20434:127;20495:10;20490:3;20486:20;20483:1;20476:31;20526:4;20523:1;20516:15;20550:4;20547:1;20540:15;20566:131;-1:-1:-1;;;;;;20640:32:1;;20630:43;;20620:71;;20687:1;20684;20677:12

Swarm Source

ipfs://e510fb10c744f90b32e53008bce48438f1c7038aeebbf7023f12d8abd39b65a1
Loading...
Loading
Loading...
Loading
[ 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.