ETH Price: $3,390.58 (+6.22%)
Gas: 39 Gwei

Token

Lost Souls Pepe (LSP)
 

Overview

Max Total Supply

4,352 LSP

Holders

1,062

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
3 LSP
0x06BE72D7b49915D10A7768A7F44e97D042D8291e
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:
LostSoulsPepe

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-25
*/

//SPDX-License-Identifier: MIT

/**

 ██▓     ▒█████    ██████ ▄▄▄█████▓         
▓██▒    ▒██▒  ██▒▒██    ▒ ▓  ██▒ ▓▒         
▒██░    ▒██░  ██▒░ ▓██▄   ▒ ▓██░ ▒░         
▒██░    ▒██   ██░  ▒   ██▒░ ▓██▓ ░          
░██████▒░ ████▓▒░▒██████▒▒  ▒██▒ ░          
░ ▒░▓  ░░ ▒░▒░▒░ ▒ ▒▓▒ ▒ ░  ▒ ░░            
░ ░ ▒  ░  ░ ▒ ▒░ ░ ░▒  ░ ░    ░             
  ░ ░   ░ ░ ░ ▒  ░  ░  ░    ░               
    ░  ░    ░ ░        ░                    
                                            
  ██████  ▒█████   █    ██  ██▓      ██████ 
▒██    ▒ ▒██▒  ██▒ ██  ▓██▒▓██▒    ▒██    ▒ 
░ ▓██▄   ▒██░  ██▒▓██  ▒██░▒██░    ░ ▓██▄   
  ▒   ██▒▒██   ██░▓▓█  ░██░▒██░      ▒   ██▒
▒██████▒▒░ ████▓▒░▒▒█████▓ ░██████▒▒██████▒▒
▒ ▒▓▒ ▒ ░░ ▒░▒░▒░ ░▒▓▒ ▒ ▒ ░ ▒░▓  ░▒ ▒▓▒ ▒ ░
░ ░▒  ░ ░  ░ ▒ ▒░ ░░▒░ ░ ░ ░ ░ ▒  ░░ ░▒  ░ ░
░  ░  ░  ░ ░ ░ ▒   ░░░ ░ ░   ░ ░   ░  ░  ░  
      ░      ░ ░     ░         ░  ░      ░  
                                            
 ██▓███  ▓█████  ██▓███  ▓█████             
▓██░  ██▒▓█   ▀ ▓██░  ██▒▓█   ▀             
▓██░ ██▓▒▒███   ▓██░ ██▓▒▒███               
▒██▄█▓▒ ▒▒▓█  ▄ ▒██▄█▓▒ ▒▒▓█  ▄             
▒██▒ ░  ░░▒████▒▒██▒ ░  ░░▒████▒            
▒▓▒░ ░  ░░░ ▒░ ░▒▓▒░ ░  ░░░ ▒░ ░            
░▒ ░      ░ ░  ░░▒ ░      ░ ░  ░            
░░          ░   ░░          ░               
            ░  ░            ░  ░            
                                            
*/

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() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {

        _status = _NOT_ENTERED;
    }
}

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        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.0;

library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {

            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division.
            if (prod1 == 0) {
                return prod0 / denominator;
            }

            // Make sure the result is less than 2^256. Also prevents denominator == 0.
            require(denominator > prod1);

            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
            // See https://cs.stackexchange.com/q/138556/92363.

            // Does not overflow because the denominator cannot be zero at this stage in the function.
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

            // Shift in bits from prod1 into prod0.
            prod0 |= prod1 * twos;
            uint256 inverse = (3 * denominator) ^ 2;

            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256
            result = prod0 * inverse;
            return result;
        }
    }

    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator,
        Rounding rounding
    ) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 result = 1 << (log2(a) >> 1);

        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10**64) {
                value /= 10**64;
                result += 64;
            }
            if (value >= 10**32) {
                value /= 10**32;
                result += 32;
            }
            if (value >= 10**16) {
                value /= 10**16;
                result += 16;
            }
            if (value >= 10**8) {
                value /= 10**8;
                result += 8;
            }
            if (value >= 10**4) {
                value /= 10**4;
                result += 4;
            }
            if (value >= 10**2) {
                value /= 10**2;
                result += 2;
            }
            if (value >= 10**1) {
                result += 1;
            }
        }
        return result;
    }

    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
        }
    }

    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
        }
    }
}

pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

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

    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

// ERC721A Contracts v4.2.3
// Creator: Chiru Labs

pragma solidity ^0.8.4;

interface IERC721A {

    error ApprovalCallerNotOwnerNorApproved();

    error ApprovalQueryForNonexistentToken();

    error BalanceQueryForZeroAddress();

    error MintToZeroAddress();

    error MintZeroQuantity();

    error OwnerQueryForNonexistentToken();

    error TransferCallerNotOwnerNorApproved();

    error TransferFromIncorrectOwner();

    error TransferToNonERC721ReceiverImplementer();

    error TransferToZeroAddress();

    error URIQueryForNonexistentToken();

    error MintERC2309QuantityExceedsLimit();

    error OwnershipNotInitializedForExtraData();

    struct TokenOwnership {
        // The address of the owner.
        address addr;
        // Stores the start time of ownership with minimal overhead for tokenomics.
        uint64 startTimestamp;
        // Whether the token has been burned.
        bool burned;
        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.
        uint24 extraData;
    }

    function totalSupply() external view returns (uint256);

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

    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,
        bytes calldata data
    ) external payable;

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

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

    function approve(address to, uint256 tokenId) external payable;
    function setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);

    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);
}

// ERC721A Contracts v4.2.3
// Creator: Chiru Labs

pragma solidity ^0.8.4;

/**
 * @dev Interface of ERC721 token receiver.
 */
interface ERC721A__IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

contract ERC721A is IERC721A {
    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).
    struct TokenApprovalRef {
        address value;
    }

    // Mask of an entry in packed address data.
    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;

    // The bit position of `numberMinted` in packed address data.
    uint256 private constant _BITPOS_NUMBER_MINTED = 64;

    // The bit position of `numberBurned` in packed address data.
    uint256 private constant _BITPOS_NUMBER_BURNED = 128;

    // The bit position of `aux` in packed address data.
    uint256 private constant _BITPOS_AUX = 192;

    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.
    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;

    // The bit position of `startTimestamp` in packed ownership.
    uint256 private constant _BITPOS_START_TIMESTAMP = 160;

    // The bit mask of the `burned` bit in packed ownership.
    uint256 private constant _BITMASK_BURNED = 1 << 224;

    // The bit position of the `nextInitialized` bit in packed ownership.
    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;

    // The bit mask of the `nextInitialized` bit in packed ownership.
    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;

    // The bit position of `extraData` in packed ownership.
    uint256 private constant _BITPOS_EXTRA_DATA = 232;

    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.
    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;

    // The mask of the lower 160 bits for addresses.
    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;
    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;

    // The `Transfer` event signature is given by:
    // `keccak256(bytes("Transfer(address,address,uint256)"))`.
    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;

    uint256 private _currentIndex;

    // The number of tokens burned.
    uint256 private _burnCounter;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    mapping(uint256 => uint256) private _packedOwnerships;
    mapping(address => uint256) private _packedAddressData;
    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

    function _startTokenId() internal view virtual returns (uint256) {
        return 0;
    }

    function _nextTokenId() internal view virtual returns (uint256) {
        return _currentIndex;
    }

    function totalSupply() public view virtual override returns (uint256) {
        // Counter underflow is impossible as _burnCounter cannot be incremented
        // more than `_currentIndex - _startTokenId()` times.
        unchecked {
            return _currentIndex - _burnCounter - _startTokenId();
        }
    }

    function _totalMinted() internal view virtual returns (uint256) {
        // Counter underflow is impossible as `_currentIndex` does not decrement,
        // and it is initialized to `_startTokenId()`.
        unchecked {
            return _currentIndex - _startTokenId();
        }
    }

    function _totalBurned() internal view virtual returns (uint256) {
        return _burnCounter;
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;
    }

    function _numberBurned(address owner) internal view returns (uint256) {
        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;
    }

    function _getAux(address owner) internal view returns (uint64) {
        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);
    }

    function _setAux(address owner, uint64 aux) internal virtual {
        uint256 packed = _packedAddressData[owner];
        uint256 auxCasted;
        // Cast `aux` with assembly to avoid redundant masking.
        assembly {
            auxCasted := aux
        }
        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);
        _packedAddressData[owner] = packed;
    }

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

        return
            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.
            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.
            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.
    }

    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) {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        string memory baseURI = _baseURI();
        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';
    }

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

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        return address(uint160(_packedOwnershipOf(tokenId)));
    }

    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {
        return _unpackedOwnership(_packedOwnershipOf(tokenId));
    }

    /**
     * @dev Returns the unpacked `TokenOwnership` struct at `index`.
     */
    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {
        return _unpackedOwnership(_packedOwnerships[index]);
    }


    function _initializeOwnershipAt(uint256 index) internal virtual {
        if (_packedOwnerships[index] == 0) {
            _packedOwnerships[index] = _packedOwnershipOf(index);
        }
    }

    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {
        uint256 curr = tokenId;

        unchecked {
            if (_startTokenId() <= curr)
                if (curr < _currentIndex) {
                    uint256 packed = _packedOwnerships[curr];
                    // If not burned.
                    if (packed & _BITMASK_BURNED == 0) {

                        while (packed == 0) {
                            packed = _packedOwnerships[--curr];
                        }
                        return packed;
                    }
                }
        }
        revert OwnerQueryForNonexistentToken();
    }

    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {
        ownership.addr = address(uint160(packed));
        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);
        ownership.burned = packed & _BITMASK_BURNED != 0;
        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);
    }

    /**
     * @dev Packs ownership data into a single uint256.
     */
    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {
        assembly {
            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.
            owner := and(owner, _BITMASK_ADDRESS)
            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.
            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))
        }
    }

    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {
        // For branchless setting of the `nextInitialized` flag.
        assembly {
            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.
            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))
        }
    }

    function approve(address to, uint256 tokenId) public payable virtual override {
        address owner = ownerOf(tokenId);

        if (_msgSenderERC721A() != owner)
            if (!isApprovedForAll(owner, _msgSenderERC721A())) {
                revert ApprovalCallerNotOwnerNorApproved();
            }

        _tokenApprovals[tokenId].value = to;
        emit Approval(owner, to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId].value;
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _operatorApprovals[_msgSenderERC721A()][operator] = approved;
        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);
    }

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

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return
            _startTokenId() <= tokenId &&
            tokenId < _currentIndex && // If within bounds,
            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.
    }

    /**
     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.
     */
    function _isSenderApprovedOrOwner(
        address approvedAddress,
        address owner,
        address msgSender
    ) private pure returns (bool result) {
        assembly {
            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.
            owner := and(owner, _BITMASK_ADDRESS)
            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.
            msgSender := and(msgSender, _BITMASK_ADDRESS)
            // `msgSender == owner || msgSender == approvedAddress`.
            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))
        }
    }

    /**
     * @dev Returns the storage slot and value for the approved address of `tokenId`.
     */
    function _getApprovedSlotAndAddress(uint256 tokenId)
        private
        view
        returns (uint256 approvedAddressSlot, address approvedAddress)
    {
        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];
        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.
        assembly {
            approvedAddressSlot := tokenApproval.slot
            approvedAddress := sload(approvedAddressSlot)
        }
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual override {
        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);

        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();

        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);

        // The nested ifs save around 20+ gas over a compound boolean condition.
        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))
            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();

        if (to == address(0)) revert TransferToZeroAddress();

        _beforeTokenTransfers(from, to, tokenId, 1);

        // Clear approvals from the previous owner.
        assembly {
            if approvedAddress {
                // This is equivalent to `delete _tokenApprovals[tokenId]`.
                sstore(approvedAddressSlot, 0)
            }
        }

        unchecked {
            // We can directly increment and decrement the balances.
            --_packedAddressData[from]; // Updates: `balance -= 1`.
            ++_packedAddressData[to]; // Updates: `balance += 1`.
            _packedOwnerships[tokenId] = _packOwnershipData(
                to,
                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)
            );

            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .
            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {
                uint256 nextTokenId = tokenId + 1;
                // If the next slot's address is zero and not burned (i.e. packed value is zero).
                if (_packedOwnerships[nextTokenId] == 0) {
                    // If the next slot is within bounds.
                    if (nextTokenId != _currentIndex) {
                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.
                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;
                    }
                }
            }
        }

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

    /**
     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual override {
        safeTransferFrom(from, to, tokenId, '');
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public payable virtual override {
        transferFrom(from, to, tokenId);
        if (to.code.length != 0)
            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {
                revert TransferToNonERC721ReceiverImplementer();
            }
    }

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

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

    function _checkContractOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (
            bytes4 retval
        ) {
            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) {
                revert TransferToNonERC721ReceiverImplementer();
            } else {
                assembly {
                    revert(add(32, reason), mload(reason))
                }
            }
        }
    }

    function _mint(address to, uint256 quantity) internal virtual {
        uint256 startTokenId = _currentIndex;
        if (quantity == 0) revert MintZeroQuantity();

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

        unchecked {

            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);

            _packedOwnerships[startTokenId] = _packOwnershipData(
                to,
                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)
            );

            uint256 toMasked;
            uint256 end = startTokenId + quantity;

            assembly {
                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.
                toMasked := and(to, _BITMASK_ADDRESS)
                // Emit the `Transfer` event.
                log4(
                    0, // Start of data (0, since no data).
                    0, // End of data (0, since no data).
                    _TRANSFER_EVENT_SIGNATURE, // Signature.
                    0, // `address(0)`.
                    toMasked, // `to`.
                    startTokenId // `tokenId`.
                )

                for {
                    let tokenId := add(startTokenId, 1)
                } iszero(eq(tokenId, end)) {
                    tokenId := add(tokenId, 1)
                } {
                    // Emit the `Transfer` event. Similar to above.
                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)
                }
            }
            if (toMasked == 0) revert MintToZeroAddress();

            _currentIndex = end;
        }
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _mintERC2309(address to, uint256 quantity) internal virtual {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity();
        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();

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

        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.
        unchecked {

            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);

            _packedOwnerships[startTokenId] = _packOwnershipData(
                to,
                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)
            );

            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);

            _currentIndex = startTokenId + quantity;
        }
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

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

        unchecked {
            if (to.code.length != 0) {
                uint256 end = _currentIndex;
                uint256 index = end - quantity;
                do {
                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {
                        revert TransferToNonERC721ReceiverImplementer();
                    }
                } while (index < end);
                // Reentrancy protection.
                if (_currentIndex != end) revert();
            }
        }
    }

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

    function _burn(uint256 tokenId) internal virtual {
        _burn(tokenId, false);
    }

    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {
        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);

        address from = address(uint160(prevOwnershipPacked));

        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);

        if (approvalCheck) {
            // The nested ifs save around 20+ gas over a compound boolean condition.
            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))
                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();
        }

        _beforeTokenTransfers(from, address(0), tokenId, 1);

        // Clear approvals from the previous owner.
        assembly {
            if approvedAddress {
                // This is equivalent to `delete _tokenApprovals[tokenId]`.
                sstore(approvedAddressSlot, 0)
            }
        }

        unchecked {

            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;

            _packedOwnerships[tokenId] = _packOwnershipData(
                from,
                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)
            );

            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .
            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {
                uint256 nextTokenId = tokenId + 1;
                // If the next slot's address is zero and not burned (i.e. packed value is zero).
                if (_packedOwnerships[nextTokenId] == 0) {
                    // If the next slot is within bounds.
                    if (nextTokenId != _currentIndex) {
                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.
                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;
                    }
                }
            }
        }

        emit Transfer(from, address(0), tokenId);
        _afterTokenTransfers(from, address(0), tokenId, 1);

        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.
        unchecked {
            _burnCounter++;
        }
    }

    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {
        uint256 packed = _packedOwnerships[index];
        if (packed == 0) revert OwnershipNotInitializedForExtraData();
        uint256 extraDataCasted;
        // Cast `extraData` with assembly to avoid redundant masking.
        assembly {
            extraDataCasted := extraData
        }
        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);
        _packedOwnerships[index] = packed;
    }

    function _extraData(
        address from,
        address to,
        uint24 previousExtraData
    ) internal view virtual returns (uint24) {}

    function _nextExtraData(
        address from,
        address to,
        uint256 prevOwnershipPacked
    ) private view returns (uint256) {
        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);
        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;
    }

    function _msgSenderERC721A() internal view virtual returns (address) {
        return msg.sender;
    }

    /**
     * @dev Converts a uint256 to its ASCII string decimal representation.
     */
    function _toString(uint256 value) internal pure virtual returns (string memory str) {
        assembly {
            let m := add(mload(0x40), 0xa0)
            // Update the free memory pointer to allocate.
            mstore(0x40, m)
            // Assign the `str` to the end.
            str := sub(m, 0x20)
            // Zeroize the slot after the string.
            mstore(str, 0)

            // Cache the end of the memory to calculate the length later.
            let end := str

            // We write the string from rightmost digit to leftmost digit.
            // The following is essentially a do-while loop that also handles the zero case.
            // prettier-ignore
            for { let temp := value } 1 {} {
                str := sub(str, 1)
                // Write the character to the pointer.
                // The ASCII index of the '0' character is 48.
                mstore8(str, add(48, mod(temp, 10)))
                // Keep dividing `temp` until zero.
                temp := div(temp, 10)
                // prettier-ignore
                if iszero(temp) { break }
            }

            let length := sub(end, str)
            // Move the pointer 32 bytes leftwards to make room for the length.
            str := sub(str, 0x20)
            // Store the length.
            mstore(str, length)
        }
    }
}

pragma solidity ^0.8.19;
contract LostSoulsPepe  is ERC721A, Ownable, ReentrancyGuard {
	using Strings for uint256;

	uint256 public maxSupply = 6969;
    uint256 public maxFreeSupply = 6969;
    uint256 public cost = 0.0005 ether;
    uint256 public notPayableAmount = 2;
    uint256 public maxPerWallet = 50;

    bool public isRevealed = false;
	bool public pause = false;

    string private baseURL = "";
    string public hiddenMetadataUrl = "";

    mapping(address => uint256) public userBalance;

	constructor(
        string memory _baseMetadataUrl
	)
	ERC721A("Lost Souls Pepe", "LSP") {
        setBaseUri(_baseMetadataUrl);
    }

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

    function setBaseUri(string memory _baseURL) public onlyOwner {
	    baseURL = _baseURL;
	}

    function mint(uint256 mintAmount) external payable {
		require(!pause, "Lost Souls Pepe sale is on pause");
        if(userBalance[msg.sender] >= notPayableAmount) require(msg.value >= cost * mintAmount, "Insufficient eth funds");
        else{
            if(totalSupply() + mintAmount <= maxFreeSupply){
                if(mintAmount > (notPayableAmount - userBalance[msg.sender])) require(msg.value >= cost * (mintAmount - (notPayableAmount - userBalance[msg.sender])), "Insufficient funds");
            }
            else require(msg.value >= cost * mintAmount, "Insufficient eth funds");
        }
        require(_totalMinted() + mintAmount <= maxSupply,"Exceeds max supply");
        require(userBalance[msg.sender] + mintAmount <= maxPerWallet, "Exceeds max Lost Soul Pepe per wallet");
        _safeMint(msg.sender, mintAmount);
        userBalance[msg.sender] = userBalance[msg.sender] + mintAmount;
	}

    function airdrop(address to, uint256 mintAmount) external onlyOwner {
		require(
			_totalMinted() + mintAmount <= maxSupply,
			"Exceeds max Lost Souls Pepe supply"
		);
		_safeMint(to, mintAmount);
        
	}

    function sethiddenMetadataUrl(string memory _hiddenMetadataUrl) public onlyOwner {
	    hiddenMetadataUrl = _hiddenMetadataUrl;
	}

    function reveal(bool _state) external onlyOwner {
	    isRevealed = _state;
	}

	function _startTokenId() internal view virtual override returns (uint256) {
    	return 1;
  	}

	function setMaxSupply(uint256 newMaxSupply) external onlyOwner {
		maxSupply = newMaxSupply;
	}

    function setMaxFreeSupply(uint256 newMaxFreeSupply) external onlyOwner {
		maxFreeSupply = newMaxFreeSupply;
	}

	function tokenURI(uint256 tokenId)
		public
		view
		override
		returns (string memory)
	{
        require(_exists(tokenId), "That Soul of Pepe doesn't exist");
        if(isRevealed == false) {
            return hiddenMetadataUrl;
        }
        else return bytes(_baseURI()).length > 0 
            ? string(abi.encodePacked(_baseURI(), tokenId.toString(), ".json"))
            : "";
	}

	function setCost(uint256 _newCost) public onlyOwner{
		cost = _newCost;
	}

	function setPause(bool _state) public onlyOwner{
		pause = _state;
	}

    function setNotPayableAmount(uint256 _newAmt) public onlyOwner{
        require(_newAmt < maxPerWallet, "Its Not possible");
        notPayableAmount = _newAmt;
    }

    function setMaxPerWallet(uint256 _newAmt) public  onlyOwner{
        require(_newAmt > notPayableAmount, "Its Not possible");
        maxPerWallet = _newAmt;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_baseMetadataUrl","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUrl","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFreeSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notPayableAmount","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":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"reveal","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":"payable","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":"payable","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":"_baseURL","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxFreeSupply","type":"uint256"}],"name":"setMaxFreeSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmt","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmt","type":"uint256"}],"name":"setNotPayableAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenMetadataUrl","type":"string"}],"name":"sethiddenMetadataUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052611b39600a55611b39600b556601c6bf52634000600c556002600d556032600e556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff02191690831515021790555060405180602001604052806000815250601090816200007b9190620005e9565b5060405180602001604052806000815250601190816200009c9190620005e9565b50348015620000aa57600080fd5b5060405162003fe738038062003fe78339818101604052810190620000d0919062000834565b6040518060400160405280600f81526020017f4c6f737420536f756c73205065706500000000000000000000000000000000008152506040518060400160405280600381526020017f4c5350000000000000000000000000000000000000000000000000000000000081525081600290816200014d9190620005e9565b5080600390816200015f9190620005e9565b5062000170620001b860201b60201c565b6000819055505050620001986200018c620001c160201b60201c565b620001c960201b60201c565b6001600981905550620001b1816200028f60201b60201c565b5062000908565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200029f620002b460201b60201c565b8060109081620002b09190620005e9565b5050565b620002c4620001c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002ea6200034560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000343576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033a90620008e6565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003f157607f821691505b602082108103620004075762000406620003a9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000432565b6200047d868362000432565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004ca620004c4620004be8462000495565b6200049f565b62000495565b9050919050565b6000819050919050565b620004e683620004a9565b620004fe620004f582620004d1565b8484546200043f565b825550505050565b600090565b6200051562000506565b62000522818484620004db565b505050565b5b818110156200054a576200053e6000826200050b565b60018101905062000528565b5050565b601f821115620005995762000563816200040d565b6200056e8462000422565b810160208510156200057e578190505b620005966200058d8562000422565b83018262000527565b50505b505050565b600082821c905092915050565b6000620005be600019846008026200059e565b1980831691505092915050565b6000620005d98383620005ab565b9150826002028217905092915050565b620005f4826200036f565b67ffffffffffffffff81111562000610576200060f6200037a565b5b6200061c8254620003d8565b620006298282856200054e565b600060209050601f8311600181146200066157600084156200064c578287015190505b620006588582620005cb565b865550620006c8565b601f19841662000671866200040d565b60005b828110156200069b5784890151825560018201915060208501945060208101905062000674565b86831015620006bb5784890151620006b7601f891682620005ab565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200070a82620006ee565b810181811067ffffffffffffffff821117156200072c576200072b6200037a565b5b80604052505050565b600062000741620006d0565b90506200074f8282620006ff565b919050565b600067ffffffffffffffff8211156200077257620007716200037a565b5b6200077d82620006ee565b9050602081019050919050565b60005b83811015620007aa5780820151818401526020810190506200078d565b60008484015250505050565b6000620007cd620007c78462000754565b62000735565b905082815260208101848484011115620007ec57620007eb620006e9565b5b620007f98482856200078a565b509392505050565b600082601f830112620008195762000818620006e4565b5b81516200082b848260208601620007b6565b91505092915050565b6000602082840312156200084d576200084c620006da565b5b600082015167ffffffffffffffff8111156200086e576200086d620006df565b5b6200087c8482850162000801565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620008ce60208362000885565b9150620008db8262000896565b602082019050919050565b600060208201905081810360008301526200090181620008bf565b9050919050565b6136cf80620009186000396000f3fe6080604052600436106102255760003560e01c806370a0823111610123578063a22cb465116100ab578063cb2b1c5e1161006f578063cb2b1c5e1461079c578063d5abeb01146107c5578063e268e4d3146107f0578063e985e9c514610819578063f2fde38b1461085657610225565b8063a22cb465146106c6578063abfc4efa146106ef578063b88d4fde1461071a578063bedb86fb14610736578063c87b56dd1461075f57610225565b80638da5cb5b116100f25780638da5cb5b14610602578063940cd05b1461062d57806395d89b4114610656578063a0712d6814610681578063a0bcfc7f1461069d57610225565b806370a082311461055a578063715018a6146105975780638456cb59146105ae5780638ba4cc3c146105d957610225565b80633ccfd60b116101b15780634751333411610175578063475133341461047557806354214f69146104a05780635b28fd91146104cb5780636352211e146104f45780636f8b44b01461053157610225565b80633ccfd60b146103c55780633d6d652a146103dc57806342842e0e1461040557806344a0d68a14610421578063453c23101461044a57610225565b8063095ea7b3116101f8578063095ea7b31461030c57806313faede6146103285780631638fef01461035357806318160ddd1461037e57806323b872dd146103a957610225565b80630103c92b1461022a57806301ffc9a71461026757806306fdde03146102a4578063081812fc146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906125ca565b61087f565b60405161025e9190612610565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190612683565b610897565b60405161029b91906126cb565b60405180910390f35b3480156102b057600080fd5b506102b9610929565b6040516102c69190612776565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906127c4565b6109bb565b6040516103039190612800565b60405180910390f35b6103266004803603810190610321919061281b565b610a3a565b005b34801561033457600080fd5b5061033d610b7e565b60405161034a9190612610565b60405180910390f35b34801561035f57600080fd5b50610368610b84565b6040516103759190612776565b60405180910390f35b34801561038a57600080fd5b50610393610c12565b6040516103a09190612610565b60405180910390f35b6103c360048036038101906103be919061285b565b610c29565b005b3480156103d157600080fd5b506103da610f4b565b005b3480156103e857600080fd5b5061040360048036038101906103fe91906127c4565b610fd3565b005b61041f600480360381019061041a919061285b565b611029565b005b34801561042d57600080fd5b50610448600480360381019061044391906127c4565b611049565b005b34801561045657600080fd5b5061045f61105b565b60405161046c9190612610565b60405180910390f35b34801561048157600080fd5b5061048a611061565b6040516104979190612610565b60405180910390f35b3480156104ac57600080fd5b506104b5611067565b6040516104c291906126cb565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906127c4565b61107a565b005b34801561050057600080fd5b5061051b600480360381019061051691906127c4565b61108c565b6040516105289190612800565b60405180910390f35b34801561053d57600080fd5b50610558600480360381019061055391906127c4565b61109e565b005b34801561056657600080fd5b50610581600480360381019061057c91906125ca565b6110b0565b60405161058e9190612610565b60405180910390f35b3480156105a357600080fd5b506105ac611168565b005b3480156105ba57600080fd5b506105c361117c565b6040516105d091906126cb565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb919061281b565b61118f565b005b34801561060e57600080fd5b506106176111fc565b6040516106249190612800565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906128da565b611226565b005b34801561066257600080fd5b5061066b61124b565b6040516106789190612776565b60405180910390f35b61069b600480360381019061069691906127c4565b6112dd565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190612a3c565b6116b9565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612a85565b6116d4565b005b3480156106fb57600080fd5b506107046117df565b6040516107119190612610565b60405180910390f35b610734600480360381019061072f9190612b66565b6117e5565b005b34801561074257600080fd5b5061075d600480360381019061075891906128da565b611858565b005b34801561076b57600080fd5b50610786600480360381019061078191906127c4565b61187d565b6040516107939190612776565b60405180910390f35b3480156107a857600080fd5b506107c360048036038101906107be9190612a3c565b6119d3565b005b3480156107d157600080fd5b506107da6119ee565b6040516107e79190612610565b60405180910390f35b3480156107fc57600080fd5b50610817600480360381019061081291906127c4565b6119f4565b005b34801561082557600080fd5b50610840600480360381019061083b9190612be9565b611a4a565b60405161084d91906126cb565b60405180910390f35b34801561086257600080fd5b5061087d600480360381019061087891906125ca565b611ade565b005b60126020528060005260406000206000915090505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108f257506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109225750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461093890612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461096490612c58565b80156109b15780601f10610986576101008083540402835291602001916109b1565b820191906000526020600020905b81548152906001019060200180831161099457829003601f168201915b5050505050905090565b60006109c682611b61565b6109fc576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a458261108c565b90508073ffffffffffffffffffffffffffffffffffffffff16610a66611bc0565b73ffffffffffffffffffffffffffffffffffffffff1614610ac957610a9281610a8d611bc0565b611a4a565b610ac8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600c5481565b60118054610b9190612c58565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612c58565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b6000610c1c611bc8565b6001546000540303905090565b6000610c3482611bd1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ca784611c9d565b91509150610cbd8187610cb8611bc0565b611cc4565b610d0957610cd286610ccd611bc0565b611a4a565b610d08576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d6f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d7c8686866001611d08565b8015610d8757600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610e5585610e31888887611d0e565b7c020000000000000000000000000000000000000000000000000000000017611d36565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610edb5760006001850190506000600460008381526020019081526020016000205403610ed9576000548114610ed8578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f438686866001611d61565b505050505050565b610f53611d67565b6000610f5d6111fc565b73ffffffffffffffffffffffffffffffffffffffff1647604051610f8090612cba565b60006040518083038185875af1925050503d8060008114610fbd576040519150601f19603f3d011682016040523d82523d6000602084013e610fc2565b606091505b5050905080610fd057600080fd5b50565b610fdb611d67565b600e54811061101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690612d1b565b60405180910390fd5b80600d8190555050565b611044838383604051806020016040528060008152506117e5565b505050565b611051611d67565b80600c8190555050565b600e5481565b600b5481565b600f60009054906101000a900460ff1681565b611082611d67565b80600b8190555050565b600061109782611bd1565b9050919050565b6110a6611d67565b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611117576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611170611d67565b61117a6000611de5565b565b600f60019054906101000a900460ff1681565b611197611d67565b600a54816111a3611eab565b6111ad9190612d6a565b11156111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590612e10565b60405180910390fd5b6111f88282611ebe565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61122e611d67565b80600f60006101000a81548160ff02191690831515021790555050565b60606003805461125a90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461128690612c58565b80156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b5050505050905090565b600f60019054906101000a900460ff161561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612e7c565b60405180910390fd5b600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106113ca5780600c546113839190612e9c565b3410156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90612f2a565b60405180910390fd5b611538565b600b54816113d6610c12565b6113e09190612d6a565b116114e657601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d546114329190612f4a565b8111156114e157601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d546114869190612f4a565b816114919190612f4a565b600c5461149e9190612e9c565b3410156114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612fca565b60405180910390fd5b5b611537565b80600c546114f49190612e9c565b341015611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90612f2a565b60405180910390fd5b5b5b600a5481611544611eab565b61154e9190612d6a565b111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613036565b60405180910390fd5b600e5481601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115dd9190612d6a565b111561161e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611615906130c8565b60405180910390fd5b6116283382611ebe565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116739190612d6a565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6116c1611d67565b80601090816116d09190613294565b5050565b80600760006116e1611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661178e611bc0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d391906126cb565b60405180910390a35050565b600d5481565b6117f0848484610c29565b60008373ffffffffffffffffffffffffffffffffffffffff163b146118525761181b84848484611edc565b611851576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611860611d67565b80600f60016101000a81548160ff02191690831515021790555050565b606061188882611b61565b6118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906133b2565b60405180910390fd5b60001515600f60009054906101000a900460ff1615150361197457601180546118ef90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461191b90612c58565b80156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b505050505090506119ce565b600061197e61202c565b511161199957604051806020016040528060008152506119cb565b6119a161202c565b6119aa836120be565b6040516020016119bb92919061345a565b6040516020818303038152906040525b90505b919050565b6119db611d67565b80601190816119ea9190613294565b5050565b600a5481565b6119fc611d67565b600d548111611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790612d1b565b60405180910390fd5b80600e8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ae6611d67565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906134fb565b60405180910390fd5b611b5e81611de5565b50565b600081611b6c611bc8565b11158015611b7b575060005482105b8015611bb9575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b60008082905080611be0611bc8565b11611c6657600054811015611c655760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611c63575b60008103611c59576004600083600190039350838152602001908152602001600020549050611c2f565b8092505050611c98565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611d2586868461218c565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b611d6f612195565b73ffffffffffffffffffffffffffffffffffffffff16611d8d6111fc565b73ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613567565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611eb5611bc8565b60005403905090565b611ed882826040518060200160405280600081525061219d565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f02611bc0565b8786866040518563ffffffff1660e01b8152600401611f2494939291906135dc565b6020604051808303816000875af1925050508015611f6057506040513d601f19601f82011682018060405250810190611f5d919061363d565b60015b611fd9573d8060008114611f90576040519150601f19603f3d011682016040523d82523d6000602084013e611f95565b606091505b506000815103611fd1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606010805461203b90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461206790612c58565b80156120b45780601f10612089576101008083540402835291602001916120b4565b820191906000526020600020905b81548152906001019060200180831161209757829003601f168201915b5050505050905090565b6060600060016120cd8461223a565b01905060008167ffffffffffffffff8111156120ec576120eb612911565b5b6040519080825280601f01601f19166020018201604052801561211e5781602001600182028036833780820191505090505b509050600082602001820190505b600115612181578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816121755761217461366a565b5b0494506000850361212c575b819350505050919050565b60009392505050565b600033905090565b6121a7838361238d565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461223557600080549050600083820390505b6121e76000868380600101945086611edc565b61221d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106121d457816000541461223257600080fd5b50505b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612298577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161228e5761228d61366a565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106122d5576d04ee2d6d415b85acef810000000083816122cb576122ca61366a565b5b0492506020810190505b662386f26fc10000831061230457662386f26fc1000083816122fa576122f961366a565b5b0492506010810190505b6305f5e100831061232d576305f5e10083816123235761232261366a565b5b0492506008810190505b61271083106123525761271083816123485761234761366a565b5b0492506004810190505b60648310612375576064838161236b5761236a61366a565b5b0492506002810190505b600a8310612384576001810190505b80915050919050565b600080549050600082036123cd576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123da6000848385611d08565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612451836124426000866000611d0e565b61244b85612548565b17611d36565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146124f257808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506124b7565b506000820361252d576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506125436000848385611d61565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125978261256c565b9050919050565b6125a78161258c565b81146125b257600080fd5b50565b6000813590506125c48161259e565b92915050565b6000602082840312156125e0576125df612562565b5b60006125ee848285016125b5565b91505092915050565b6000819050919050565b61260a816125f7565b82525050565b60006020820190506126256000830184612601565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126608161262b565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b60006020828403121561269957612698612562565b5b60006126a78482850161266e565b91505092915050565b60008115159050919050565b6126c5816126b0565b82525050565b60006020820190506126e060008301846126bc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612720578082015181840152602081019050612705565b60008484015250505050565b6000601f19601f8301169050919050565b6000612748826126e6565b61275281856126f1565b9350612762818560208601612702565b61276b8161272c565b840191505092915050565b60006020820190508181036000830152612790818461273d565b905092915050565b6127a1816125f7565b81146127ac57600080fd5b50565b6000813590506127be81612798565b92915050565b6000602082840312156127da576127d9612562565b5b60006127e8848285016127af565b91505092915050565b6127fa8161258c565b82525050565b600060208201905061281560008301846127f1565b92915050565b6000806040838503121561283257612831612562565b5b6000612840858286016125b5565b9250506020612851858286016127af565b9150509250929050565b60008060006060848603121561287457612873612562565b5b6000612882868287016125b5565b9350506020612893868287016125b5565b92505060406128a4868287016127af565b9150509250925092565b6128b7816126b0565b81146128c257600080fd5b50565b6000813590506128d4816128ae565b92915050565b6000602082840312156128f0576128ef612562565b5b60006128fe848285016128c5565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129498261272c565b810181811067ffffffffffffffff8211171561296857612967612911565b5b80604052505050565b600061297b612558565b90506129878282612940565b919050565b600067ffffffffffffffff8211156129a7576129a6612911565b5b6129b08261272c565b9050602081019050919050565b82818337600083830152505050565b60006129df6129da8461298c565b612971565b9050828152602081018484840111156129fb576129fa61290c565b5b612a068482856129bd565b509392505050565b600082601f830112612a2357612a22612907565b5b8135612a338482602086016129cc565b91505092915050565b600060208284031215612a5257612a51612562565b5b600082013567ffffffffffffffff811115612a7057612a6f612567565b5b612a7c84828501612a0e565b91505092915050565b60008060408385031215612a9c57612a9b612562565b5b6000612aaa858286016125b5565b9250506020612abb858286016128c5565b9150509250929050565b600067ffffffffffffffff821115612ae057612adf612911565b5b612ae98261272c565b9050602081019050919050565b6000612b09612b0484612ac5565b612971565b905082815260208101848484011115612b2557612b2461290c565b5b612b308482856129bd565b509392505050565b600082601f830112612b4d57612b4c612907565b5b8135612b5d848260208601612af6565b91505092915050565b60008060008060808587031215612b8057612b7f612562565b5b6000612b8e878288016125b5565b9450506020612b9f878288016125b5565b9350506040612bb0878288016127af565b925050606085013567ffffffffffffffff811115612bd157612bd0612567565b5b612bdd87828801612b38565b91505092959194509250565b60008060408385031215612c0057612bff612562565b5b6000612c0e858286016125b5565b9250506020612c1f858286016125b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c7057607f821691505b602082108103612c8357612c82612c29565b5b50919050565b600081905092915050565b50565b6000612ca4600083612c89565b9150612caf82612c94565b600082019050919050565b6000612cc582612c97565b9150819050919050565b7f497473204e6f7420706f737369626c6500000000000000000000000000000000600082015250565b6000612d056010836126f1565b9150612d1082612ccf565b602082019050919050565b60006020820190508181036000830152612d3481612cf8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d75826125f7565b9150612d80836125f7565b9250828201905080821115612d9857612d97612d3b565b5b92915050565b7f45786365656473206d6178204c6f737420536f756c732050657065207375707060008201527f6c79000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dfa6022836126f1565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f4c6f737420536f756c7320506570652073616c65206973206f6e207061757365600082015250565b6000612e666020836126f1565b9150612e7182612e30565b602082019050919050565b60006020820190508181036000830152612e9581612e59565b9050919050565b6000612ea7826125f7565b9150612eb2836125f7565b9250828202612ec0816125f7565b91508282048414831517612ed757612ed6612d3b565b5b5092915050565b7f496e73756666696369656e74206574682066756e647300000000000000000000600082015250565b6000612f146016836126f1565b9150612f1f82612ede565b602082019050919050565b60006020820190508181036000830152612f4381612f07565b9050919050565b6000612f55826125f7565b9150612f60836125f7565b9250828203905081811115612f7857612f77612d3b565b5b92915050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b6000612fb46012836126f1565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006130206012836126f1565b915061302b82612fea565b602082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f45786365656473206d6178204c6f737420536f756c205065706520706572207760008201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b60006130b26025836126f1565b91506130bd82613056565b604082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261314a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261310d565b613154868361310d565b95508019841693508086168417925050509392505050565b6000819050919050565b600061319161318c613187846125f7565b61316c565b6125f7565b9050919050565b6000819050919050565b6131ab83613176565b6131bf6131b782613198565b84845461311a565b825550505050565b600090565b6131d46131c7565b6131df8184846131a2565b505050565b5b81811015613203576131f86000826131cc565b6001810190506131e5565b5050565b601f82111561324857613219816130e8565b613222846130fd565b81016020851015613231578190505b61324561323d856130fd565b8301826131e4565b50505b505050565b600082821c905092915050565b600061326b6000198460080261324d565b1980831691505092915050565b6000613284838361325a565b9150826002028217905092915050565b61329d826126e6565b67ffffffffffffffff8111156132b6576132b5612911565b5b6132c08254612c58565b6132cb828285613207565b600060209050601f8311600181146132fe57600084156132ec578287015190505b6132f68582613278565b86555061335e565b601f19841661330c866130e8565b60005b828110156133345784890151825560018201915060208501945060208101905061330f565b86831015613351578489015161334d601f89168261325a565b8355505b6001600288020188555050505b505050505050565b7f5468617420536f756c206f66205065706520646f65736e277420657869737400600082015250565b600061339c601f836126f1565b91506133a782613366565b602082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b600081905092915050565b60006133e8826126e6565b6133f281856133d2565b9350613402818560208601612702565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006134446005836133d2565b915061344f8261340e565b600582019050919050565b600061346682856133dd565b915061347282846133dd565b915061347d82613437565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134e56026836126f1565b91506134f082613489565b604082019050919050565b60006020820190508181036000830152613514816134d8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135516020836126f1565b915061355c8261351b565b602082019050919050565b6000602082019050818103600083015261358081613544565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135ae82613587565b6135b88185613592565b93506135c8818560208601612702565b6135d18161272c565b840191505092915050565b60006080820190506135f160008301876127f1565b6135fe60208301866127f1565b61360b6040830185612601565b818103606083015261361d81846135a3565b905095945050505050565b60008151905061363781612657565b92915050565b60006020828403121561365357613652612562565b5b600061366184828501613628565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220d64f96389f3bf8d763b8b341115f8ab7caeafe34454d58189f723b604f99b06f64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b72656963356a71716a776179776c66647a7a36667432693435656f7876746276733361706b74326272646a6d64746b6f65653733736879000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102255760003560e01c806370a0823111610123578063a22cb465116100ab578063cb2b1c5e1161006f578063cb2b1c5e1461079c578063d5abeb01146107c5578063e268e4d3146107f0578063e985e9c514610819578063f2fde38b1461085657610225565b8063a22cb465146106c6578063abfc4efa146106ef578063b88d4fde1461071a578063bedb86fb14610736578063c87b56dd1461075f57610225565b80638da5cb5b116100f25780638da5cb5b14610602578063940cd05b1461062d57806395d89b4114610656578063a0712d6814610681578063a0bcfc7f1461069d57610225565b806370a082311461055a578063715018a6146105975780638456cb59146105ae5780638ba4cc3c146105d957610225565b80633ccfd60b116101b15780634751333411610175578063475133341461047557806354214f69146104a05780635b28fd91146104cb5780636352211e146104f45780636f8b44b01461053157610225565b80633ccfd60b146103c55780633d6d652a146103dc57806342842e0e1461040557806344a0d68a14610421578063453c23101461044a57610225565b8063095ea7b3116101f8578063095ea7b31461030c57806313faede6146103285780631638fef01461035357806318160ddd1461037e57806323b872dd146103a957610225565b80630103c92b1461022a57806301ffc9a71461026757806306fdde03146102a4578063081812fc146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906125ca565b61087f565b60405161025e9190612610565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190612683565b610897565b60405161029b91906126cb565b60405180910390f35b3480156102b057600080fd5b506102b9610929565b6040516102c69190612776565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906127c4565b6109bb565b6040516103039190612800565b60405180910390f35b6103266004803603810190610321919061281b565b610a3a565b005b34801561033457600080fd5b5061033d610b7e565b60405161034a9190612610565b60405180910390f35b34801561035f57600080fd5b50610368610b84565b6040516103759190612776565b60405180910390f35b34801561038a57600080fd5b50610393610c12565b6040516103a09190612610565b60405180910390f35b6103c360048036038101906103be919061285b565b610c29565b005b3480156103d157600080fd5b506103da610f4b565b005b3480156103e857600080fd5b5061040360048036038101906103fe91906127c4565b610fd3565b005b61041f600480360381019061041a919061285b565b611029565b005b34801561042d57600080fd5b50610448600480360381019061044391906127c4565b611049565b005b34801561045657600080fd5b5061045f61105b565b60405161046c9190612610565b60405180910390f35b34801561048157600080fd5b5061048a611061565b6040516104979190612610565b60405180910390f35b3480156104ac57600080fd5b506104b5611067565b6040516104c291906126cb565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906127c4565b61107a565b005b34801561050057600080fd5b5061051b600480360381019061051691906127c4565b61108c565b6040516105289190612800565b60405180910390f35b34801561053d57600080fd5b50610558600480360381019061055391906127c4565b61109e565b005b34801561056657600080fd5b50610581600480360381019061057c91906125ca565b6110b0565b60405161058e9190612610565b60405180910390f35b3480156105a357600080fd5b506105ac611168565b005b3480156105ba57600080fd5b506105c361117c565b6040516105d091906126cb565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb919061281b565b61118f565b005b34801561060e57600080fd5b506106176111fc565b6040516106249190612800565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906128da565b611226565b005b34801561066257600080fd5b5061066b61124b565b6040516106789190612776565b60405180910390f35b61069b600480360381019061069691906127c4565b6112dd565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190612a3c565b6116b9565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612a85565b6116d4565b005b3480156106fb57600080fd5b506107046117df565b6040516107119190612610565b60405180910390f35b610734600480360381019061072f9190612b66565b6117e5565b005b34801561074257600080fd5b5061075d600480360381019061075891906128da565b611858565b005b34801561076b57600080fd5b50610786600480360381019061078191906127c4565b61187d565b6040516107939190612776565b60405180910390f35b3480156107a857600080fd5b506107c360048036038101906107be9190612a3c565b6119d3565b005b3480156107d157600080fd5b506107da6119ee565b6040516107e79190612610565b60405180910390f35b3480156107fc57600080fd5b50610817600480360381019061081291906127c4565b6119f4565b005b34801561082557600080fd5b50610840600480360381019061083b9190612be9565b611a4a565b60405161084d91906126cb565b60405180910390f35b34801561086257600080fd5b5061087d600480360381019061087891906125ca565b611ade565b005b60126020528060005260406000206000915090505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108f257506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109225750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461093890612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461096490612c58565b80156109b15780601f10610986576101008083540402835291602001916109b1565b820191906000526020600020905b81548152906001019060200180831161099457829003601f168201915b5050505050905090565b60006109c682611b61565b6109fc576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a458261108c565b90508073ffffffffffffffffffffffffffffffffffffffff16610a66611bc0565b73ffffffffffffffffffffffffffffffffffffffff1614610ac957610a9281610a8d611bc0565b611a4a565b610ac8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600c5481565b60118054610b9190612c58565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612c58565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b6000610c1c611bc8565b6001546000540303905090565b6000610c3482611bd1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ca784611c9d565b91509150610cbd8187610cb8611bc0565b611cc4565b610d0957610cd286610ccd611bc0565b611a4a565b610d08576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d6f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d7c8686866001611d08565b8015610d8757600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610e5585610e31888887611d0e565b7c020000000000000000000000000000000000000000000000000000000017611d36565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610edb5760006001850190506000600460008381526020019081526020016000205403610ed9576000548114610ed8578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f438686866001611d61565b505050505050565b610f53611d67565b6000610f5d6111fc565b73ffffffffffffffffffffffffffffffffffffffff1647604051610f8090612cba565b60006040518083038185875af1925050503d8060008114610fbd576040519150601f19603f3d011682016040523d82523d6000602084013e610fc2565b606091505b5050905080610fd057600080fd5b50565b610fdb611d67565b600e54811061101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690612d1b565b60405180910390fd5b80600d8190555050565b611044838383604051806020016040528060008152506117e5565b505050565b611051611d67565b80600c8190555050565b600e5481565b600b5481565b600f60009054906101000a900460ff1681565b611082611d67565b80600b8190555050565b600061109782611bd1565b9050919050565b6110a6611d67565b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611117576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611170611d67565b61117a6000611de5565b565b600f60019054906101000a900460ff1681565b611197611d67565b600a54816111a3611eab565b6111ad9190612d6a565b11156111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590612e10565b60405180910390fd5b6111f88282611ebe565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61122e611d67565b80600f60006101000a81548160ff02191690831515021790555050565b60606003805461125a90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461128690612c58565b80156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b5050505050905090565b600f60019054906101000a900460ff161561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612e7c565b60405180910390fd5b600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106113ca5780600c546113839190612e9c565b3410156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90612f2a565b60405180910390fd5b611538565b600b54816113d6610c12565b6113e09190612d6a565b116114e657601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d546114329190612f4a565b8111156114e157601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d546114869190612f4a565b816114919190612f4a565b600c5461149e9190612e9c565b3410156114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612fca565b60405180910390fd5b5b611537565b80600c546114f49190612e9c565b341015611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90612f2a565b60405180910390fd5b5b5b600a5481611544611eab565b61154e9190612d6a565b111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613036565b60405180910390fd5b600e5481601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115dd9190612d6a565b111561161e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611615906130c8565b60405180910390fd5b6116283382611ebe565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116739190612d6a565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6116c1611d67565b80601090816116d09190613294565b5050565b80600760006116e1611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661178e611bc0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d391906126cb565b60405180910390a35050565b600d5481565b6117f0848484610c29565b60008373ffffffffffffffffffffffffffffffffffffffff163b146118525761181b84848484611edc565b611851576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611860611d67565b80600f60016101000a81548160ff02191690831515021790555050565b606061188882611b61565b6118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906133b2565b60405180910390fd5b60001515600f60009054906101000a900460ff1615150361197457601180546118ef90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461191b90612c58565b80156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b505050505090506119ce565b600061197e61202c565b511161199957604051806020016040528060008152506119cb565b6119a161202c565b6119aa836120be565b6040516020016119bb92919061345a565b6040516020818303038152906040525b90505b919050565b6119db611d67565b80601190816119ea9190613294565b5050565b600a5481565b6119fc611d67565b600d548111611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790612d1b565b60405180910390fd5b80600e8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ae6611d67565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906134fb565b60405180910390fd5b611b5e81611de5565b50565b600081611b6c611bc8565b11158015611b7b575060005482105b8015611bb9575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b60008082905080611be0611bc8565b11611c6657600054811015611c655760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611c63575b60008103611c59576004600083600190039350838152602001908152602001600020549050611c2f565b8092505050611c98565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611d2586868461218c565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b611d6f612195565b73ffffffffffffffffffffffffffffffffffffffff16611d8d6111fc565b73ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613567565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611eb5611bc8565b60005403905090565b611ed882826040518060200160405280600081525061219d565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f02611bc0565b8786866040518563ffffffff1660e01b8152600401611f2494939291906135dc565b6020604051808303816000875af1925050508015611f6057506040513d601f19601f82011682018060405250810190611f5d919061363d565b60015b611fd9573d8060008114611f90576040519150601f19603f3d011682016040523d82523d6000602084013e611f95565b606091505b506000815103611fd1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606010805461203b90612c58565b80601f016020809104026020016040519081016040528092919081815260200182805461206790612c58565b80156120b45780601f10612089576101008083540402835291602001916120b4565b820191906000526020600020905b81548152906001019060200180831161209757829003601f168201915b5050505050905090565b6060600060016120cd8461223a565b01905060008167ffffffffffffffff8111156120ec576120eb612911565b5b6040519080825280601f01601f19166020018201604052801561211e5781602001600182028036833780820191505090505b509050600082602001820190505b600115612181578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816121755761217461366a565b5b0494506000850361212c575b819350505050919050565b60009392505050565b600033905090565b6121a7838361238d565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461223557600080549050600083820390505b6121e76000868380600101945086611edc565b61221d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106121d457816000541461223257600080fd5b50505b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612298577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161228e5761228d61366a565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106122d5576d04ee2d6d415b85acef810000000083816122cb576122ca61366a565b5b0492506020810190505b662386f26fc10000831061230457662386f26fc1000083816122fa576122f961366a565b5b0492506010810190505b6305f5e100831061232d576305f5e10083816123235761232261366a565b5b0492506008810190505b61271083106123525761271083816123485761234761366a565b5b0492506004810190505b60648310612375576064838161236b5761236a61366a565b5b0492506002810190505b600a8310612384576001810190505b80915050919050565b600080549050600082036123cd576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123da6000848385611d08565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612451836124426000866000611d0e565b61244b85612548565b17611d36565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146124f257808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506124b7565b506000820361252d576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506125436000848385611d61565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125978261256c565b9050919050565b6125a78161258c565b81146125b257600080fd5b50565b6000813590506125c48161259e565b92915050565b6000602082840312156125e0576125df612562565b5b60006125ee848285016125b5565b91505092915050565b6000819050919050565b61260a816125f7565b82525050565b60006020820190506126256000830184612601565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126608161262b565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b60006020828403121561269957612698612562565b5b60006126a78482850161266e565b91505092915050565b60008115159050919050565b6126c5816126b0565b82525050565b60006020820190506126e060008301846126bc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612720578082015181840152602081019050612705565b60008484015250505050565b6000601f19601f8301169050919050565b6000612748826126e6565b61275281856126f1565b9350612762818560208601612702565b61276b8161272c565b840191505092915050565b60006020820190508181036000830152612790818461273d565b905092915050565b6127a1816125f7565b81146127ac57600080fd5b50565b6000813590506127be81612798565b92915050565b6000602082840312156127da576127d9612562565b5b60006127e8848285016127af565b91505092915050565b6127fa8161258c565b82525050565b600060208201905061281560008301846127f1565b92915050565b6000806040838503121561283257612831612562565b5b6000612840858286016125b5565b9250506020612851858286016127af565b9150509250929050565b60008060006060848603121561287457612873612562565b5b6000612882868287016125b5565b9350506020612893868287016125b5565b92505060406128a4868287016127af565b9150509250925092565b6128b7816126b0565b81146128c257600080fd5b50565b6000813590506128d4816128ae565b92915050565b6000602082840312156128f0576128ef612562565b5b60006128fe848285016128c5565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129498261272c565b810181811067ffffffffffffffff8211171561296857612967612911565b5b80604052505050565b600061297b612558565b90506129878282612940565b919050565b600067ffffffffffffffff8211156129a7576129a6612911565b5b6129b08261272c565b9050602081019050919050565b82818337600083830152505050565b60006129df6129da8461298c565b612971565b9050828152602081018484840111156129fb576129fa61290c565b5b612a068482856129bd565b509392505050565b600082601f830112612a2357612a22612907565b5b8135612a338482602086016129cc565b91505092915050565b600060208284031215612a5257612a51612562565b5b600082013567ffffffffffffffff811115612a7057612a6f612567565b5b612a7c84828501612a0e565b91505092915050565b60008060408385031215612a9c57612a9b612562565b5b6000612aaa858286016125b5565b9250506020612abb858286016128c5565b9150509250929050565b600067ffffffffffffffff821115612ae057612adf612911565b5b612ae98261272c565b9050602081019050919050565b6000612b09612b0484612ac5565b612971565b905082815260208101848484011115612b2557612b2461290c565b5b612b308482856129bd565b509392505050565b600082601f830112612b4d57612b4c612907565b5b8135612b5d848260208601612af6565b91505092915050565b60008060008060808587031215612b8057612b7f612562565b5b6000612b8e878288016125b5565b9450506020612b9f878288016125b5565b9350506040612bb0878288016127af565b925050606085013567ffffffffffffffff811115612bd157612bd0612567565b5b612bdd87828801612b38565b91505092959194509250565b60008060408385031215612c0057612bff612562565b5b6000612c0e858286016125b5565b9250506020612c1f858286016125b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c7057607f821691505b602082108103612c8357612c82612c29565b5b50919050565b600081905092915050565b50565b6000612ca4600083612c89565b9150612caf82612c94565b600082019050919050565b6000612cc582612c97565b9150819050919050565b7f497473204e6f7420706f737369626c6500000000000000000000000000000000600082015250565b6000612d056010836126f1565b9150612d1082612ccf565b602082019050919050565b60006020820190508181036000830152612d3481612cf8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d75826125f7565b9150612d80836125f7565b9250828201905080821115612d9857612d97612d3b565b5b92915050565b7f45786365656473206d6178204c6f737420536f756c732050657065207375707060008201527f6c79000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dfa6022836126f1565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f4c6f737420536f756c7320506570652073616c65206973206f6e207061757365600082015250565b6000612e666020836126f1565b9150612e7182612e30565b602082019050919050565b60006020820190508181036000830152612e9581612e59565b9050919050565b6000612ea7826125f7565b9150612eb2836125f7565b9250828202612ec0816125f7565b91508282048414831517612ed757612ed6612d3b565b5b5092915050565b7f496e73756666696369656e74206574682066756e647300000000000000000000600082015250565b6000612f146016836126f1565b9150612f1f82612ede565b602082019050919050565b60006020820190508181036000830152612f4381612f07565b9050919050565b6000612f55826125f7565b9150612f60836125f7565b9250828203905081811115612f7857612f77612d3b565b5b92915050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b6000612fb46012836126f1565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006130206012836126f1565b915061302b82612fea565b602082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f45786365656473206d6178204c6f737420536f756c205065706520706572207760008201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b60006130b26025836126f1565b91506130bd82613056565b604082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261314a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261310d565b613154868361310d565b95508019841693508086168417925050509392505050565b6000819050919050565b600061319161318c613187846125f7565b61316c565b6125f7565b9050919050565b6000819050919050565b6131ab83613176565b6131bf6131b782613198565b84845461311a565b825550505050565b600090565b6131d46131c7565b6131df8184846131a2565b505050565b5b81811015613203576131f86000826131cc565b6001810190506131e5565b5050565b601f82111561324857613219816130e8565b613222846130fd565b81016020851015613231578190505b61324561323d856130fd565b8301826131e4565b50505b505050565b600082821c905092915050565b600061326b6000198460080261324d565b1980831691505092915050565b6000613284838361325a565b9150826002028217905092915050565b61329d826126e6565b67ffffffffffffffff8111156132b6576132b5612911565b5b6132c08254612c58565b6132cb828285613207565b600060209050601f8311600181146132fe57600084156132ec578287015190505b6132f68582613278565b86555061335e565b601f19841661330c866130e8565b60005b828110156133345784890151825560018201915060208501945060208101905061330f565b86831015613351578489015161334d601f89168261325a565b8355505b6001600288020188555050505b505050505050565b7f5468617420536f756c206f66205065706520646f65736e277420657869737400600082015250565b600061339c601f836126f1565b91506133a782613366565b602082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b600081905092915050565b60006133e8826126e6565b6133f281856133d2565b9350613402818560208601612702565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006134446005836133d2565b915061344f8261340e565b600582019050919050565b600061346682856133dd565b915061347282846133dd565b915061347d82613437565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134e56026836126f1565b91506134f082613489565b604082019050919050565b60006020820190508181036000830152613514816134d8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135516020836126f1565b915061355c8261351b565b602082019050919050565b6000602082019050818103600083015261358081613544565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135ae82613587565b6135b88185613592565b93506135c8818560208601612702565b6135d18161272c565b840191505092915050565b60006080820190506135f160008301876127f1565b6135fe60208301866127f1565b61360b6040830185612601565b818103606083015261361d81846135a3565b905095945050505050565b60008151905061363781612657565b92915050565b60006020828403121561365357613652612562565b5b600061366184828501613628565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220d64f96389f3bf8d763b8b341115f8ab7caeafe34454d58189f723b604f99b06f64736f6c63430008130033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b72656963356a71716a776179776c66647a7a36667432693435656f7876746276733361706b74326272646a6d64746b6f65653733736879000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _baseMetadataUrl (string): ipfs://bafkreic5jqqjwaywlfdzz6ft2i45eoxvtbvs3apkt2brdjmdtkoee73shy

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000042
Arg [2] : 697066733a2f2f6261666b72656963356a71716a776179776c66647a7a366674
Arg [3] : 32693435656f7876746276733361706b74326272646a6d64746b6f6565373373
Arg [4] : 6879000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

41644:3649:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42091:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22388:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22750:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26528:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26112:408;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41820:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42046:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20473:323;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28824:2337;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45116:174;;;;;;;;;;;;;:::i;:::-;;44768:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31257:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44608:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41903:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41778:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41944:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44079:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23398:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43974:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21218:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4141:103;;;;;;;;;;;;;:::i;:::-;;41978:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43421:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3906:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43787:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22858:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42487:926;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42387:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26754:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41861:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31458:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44689:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44197:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43647:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41740:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44945:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26996:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4252:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42091:46;;;;;;;;;;;;;;;;;:::o;22388:354::-;22473:4;22527:10;22512:25;;:11;:25;;;;:102;;;;22604:10;22589:25;;:11;:25;;;;22512:102;:179;;;;22681:10;22666:25;;:11;:25;;;;22512:179;22492:199;;22388:354;;;:::o;22750:100::-;22804:13;22837:5;22830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22750:100;:::o;26528:218::-;26604:7;26629:16;26637:7;26629;:16::i;:::-;26624:64;;26654:34;;;;;;;;;;;;;;26624:64;26708:15;:24;26724:7;26708:24;;;;;;;;;;;:30;;;;;;;;;;;;26701:37;;26528:218;;;:::o;26112:408::-;26201:13;26217:16;26225:7;26217;:16::i;:::-;26201:32;;26273:5;26250:28;;:19;:17;:19::i;:::-;:28;;;26246:175;;26298:44;26315:5;26322:19;:17;:19::i;:::-;26298:16;:44::i;:::-;26293:128;;26370:35;;;;;;;;;;;;;;26293:128;26246:175;26466:2;26433:15;:24;26449:7;26433:24;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;26504:7;26500:2;26484:28;;26493:5;26484:28;;;;;;;;;;;;26190:330;26112:408;;:::o;41820:34::-;;;;:::o;42046:36::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20473:323::-;20534:7;20762:15;:13;:15::i;:::-;20747:12;;20731:13;;:28;:46;20724:53;;20473:323;:::o;28824:2337::-;28966:27;28996;29015:7;28996:18;:27::i;:::-;28966:57;;29081:4;29040:45;;29056:19;29040:45;;;29036:86;;29094:28;;;;;;;;;;;;;;29036:86;29136:27;29165:23;29192:35;29219:7;29192:26;:35::i;:::-;29135:92;;;;29327:68;29352:15;29369:4;29375:19;:17;:19::i;:::-;29327:24;:68::i;:::-;29322:180;;29415:43;29432:4;29438:19;:17;:19::i;:::-;29415:16;:43::i;:::-;29410:92;;29467:35;;;;;;;;;;;;;;29410:92;29322:180;29533:1;29519:16;;:2;:16;;;29515:52;;29544:23;;;;;;;;;;;;;;29515:52;29580:43;29602:4;29608:2;29612:7;29621:1;29580:21;:43::i;:::-;29716:15;29713:160;;;29856:1;29835:19;29828:30;29713:160;29993:18;:24;30012:4;29993:24;;;;;;;;;;;;;;;;29991:26;;;;;;;;;;;;30062:18;:22;30081:2;30062:22;;;;;;;;;;;;;;;;30060:24;;;;;;;;;;;30156:146;30193:2;30242:45;30257:4;30263:2;30267:19;30242:14;:45::i;:::-;18866:8;30214:73;30156:18;:146::i;:::-;30127:17;:26;30145:7;30127:26;;;;;;;;;;;:175;;;;30473:1;18866:8;30422:19;:47;:52;30418:627;;30495:19;30527:1;30517:7;:11;30495:33;;30684:1;30650:17;:30;30668:11;30650:30;;;;;;;;;;;;:35;30646:384;;30788:13;;30773:11;:28;30769:242;;30968:19;30935:17;:30;30953:11;30935:30;;;;;;;;;;;:52;;;;30769:242;30646:384;30476:569;30418:627;31092:7;31088:2;31073:27;;31082:4;31073:27;;;;;;;;;;;;31111:42;31132:4;31138:2;31142:7;31151:1;31111:20;:42::i;:::-;28955:2206;;;28824:2337;;;:::o;45116:174::-;3865:13;:11;:13::i;:::-;45161:12:::1;45187:7;:5;:7::i;:::-;45179:21;;45222;45179:79;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45160:98;;;45277:7;45269:16;;;::::0;::::1;;45155:135;45116:174::o:0;44768:169::-;3865:13;:11;:13::i;:::-;44859:12:::1;;44849:7;:22;44841:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;44922:7;44903:16;:26;;;;44768:169:::0;:::o;31257:193::-;31403:39;31420:4;31426:2;31430:7;31403:39;;;;;;;;;;;;:16;:39::i;:::-;31257:193;;;:::o;44608:76::-;3865:13;:11;:13::i;:::-;44671:8:::1;44664:4;:15;;;;44608:76:::0;:::o;41903:32::-;;;;:::o;41778:35::-;;;;:::o;41944:30::-;;;;;;;;;;;;;:::o;44079:113::-;3865:13;:11;:13::i;:::-;44171:16:::1;44155:13;:32;;;;44079:113:::0;:::o;23398:152::-;23470:7;23513:27;23532:7;23513:18;:27::i;:::-;23490:52;;23398:152;;;:::o;43974:97::-;3865:13;:11;:13::i;:::-;44054:12:::1;44042:9;:24;;;;43974:97:::0;:::o;21218:233::-;21290:7;21331:1;21314:19;;:5;:19;;;21310:60;;21342:28;;;;;;;;;;;;;;21310:60;17810:13;21388:18;:25;21407:5;21388:25;;;;;;;;;;;;;;;;:55;21381:62;;21218:233;;;:::o;4141:103::-;3865:13;:11;:13::i;:::-;4206:30:::1;4233:1;4206:18;:30::i;:::-;4141:103::o:0;41978:25::-;;;;;;;;;;;;;:::o;43421:218::-;3865:13;:11;:13::i;:::-;43538:9:::1;;43524:10;43507:14;:12;:14::i;:::-;:27;;;;:::i;:::-;:40;;43494:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;43599:25;43609:2;43613:10;43599:9;:25::i;:::-;43421:218:::0;;:::o;3906:87::-;3952:7;3979:6;;;;;;;;;;;3972:13;;3906:87;:::o;43787:80::-;3865:13;:11;:13::i;:::-;43856:6:::1;43843:10;;:19;;;;;;;;;;;;;;;;;;43787:80:::0;:::o;22858:104::-;22914:13;22947:7;22940:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22858:104;:::o;42487:926::-;42552:5;;;;;;;;;;;42551:6;42543:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;42635:16;;42608:11;:23;42620:10;42608:23;;;;;;;;;;;;;;;;:43;42605:493;;42681:10;42674:4;;:17;;;;:::i;:::-;42661:9;:30;;42653:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;42605:493;;;42781:13;;42767:10;42751:13;:11;:13::i;:::-;:26;;;;:::i;:::-;:43;42748:338;;42850:11;:23;42862:10;42850:23;;;;;;;;;;;;;;;;42831:16;;:42;;;;:::i;:::-;42817:10;:57;42814:172;;;42938:11;:23;42950:10;42938:23;;;;;;;;;;;;;;;;42919:16;;:42;;;;:::i;:::-;42905:10;:57;;;;:::i;:::-;42897:4;;:66;;;;:::i;:::-;42884:9;:79;;42876:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;42814:172;42748:338;;;43049:10;43042:4;;:17;;;;:::i;:::-;43029:9;:30;;43021:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;42748:338;42605:493;43147:9;;43133:10;43116:14;:12;:14::i;:::-;:27;;;;:::i;:::-;:40;;43108:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;43237:12;;43223:10;43197:11;:23;43209:10;43197:23;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;;43189:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;43302:33;43312:10;43324;43302:9;:33::i;:::-;43398:10;43372:11;:23;43384:10;43372:23;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;43346:11;:23;43358:10;43346:23;;;;;;;;;;;;;;;:62;;;;42487:926;:::o;42387:92::-;3865:13;:11;:13::i;:::-;42466:8:::1;42456:7;:18;;;;;;:::i;:::-;;42387:92:::0;:::o;26754:234::-;26901:8;26849:18;:39;26868:19;:17;:19::i;:::-;26849:39;;;;;;;;;;;;;;;:49;26889:8;26849:49;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;26961:8;26925:55;;26940:19;:17;:19::i;:::-;26925:55;;;26971:8;26925:55;;;;;;:::i;:::-;;;;;;;;26754:234;;:::o;41861:35::-;;;;:::o;31458:407::-;31633:31;31646:4;31652:2;31656:7;31633:12;:31::i;:::-;31697:1;31679:2;:14;;;:19;31675:183;;31718:56;31749:4;31755:2;31759:7;31768:5;31718:30;:56::i;:::-;31713:145;;31802:40;;;;;;;;;;;;;;31713:145;31675:183;31458:407;;;;:::o;44689:71::-;3865:13;:11;:13::i;:::-;44749:6:::1;44741:5;;:14;;;;;;;;;;;;;;;;;;44689:71:::0;:::o;44197:406::-;44274:13;44310:16;44318:7;44310;:16::i;:::-;44302:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;44390:5;44376:19;;:10;;;;;;;;;;;:19;;;44373:225;;44419:17;44412:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44373:225;44497:1;44476:10;:8;:10::i;:::-;44470:24;:28;:128;;;;;;;;;;;;;;;;;44539:10;:8;:10::i;:::-;44551:18;:7;:16;:18::i;:::-;44522:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;44470:128;44463:135;;44197:406;;;;:::o;43647:132::-;3865:13;:11;:13::i;:::-;43756:18:::1;43736:17;:38;;;;;;:::i;:::-;;43647:132:::0;:::o;41740:31::-;;;;:::o;44945:166::-;3865:13;:11;:13::i;:::-;45033:16:::1;;45023:7;:26;45015:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;45096:7;45081:12;:22;;;;44945:166:::0;:::o;26996:164::-;27093:4;27117:18;:25;27136:5;27117:25;;;;;;;;;;;;;;;:35;27143:8;27117:35;;;;;;;;;;;;;;;;;;;;;;;;;27110:42;;26996:164;;;;:::o;4252:201::-;3865:13;:11;:13::i;:::-;4361:1:::1;4341:22;;:8;:22;;::::0;4333:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4417:28;4436:8;4417:18;:28::i;:::-;4252:201:::0;:::o;27168:282::-;27233:4;27289:7;27270:15;:13;:15::i;:::-;:26;;:66;;;;;27323:13;;27313:7;:23;27270:66;:153;;;;;27422:1;18586:8;27374:17;:26;27392:7;27374:26;;;;;;;;;;;;:44;:49;27270:153;27250:173;;27168:282;;;:::o;40013:105::-;40073:7;40100:10;40093:17;;40013:105;:::o;43872:97::-;43937:7;43961:1;43954:8;;43872:97;:::o;24195:670::-;24262:7;24282:12;24297:7;24282:22;;24365:4;24346:15;:13;:15::i;:::-;:23;24342:456;;24399:13;;24392:4;:20;24388:410;;;24437:14;24454:17;:23;24472:4;24454:23;;;;;;;;;;;;24437:40;;24571:1;18586:8;24543:6;:24;:29;24539:240;;24603:113;24620:1;24610:6;:11;24603:113;;24663:17;:25;24681:6;;;;;;;24663:25;;;;;;;;;;;;24654:34;;24603:113;;;24749:6;24742:13;;;;;;24539:240;24414:384;24388:410;24342:456;24826:31;;;;;;;;;;;;;;24195:670;;;;:::o;28331:485::-;28433:27;28462:23;28503:38;28544:15;:24;28560:7;28544:24;;;;;;;;;;;28503:65;;28721:18;28698:41;;28778:19;28772:26;28753:45;;28683:126;28331:485;;;:::o;27559:659::-;27708:11;27873:16;27866:5;27862:28;27853:37;;28033:16;28022:9;28018:32;28005:45;;28183:15;28172:9;28169:30;28161:5;28150:9;28147:20;28144:56;28134:66;;27559:659;;;;;:::o;31873:159::-;;;;;:::o;39694:311::-;39829:7;39849:16;18990:3;39875:19;:41;;39849:68;;18990:3;39943:31;39954:4;39960:2;39964:9;39943:10;:31::i;:::-;39935:40;;:62;;39928:69;;;39694:311;;;;;:::o;25322:450::-;25402:14;25570:16;25563:5;25559:28;25550:37;;25747:5;25733:11;25708:23;25704:41;25701:52;25694:5;25691:63;25681:73;;25322:450;;;;:::o;32043:158::-;;;;;:::o;4001:132::-;4076:12;:10;:12::i;:::-;4065:23;;:7;:5;:7::i;:::-;:23;;;4057:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4001:132::o;4461:191::-;4535:16;4554:6;;;;;;;;;;;4535:25;;4580:8;4571:6;;:17;;;;;;;;;;;;;;;;;;4635:8;4604:40;;4625:8;4604:40;;;;;;;;;;;;4524:128;4461:191;:::o;20804:296::-;20859:7;21066:15;:13;:15::i;:::-;21050:13;;:31;21043:38;;20804:296;:::o;36466:112::-;36543:27;36553:2;36557:8;36543:27;;;;;;;;;;;;:9;:27::i;:::-;36466:112;;:::o;32209:716::-;32372:4;32418:2;32393:45;;;32439:19;:17;:19::i;:::-;32460:4;32466:7;32475:5;32393:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32389:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32693:1;32676:6;:13;:18;32672:235;;32722:40;;;;;;;;;;;;;;32672:235;32865:6;32859:13;32850:6;32846:2;32842:15;32835:38;32389:529;32562:54;;;32552:64;;;:6;:64;;;;32545:71;;;32209:716;;;;;;:::o;42288:91::-;42340:13;42367:7;42360:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42288:91;:::o;12901:716::-;12957:13;13008:14;13045:1;13025:17;13036:5;13025:10;:17::i;:::-;:21;13008:38;;13061:20;13095:6;13084:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13061:41;;13117:11;13246:6;13242:2;13238:15;13230:6;13226:28;13219:35;;13283:288;13290:4;13283:288;;;13315:5;;;;;;;;13457:8;13452:2;13445:5;13441:14;13436:30;13431:3;13423:44;13513:2;13504:11;;;;;;:::i;:::-;;;;;13547:1;13538:5;:10;13283:288;13534:21;13283:288;13592:6;13585:13;;;;;12901:716;;;:::o;39539:147::-;39676:6;39539:147;;;;;:::o;3352:98::-;3405:7;3432:10;3425:17;;3352:98;:::o;35769:689::-;35900:19;35906:2;35910:8;35900:5;:19::i;:::-;35979:1;35961:2;:14;;;:19;35957:483;;36001:11;36015:13;;36001:27;;36047:13;36069:8;36063:3;:14;36047:30;;36096:233;36127:62;36166:1;36170:2;36174:7;;;;;;36183:5;36127:30;:62::i;:::-;36122:167;;36225:40;;;;;;;;;;;;;;36122:167;36324:3;36316:5;:11;36096:233;;36411:3;36394:13;;:20;36390:34;;36416:8;;;36390:34;35982:458;;35957:483;35769:689;;;:::o;10489:922::-;10542:7;10562:14;10579:1;10562:18;;10629:6;10620:5;:15;10616:102;;10665:6;10656:15;;;;;;:::i;:::-;;;;;10700:2;10690:12;;;;10616:102;10745:6;10736:5;:15;10732:102;;10781:6;10772:15;;;;;;:::i;:::-;;;;;10816:2;10806:12;;;;10732:102;10861:6;10852:5;:15;10848:102;;10897:6;10888:15;;;;;;:::i;:::-;;;;;10932:2;10922:12;;;;10848:102;10977:5;10968;:14;10964:99;;11012:5;11003:14;;;;;;:::i;:::-;;;;;11046:1;11036:11;;;;10964:99;11090:5;11081;:14;11077:99;;11125:5;11116:14;;;;;;:::i;:::-;;;;;11159:1;11149:11;;;;11077:99;11203:5;11194;:14;11190:99;;11238:5;11229:14;;;;;;:::i;:::-;;;;;11272:1;11262:11;;;;11190:99;11316:5;11307;:14;11303:66;;11352:1;11342:11;;;;11303:66;11397:6;11390:13;;;10489:922;;;:::o;32933:1770::-;33006:20;33029:13;;33006:36;;33069:1;33057:8;:13;33053:44;;33079:18;;;;;;;;;;;;;;33053:44;33110:61;33140:1;33144:2;33148:12;33162:8;33110:21;:61::i;:::-;33280:1;17948:2;33250:1;:26;;33249:32;33237:8;:45;33211:18;:22;33230:2;33211:22;;;;;;;;;;;;;;;;:71;;;;;;;;;;;33333:139;33370:2;33424:33;33447:1;33451:2;33455:1;33424:14;:33::i;:::-;33391:30;33412:8;33391:20;:30::i;:::-;:66;33333:18;:139::i;:::-;33299:17;:31;33317:12;33299:31;;;;;;;;;;;:173;;;;33489:16;33520:11;33549:8;33534:12;:23;33520:37;;33720:16;33716:2;33712:25;33700:37;;34092:12;34052:8;34011:1;33949:25;33890:1;33829;33802:335;34217:1;34203:12;34199:20;34157:346;34258:3;34249:7;34246:16;34157:346;;34476:7;34466:8;34463:1;34436:25;34433:1;34430;34425:59;34311:1;34302:7;34298:15;34287:26;;34157:346;;;34161:77;34548:1;34536:8;:13;34532:45;;34558:19;;;;;;;;;;;;;;34532:45;34610:3;34594:13;:19;;;;33184:1441;;34635:60;34664:1;34668:2;34672:12;34686:8;34635:20;:60::i;:::-;32995:1708;32933:1770;;:::o;25780:324::-;25850:14;26083:1;26073:8;26070:15;26044:24;26040:46;26030:56;;25780:324;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:149::-;1647:7;1687:66;1680:5;1676:78;1665:89;;1611:149;;;:::o;1766:120::-;1838:23;1855:5;1838:23;:::i;:::-;1831:5;1828:34;1818:62;;1876:1;1873;1866:12;1818:62;1766:120;:::o;1892:137::-;1937:5;1975:6;1962:20;1953:29;;1991:32;2017:5;1991:32;:::i;:::-;1892:137;;;;:::o;2035:327::-;2093:6;2142:2;2130:9;2121:7;2117:23;2113:32;2110:119;;;2148:79;;:::i;:::-;2110:119;2268:1;2293:52;2337:7;2328:6;2317:9;2313:22;2293:52;:::i;:::-;2283:62;;2239:116;2035:327;;;;:::o;2368:90::-;2402:7;2445:5;2438:13;2431:21;2420:32;;2368:90;;;:::o;2464:109::-;2545:21;2560:5;2545:21;:::i;:::-;2540:3;2533:34;2464:109;;:::o;2579:210::-;2666:4;2704:2;2693:9;2689:18;2681:26;;2717:65;2779:1;2768:9;2764:17;2755:6;2717:65;:::i;:::-;2579:210;;;;:::o;2795:99::-;2847:6;2881:5;2875:12;2865:22;;2795:99;;;:::o;2900:169::-;2984:11;3018:6;3013:3;3006:19;3058:4;3053:3;3049:14;3034:29;;2900:169;;;;:::o;3075:246::-;3156:1;3166:113;3180:6;3177:1;3174:13;3166:113;;;3265:1;3260:3;3256:11;3250:18;3246:1;3241:3;3237:11;3230:39;3202:2;3199:1;3195:10;3190:15;;3166:113;;;3313:1;3304:6;3299:3;3295:16;3288:27;3137:184;3075:246;;;:::o;3327:102::-;3368:6;3419:2;3415:7;3410:2;3403:5;3399:14;3395:28;3385:38;;3327:102;;;:::o;3435:377::-;3523:3;3551:39;3584:5;3551:39;:::i;:::-;3606:71;3670:6;3665:3;3606:71;:::i;:::-;3599:78;;3686:65;3744:6;3739:3;3732:4;3725:5;3721:16;3686:65;:::i;:::-;3776:29;3798:6;3776:29;:::i;:::-;3771:3;3767:39;3760:46;;3527:285;3435:377;;;;:::o;3818:313::-;3931:4;3969:2;3958:9;3954:18;3946:26;;4018:9;4012:4;4008:20;4004:1;3993:9;3989:17;3982:47;4046:78;4119:4;4110:6;4046:78;:::i;:::-;4038:86;;3818:313;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:329::-;4469:6;4518:2;4506:9;4497:7;4493:23;4489:32;4486:119;;;4524:79;;:::i;:::-;4486:119;4644:1;4669:53;4714:7;4705:6;4694:9;4690:22;4669:53;:::i;:::-;4659:63;;4615:117;4410:329;;;;:::o;4745:118::-;4832:24;4850:5;4832:24;:::i;:::-;4827:3;4820:37;4745:118;;:::o;4869:222::-;4962:4;5000:2;4989:9;4985:18;4977:26;;5013:71;5081:1;5070:9;5066:17;5057:6;5013:71;:::i;:::-;4869:222;;;;:::o;5097:474::-;5165:6;5173;5222:2;5210:9;5201:7;5197:23;5193:32;5190:119;;;5228:79;;:::i;:::-;5190:119;5348:1;5373:53;5418:7;5409:6;5398:9;5394:22;5373:53;:::i;:::-;5363:63;;5319:117;5475:2;5501:53;5546:7;5537:6;5526:9;5522:22;5501:53;:::i;:::-;5491:63;;5446:118;5097:474;;;;;:::o;5577:619::-;5654:6;5662;5670;5719:2;5707:9;5698:7;5694:23;5690:32;5687:119;;;5725:79;;:::i;:::-;5687:119;5845:1;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5816:117;5972:2;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5943:118;6100:2;6126:53;6171:7;6162:6;6151:9;6147:22;6126:53;:::i;:::-;6116:63;;6071:118;5577:619;;;;;:::o;6202:116::-;6272:21;6287:5;6272:21;:::i;:::-;6265:5;6262:32;6252:60;;6308:1;6305;6298:12;6252:60;6202:116;:::o;6324:133::-;6367:5;6405:6;6392:20;6383:29;;6421:30;6445:5;6421:30;:::i;:::-;6324:133;;;;:::o;6463:323::-;6519:6;6568:2;6556:9;6547:7;6543:23;6539:32;6536:119;;;6574:79;;:::i;:::-;6536:119;6694:1;6719:50;6761:7;6752:6;6741:9;6737:22;6719:50;:::i;:::-;6709:60;;6665:114;6463:323;;;;:::o;6792:117::-;6901:1;6898;6891:12;6915:117;7024:1;7021;7014:12;7038:180;7086:77;7083:1;7076:88;7183:4;7180:1;7173:15;7207:4;7204:1;7197:15;7224:281;7307:27;7329:4;7307:27;:::i;:::-;7299:6;7295:40;7437:6;7425:10;7422:22;7401:18;7389:10;7386:34;7383:62;7380:88;;;7448:18;;:::i;:::-;7380:88;7488:10;7484:2;7477:22;7267:238;7224:281;;:::o;7511:129::-;7545:6;7572:20;;:::i;:::-;7562:30;;7601:33;7629:4;7621:6;7601:33;:::i;:::-;7511:129;;;:::o;7646:308::-;7708:4;7798:18;7790:6;7787:30;7784:56;;;7820:18;;:::i;:::-;7784:56;7858:29;7880:6;7858:29;:::i;:::-;7850:37;;7942:4;7936;7932:15;7924:23;;7646:308;;;:::o;7960:146::-;8057:6;8052:3;8047;8034:30;8098:1;8089:6;8084:3;8080:16;8073:27;7960:146;;;:::o;8112:425::-;8190:5;8215:66;8231:49;8273:6;8231:49;:::i;:::-;8215:66;:::i;:::-;8206:75;;8304:6;8297:5;8290:21;8342:4;8335:5;8331:16;8380:3;8371:6;8366:3;8362:16;8359:25;8356:112;;;8387:79;;:::i;:::-;8356:112;8477:54;8524:6;8519:3;8514;8477:54;:::i;:::-;8196:341;8112:425;;;;;:::o;8557:340::-;8613:5;8662:3;8655:4;8647:6;8643:17;8639:27;8629:122;;8670:79;;:::i;:::-;8629:122;8787:6;8774:20;8812:79;8887:3;8879:6;8872:4;8864:6;8860:17;8812:79;:::i;:::-;8803:88;;8619:278;8557:340;;;;:::o;8903:509::-;8972:6;9021:2;9009:9;9000:7;8996:23;8992:32;8989:119;;;9027:79;;:::i;:::-;8989:119;9175:1;9164:9;9160:17;9147:31;9205:18;9197:6;9194:30;9191:117;;;9227:79;;:::i;:::-;9191:117;9332:63;9387:7;9378:6;9367:9;9363:22;9332:63;:::i;:::-;9322:73;;9118:287;8903:509;;;;:::o;9418:468::-;9483:6;9491;9540:2;9528:9;9519:7;9515:23;9511:32;9508:119;;;9546:79;;:::i;:::-;9508:119;9666:1;9691:53;9736:7;9727:6;9716:9;9712:22;9691:53;:::i;:::-;9681:63;;9637:117;9793:2;9819:50;9861:7;9852:6;9841:9;9837:22;9819:50;:::i;:::-;9809:60;;9764:115;9418:468;;;;;:::o;9892:307::-;9953:4;10043:18;10035:6;10032:30;10029:56;;;10065:18;;:::i;:::-;10029:56;10103:29;10125:6;10103:29;:::i;:::-;10095:37;;10187:4;10181;10177:15;10169:23;;9892:307;;;:::o;10205:423::-;10282:5;10307:65;10323:48;10364:6;10323:48;:::i;:::-;10307:65;:::i;:::-;10298:74;;10395:6;10388:5;10381:21;10433:4;10426:5;10422:16;10471:3;10462:6;10457:3;10453:16;10450:25;10447:112;;;10478:79;;:::i;:::-;10447:112;10568:54;10615:6;10610:3;10605;10568:54;:::i;:::-;10288:340;10205:423;;;;;:::o;10647:338::-;10702:5;10751:3;10744:4;10736:6;10732:17;10728:27;10718:122;;10759:79;;:::i;:::-;10718:122;10876:6;10863:20;10901:78;10975:3;10967:6;10960:4;10952:6;10948:17;10901:78;:::i;:::-;10892:87;;10708:277;10647:338;;;;:::o;10991:943::-;11086:6;11094;11102;11110;11159:3;11147:9;11138:7;11134:23;11130:33;11127:120;;;11166:79;;:::i;:::-;11127:120;11286:1;11311:53;11356:7;11347:6;11336:9;11332:22;11311:53;:::i;:::-;11301:63;;11257:117;11413:2;11439:53;11484:7;11475:6;11464:9;11460:22;11439:53;:::i;:::-;11429:63;;11384:118;11541:2;11567:53;11612:7;11603:6;11592:9;11588:22;11567:53;:::i;:::-;11557:63;;11512:118;11697:2;11686:9;11682:18;11669:32;11728:18;11720:6;11717:30;11714:117;;;11750:79;;:::i;:::-;11714:117;11855:62;11909:7;11900:6;11889:9;11885:22;11855:62;:::i;:::-;11845:72;;11640:287;10991:943;;;;;;;:::o;11940:474::-;12008:6;12016;12065:2;12053:9;12044:7;12040:23;12036:32;12033:119;;;12071:79;;:::i;:::-;12033:119;12191:1;12216:53;12261:7;12252:6;12241:9;12237:22;12216:53;:::i;:::-;12206:63;;12162:117;12318:2;12344:53;12389:7;12380:6;12369:9;12365:22;12344:53;:::i;:::-;12334:63;;12289:118;11940:474;;;;;:::o;12420:180::-;12468:77;12465:1;12458:88;12565:4;12562:1;12555:15;12589:4;12586:1;12579:15;12606:320;12650:6;12687:1;12681:4;12677:12;12667:22;;12734:1;12728:4;12724:12;12755:18;12745:81;;12811:4;12803:6;12799:17;12789:27;;12745:81;12873:2;12865:6;12862:14;12842:18;12839:38;12836:84;;12892:18;;:::i;:::-;12836:84;12657:269;12606:320;;;:::o;12932:147::-;13033:11;13070:3;13055:18;;12932:147;;;;:::o;13085:114::-;;:::o;13205:398::-;13364:3;13385:83;13466:1;13461:3;13385:83;:::i;:::-;13378:90;;13477:93;13566:3;13477:93;:::i;:::-;13595:1;13590:3;13586:11;13579:18;;13205:398;;;:::o;13609:379::-;13793:3;13815:147;13958:3;13815:147;:::i;:::-;13808:154;;13979:3;13972:10;;13609:379;;;:::o;13994:166::-;14134:18;14130:1;14122:6;14118:14;14111:42;13994:166;:::o;14166:366::-;14308:3;14329:67;14393:2;14388:3;14329:67;:::i;:::-;14322:74;;14405:93;14494:3;14405:93;:::i;:::-;14523:2;14518:3;14514:12;14507:19;;14166:366;;;:::o;14538:419::-;14704:4;14742:2;14731:9;14727:18;14719:26;;14791:9;14785:4;14781:20;14777:1;14766:9;14762:17;14755:47;14819:131;14945:4;14819:131;:::i;:::-;14811:139;;14538:419;;;:::o;14963:180::-;15011:77;15008:1;15001:88;15108:4;15105:1;15098:15;15132:4;15129:1;15122:15;15149:191;15189:3;15208:20;15226:1;15208:20;:::i;:::-;15203:25;;15242:20;15260:1;15242:20;:::i;:::-;15237:25;;15285:1;15282;15278:9;15271:16;;15306:3;15303:1;15300:10;15297:36;;;15313:18;;:::i;:::-;15297:36;15149:191;;;;:::o;15346:221::-;15486:34;15482:1;15474:6;15470:14;15463:58;15555:4;15550:2;15542:6;15538:15;15531:29;15346:221;:::o;15573:366::-;15715:3;15736:67;15800:2;15795:3;15736:67;:::i;:::-;15729:74;;15812:93;15901:3;15812:93;:::i;:::-;15930:2;15925:3;15921:12;15914:19;;15573:366;;;:::o;15945:419::-;16111:4;16149:2;16138:9;16134:18;16126:26;;16198:9;16192:4;16188:20;16184:1;16173:9;16169:17;16162:47;16226:131;16352:4;16226:131;:::i;:::-;16218:139;;15945:419;;;:::o;16370:182::-;16510:34;16506:1;16498:6;16494:14;16487:58;16370:182;:::o;16558:366::-;16700:3;16721:67;16785:2;16780:3;16721:67;:::i;:::-;16714:74;;16797:93;16886:3;16797:93;:::i;:::-;16915:2;16910:3;16906:12;16899:19;;16558:366;;;:::o;16930:419::-;17096:4;17134:2;17123:9;17119:18;17111:26;;17183:9;17177:4;17173:20;17169:1;17158:9;17154:17;17147:47;17211:131;17337:4;17211:131;:::i;:::-;17203:139;;16930:419;;;:::o;17355:410::-;17395:7;17418:20;17436:1;17418:20;:::i;:::-;17413:25;;17452:20;17470:1;17452:20;:::i;:::-;17447:25;;17507:1;17504;17500:9;17529:30;17547:11;17529:30;:::i;:::-;17518:41;;17708:1;17699:7;17695:15;17692:1;17689:22;17669:1;17662:9;17642:83;17619:139;;17738:18;;:::i;:::-;17619:139;17403:362;17355:410;;;;:::o;17771:172::-;17911:24;17907:1;17899:6;17895:14;17888:48;17771:172;:::o;17949:366::-;18091:3;18112:67;18176:2;18171:3;18112:67;:::i;:::-;18105:74;;18188:93;18277:3;18188:93;:::i;:::-;18306:2;18301:3;18297:12;18290:19;;17949:366;;;:::o;18321:419::-;18487:4;18525:2;18514:9;18510:18;18502:26;;18574:9;18568:4;18564:20;18560:1;18549:9;18545:17;18538:47;18602:131;18728:4;18602:131;:::i;:::-;18594:139;;18321:419;;;:::o;18746:194::-;18786:4;18806:20;18824:1;18806:20;:::i;:::-;18801:25;;18840:20;18858:1;18840:20;:::i;:::-;18835:25;;18884:1;18881;18877:9;18869:17;;18908:1;18902:4;18899:11;18896:37;;;18913:18;;:::i;:::-;18896:37;18746:194;;;;:::o;18946:168::-;19086:20;19082:1;19074:6;19070:14;19063:44;18946:168;:::o;19120:366::-;19262:3;19283:67;19347:2;19342:3;19283:67;:::i;:::-;19276:74;;19359:93;19448:3;19359:93;:::i;:::-;19477:2;19472:3;19468:12;19461:19;;19120:366;;;:::o;19492:419::-;19658:4;19696:2;19685:9;19681:18;19673:26;;19745:9;19739:4;19735:20;19731:1;19720:9;19716:17;19709:47;19773:131;19899:4;19773:131;:::i;:::-;19765:139;;19492:419;;;:::o;19917:168::-;20057:20;20053:1;20045:6;20041:14;20034:44;19917:168;:::o;20091:366::-;20233:3;20254:67;20318:2;20313:3;20254:67;:::i;:::-;20247:74;;20330:93;20419:3;20330:93;:::i;:::-;20448:2;20443:3;20439:12;20432:19;;20091:366;;;:::o;20463:419::-;20629:4;20667:2;20656:9;20652:18;20644:26;;20716:9;20710:4;20706:20;20702:1;20691:9;20687:17;20680:47;20744:131;20870:4;20744:131;:::i;:::-;20736:139;;20463:419;;;:::o;20888:224::-;21028:34;21024:1;21016:6;21012:14;21005:58;21097:7;21092:2;21084:6;21080:15;21073:32;20888:224;:::o;21118:366::-;21260:3;21281:67;21345:2;21340:3;21281:67;:::i;:::-;21274:74;;21357:93;21446:3;21357:93;:::i;:::-;21475:2;21470:3;21466:12;21459:19;;21118:366;;;:::o;21490:419::-;21656:4;21694:2;21683:9;21679:18;21671:26;;21743:9;21737:4;21733:20;21729:1;21718:9;21714:17;21707:47;21771:131;21897:4;21771:131;:::i;:::-;21763:139;;21490:419;;;:::o;21915:141::-;21964:4;21987:3;21979:11;;22010:3;22007:1;22000:14;22044:4;22041:1;22031:18;22023:26;;21915:141;;;:::o;22062:93::-;22099:6;22146:2;22141;22134:5;22130:14;22126:23;22116:33;;22062:93;;;:::o;22161:107::-;22205:8;22255:5;22249:4;22245:16;22224:37;;22161:107;;;;:::o;22274:393::-;22343:6;22393:1;22381:10;22377:18;22416:97;22446:66;22435:9;22416:97;:::i;:::-;22534:39;22564:8;22553:9;22534:39;:::i;:::-;22522:51;;22606:4;22602:9;22595:5;22591:21;22582:30;;22655:4;22645:8;22641:19;22634:5;22631:30;22621:40;;22350:317;;22274:393;;;;;:::o;22673:60::-;22701:3;22722:5;22715:12;;22673:60;;;:::o;22739:142::-;22789:9;22822:53;22840:34;22849:24;22867:5;22849:24;:::i;:::-;22840:34;:::i;:::-;22822:53;:::i;:::-;22809:66;;22739:142;;;:::o;22887:75::-;22930:3;22951:5;22944:12;;22887:75;;;:::o;22968:269::-;23078:39;23109:7;23078:39;:::i;:::-;23139:91;23188:41;23212:16;23188:41;:::i;:::-;23180:6;23173:4;23167:11;23139:91;:::i;:::-;23133:4;23126:105;23044:193;22968:269;;;:::o;23243:73::-;23288:3;23243:73;:::o;23322:189::-;23399:32;;:::i;:::-;23440:65;23498:6;23490;23484:4;23440:65;:::i;:::-;23375:136;23322:189;;:::o;23517:186::-;23577:120;23594:3;23587:5;23584:14;23577:120;;;23648:39;23685:1;23678:5;23648:39;:::i;:::-;23621:1;23614:5;23610:13;23601:22;;23577:120;;;23517:186;;:::o;23709:543::-;23810:2;23805:3;23802:11;23799:446;;;23844:38;23876:5;23844:38;:::i;:::-;23928:29;23946:10;23928:29;:::i;:::-;23918:8;23914:44;24111:2;24099:10;24096:18;24093:49;;;24132:8;24117:23;;24093:49;24155:80;24211:22;24229:3;24211:22;:::i;:::-;24201:8;24197:37;24184:11;24155:80;:::i;:::-;23814:431;;23799:446;23709:543;;;:::o;24258:117::-;24312:8;24362:5;24356:4;24352:16;24331:37;;24258:117;;;;:::o;24381:169::-;24425:6;24458:51;24506:1;24502:6;24494:5;24491:1;24487:13;24458:51;:::i;:::-;24454:56;24539:4;24533;24529:15;24519:25;;24432:118;24381:169;;;;:::o;24555:295::-;24631:4;24777:29;24802:3;24796:4;24777:29;:::i;:::-;24769:37;;24839:3;24836:1;24832:11;24826:4;24823:21;24815:29;;24555:295;;;;:::o;24855:1395::-;24972:37;25005:3;24972:37;:::i;:::-;25074:18;25066:6;25063:30;25060:56;;;25096:18;;:::i;:::-;25060:56;25140:38;25172:4;25166:11;25140:38;:::i;:::-;25225:67;25285:6;25277;25271:4;25225:67;:::i;:::-;25319:1;25343:4;25330:17;;25375:2;25367:6;25364:14;25392:1;25387:618;;;;26049:1;26066:6;26063:77;;;26115:9;26110:3;26106:19;26100:26;26091:35;;26063:77;26166:67;26226:6;26219:5;26166:67;:::i;:::-;26160:4;26153:81;26022:222;25357:887;;25387:618;25439:4;25435:9;25427:6;25423:22;25473:37;25505:4;25473:37;:::i;:::-;25532:1;25546:208;25560:7;25557:1;25554:14;25546:208;;;25639:9;25634:3;25630:19;25624:26;25616:6;25609:42;25690:1;25682:6;25678:14;25668:24;;25737:2;25726:9;25722:18;25709:31;;25583:4;25580:1;25576:12;25571:17;;25546:208;;;25782:6;25773:7;25770:19;25767:179;;;25840:9;25835:3;25831:19;25825:26;25883:48;25925:4;25917:6;25913:17;25902:9;25883:48;:::i;:::-;25875:6;25868:64;25790:156;25767:179;25992:1;25988;25980:6;25976:14;25972:22;25966:4;25959:36;25394:611;;;25357:887;;24947:1303;;;24855:1395;;:::o;26256:181::-;26396:33;26392:1;26384:6;26380:14;26373:57;26256:181;:::o;26443:366::-;26585:3;26606:67;26670:2;26665:3;26606:67;:::i;:::-;26599:74;;26682:93;26771:3;26682:93;:::i;:::-;26800:2;26795:3;26791:12;26784:19;;26443:366;;;:::o;26815:419::-;26981:4;27019:2;27008:9;27004:18;26996:26;;27068:9;27062:4;27058:20;27054:1;27043:9;27039:17;27032:47;27096:131;27222:4;27096:131;:::i;:::-;27088:139;;26815:419;;;:::o;27240:148::-;27342:11;27379:3;27364:18;;27240:148;;;;:::o;27394:390::-;27500:3;27528:39;27561:5;27528:39;:::i;:::-;27583:89;27665:6;27660:3;27583:89;:::i;:::-;27576:96;;27681:65;27739:6;27734:3;27727:4;27720:5;27716:16;27681:65;:::i;:::-;27771:6;27766:3;27762:16;27755:23;;27504:280;27394:390;;;;:::o;27790:155::-;27930:7;27926:1;27918:6;27914:14;27907:31;27790:155;:::o;27951:400::-;28111:3;28132:84;28214:1;28209:3;28132:84;:::i;:::-;28125:91;;28225:93;28314:3;28225:93;:::i;:::-;28343:1;28338:3;28334:11;28327:18;;27951:400;;;:::o;28357:701::-;28638:3;28660:95;28751:3;28742:6;28660:95;:::i;:::-;28653:102;;28772:95;28863:3;28854:6;28772:95;:::i;:::-;28765:102;;28884:148;29028:3;28884:148;:::i;:::-;28877:155;;29049:3;29042:10;;28357:701;;;;;:::o;29064:225::-;29204:34;29200:1;29192:6;29188:14;29181:58;29273:8;29268:2;29260:6;29256:15;29249:33;29064:225;:::o;29295:366::-;29437:3;29458:67;29522:2;29517:3;29458:67;:::i;:::-;29451:74;;29534:93;29623:3;29534:93;:::i;:::-;29652:2;29647:3;29643:12;29636:19;;29295:366;;;:::o;29667:419::-;29833:4;29871:2;29860:9;29856:18;29848:26;;29920:9;29914:4;29910:20;29906:1;29895:9;29891:17;29884:47;29948:131;30074:4;29948:131;:::i;:::-;29940:139;;29667:419;;;:::o;30092:182::-;30232:34;30228:1;30220:6;30216:14;30209:58;30092:182;:::o;30280:366::-;30422:3;30443:67;30507:2;30502:3;30443:67;:::i;:::-;30436:74;;30519:93;30608:3;30519:93;:::i;:::-;30637:2;30632:3;30628:12;30621:19;;30280:366;;;:::o;30652:419::-;30818:4;30856:2;30845:9;30841:18;30833:26;;30905:9;30899:4;30895:20;30891:1;30880:9;30876:17;30869:47;30933:131;31059:4;30933:131;:::i;:::-;30925:139;;30652:419;;;:::o;31077:98::-;31128:6;31162:5;31156:12;31146:22;;31077:98;;;:::o;31181:168::-;31264:11;31298:6;31293:3;31286:19;31338:4;31333:3;31329:14;31314:29;;31181:168;;;;:::o;31355:373::-;31441:3;31469:38;31501:5;31469:38;:::i;:::-;31523:70;31586:6;31581:3;31523:70;:::i;:::-;31516:77;;31602:65;31660:6;31655:3;31648:4;31641:5;31637:16;31602:65;:::i;:::-;31692:29;31714:6;31692:29;:::i;:::-;31687:3;31683:39;31676:46;;31445:283;31355:373;;;;:::o;31734:640::-;31929:4;31967:3;31956:9;31952:19;31944:27;;31981:71;32049:1;32038:9;32034:17;32025:6;31981:71;:::i;:::-;32062:72;32130:2;32119:9;32115:18;32106:6;32062:72;:::i;:::-;32144;32212:2;32201:9;32197:18;32188:6;32144:72;:::i;:::-;32263:9;32257:4;32253:20;32248:2;32237:9;32233:18;32226:48;32291:76;32362:4;32353:6;32291:76;:::i;:::-;32283:84;;31734:640;;;;;;;:::o;32380:141::-;32436:5;32467:6;32461:13;32452:22;;32483:32;32509:5;32483:32;:::i;:::-;32380:141;;;;:::o;32527:349::-;32596:6;32645:2;32633:9;32624:7;32620:23;32616:32;32613:119;;;32651:79;;:::i;:::-;32613:119;32771:1;32796:63;32851:7;32842:6;32831:9;32827:22;32796:63;:::i;:::-;32786:73;;32742:127;32527:349;;;;:::o;32882:180::-;32930:77;32927:1;32920:88;33027:4;33024:1;33017:15;33051:4;33048:1;33041:15

Swarm Source

ipfs://d64f96389f3bf8d763b8b341115f8ab7caeafe34454d58189f723b604f99b06f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.