Token APE_burn

 

Overview ERC-721

Total Supply:
0 APEb

Holders:
3 addresses
Balance
0 APEb
0x0000000000000000000000000000000000000000
Loading
[ Download CSV Export  ] 
Loading
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Burn_Example

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-12
*/

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

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


pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

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

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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


pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;








/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, Ownable {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

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

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

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

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

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

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

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

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

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

    /**
     * @dev See {IERC721-burn}.
     */
    function burn(uint256 tokenId) public virtual onlyOwner() {
        _burn(tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

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

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

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

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

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

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

// File: contracts/Burn_Example.sol

pragma solidity ^0.8.1;




    contract Burn_Example is Context, ERC721 {
        
        using Strings for uint256;
        
        // Optional mapping for token URIs
        mapping (uint256 => string) private _tokenURIs;

        // Base URI
        string private _baseURIextended;


        constructor(string memory _name, string memory _symbol)
            ERC721(_name, _symbol)
        {}
        
        function setBaseURI(string memory baseURI_) external onlyOwner() {
            _baseURIextended = baseURI_;
        }
        
        function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
            require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
            _tokenURIs[tokenId] = _tokenURI;
        }
        
        function _baseURI() internal view virtual override returns (string memory) {
            return _baseURIextended;
        }
        
        function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
            require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

            string memory _tokenURI = _tokenURIs[tokenId];
            string memory base = _baseURI();
            
            // If there is no base URI, return the token URI.
            if (bytes(base).length == 0) {
                return _tokenURI;
            }
            // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
            if (bytes(_tokenURI).length > 0) {
                return string(abi.encodePacked(base, _tokenURI));
            }
            // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.
            return string(abi.encodePacked(base, tokenId.toString()));
        }
        

        function mint(
            address _to,
            uint256 _tokenId,
            string memory tokenURI_
        ) external onlyOwner() {
            _mint(_to, _tokenId);
            _setTokenURI(_tokenId, tokenURI_);
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI_","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200367c3803806200367c83398181016040528101906200003791906200028f565b8181620000596200004d6200009560201b60201c565b6200009d60201b60201c565b81600190805190602001906200007192919062000161565b5080600290805190602001906200008a92919062000161565b505050505062000498565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200016f90620003a9565b90600052602060002090601f016020900481019282620001935760008555620001df565b82601f10620001ae57805160ff1916838001178555620001df565b82800160010185558215620001df579182015b82811115620001de578251825591602001919060010190620001c1565b5b509050620001ee9190620001f2565b5090565b5b808211156200020d576000816000905550600101620001f3565b5090565b60006200022862000222846200033d565b62000314565b90508281526020810184848401111562000247576200024662000478565b5b6200025484828562000373565b509392505050565b600082601f83011262000274576200027362000473565b5b81516200028684826020860162000211565b91505092915050565b60008060408385031215620002a957620002a862000482565b5b600083015167ffffffffffffffff811115620002ca57620002c96200047d565b5b620002d8858286016200025c565b925050602083015167ffffffffffffffff811115620002fc57620002fb6200047d565b5b6200030a858286016200025c565b9150509250929050565b60006200032062000333565b90506200032e8282620003df565b919050565b6000604051905090565b600067ffffffffffffffff8211156200035b576200035a62000444565b5b620003668262000487565b9050602081019050919050565b60005b838110156200039357808201518184015260208101905062000376565b83811115620003a3576000848401525b50505050565b60006002820490506001821680620003c257607f821691505b60208210811415620003d957620003d862000415565b5b50919050565b620003ea8262000487565b810181811067ffffffffffffffff821117156200040c576200040b62000444565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6131d480620004a86000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b88d4fde11610071578063b88d4fde146102f2578063c87b56dd1461030e578063d3fc98641461033e578063e985e9c51461035a578063f2fde38b1461038a57610121565b806370a0823114610260578063715018a6146102905780638da5cb5b1461029a57806395d89b41146102b8578063a22cb465146102d657610121565b806323b872dd116100f457806323b872dd146101c057806342842e0e146101dc57806342966c68146101f857806355f804b3146102145780636352211e1461023057610121565b806301ffc9a71461012657806306fdde0314610156578063081812fc14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b919061217d565b6103a6565b60405161014d91906125fb565b60405180910390f35b61015e610488565b60405161016b9190612616565b60405180910390f35b61018e60048036038101906101899190612220565b61051a565b60405161019b9190612594565b60405180910390f35b6101be60048036038101906101b991906120ce565b61059f565b005b6101da60048036038101906101d59190611fb8565b6106b7565b005b6101f660048036038101906101f19190611fb8565b610717565b005b610212600480360381019061020d9190612220565b610737565b005b61022e600480360381019061022991906121d7565b6107bf565b005b61024a60048036038101906102459190612220565b610855565b6040516102579190612594565b60405180910390f35b61027a60048036038101906102759190611f4b565b610907565b6040516102879190612858565b60405180910390f35b6102986109bf565b005b6102a2610a47565b6040516102af9190612594565b60405180910390f35b6102c0610a70565b6040516102cd9190612616565b60405180910390f35b6102f060048036038101906102eb919061208e565b610b02565b005b61030c6004803603810190610307919061200b565b610c83565b005b61032860048036038101906103239190612220565b610ce5565b6040516103359190612616565b60405180910390f35b6103586004803603810190610353919061210e565b610e58565b005b610374600480360381019061036f9190611f78565b610eed565b60405161038191906125fb565b60405180910390f35b6103a4600480360381019061039f9190611f4b565b610f81565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610481575061048082611079565b5b9050919050565b60606001805461049790612aae565b80601f01602080910402602001604051908101604052809291908181526020018280546104c390612aae565b80156105105780601f106104e557610100808354040283529160200191610510565b820191906000526020600020905b8154815290600101906020018083116104f357829003601f168201915b5050505050905090565b6000610525826110e3565b610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612778565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105aa82610855565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561061b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061290612818565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661063a61114f565b73ffffffffffffffffffffffffffffffffffffffff16148061066957506106688161066361114f565b610eed565b5b6106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f906126f8565b60405180910390fd5b6106b28383611157565b505050565b6106c86106c261114f565b82611210565b610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe90612838565b60405180910390fd5b6107128383836112ee565b505050565b61073283838360405180602001604052806000815250610c83565b505050565b61073f61114f565b73ffffffffffffffffffffffffffffffffffffffff1661075d610a47565b73ffffffffffffffffffffffffffffffffffffffff16146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa906127b8565b60405180910390fd5b6107bc8161154a565b50565b6107c761114f565b73ffffffffffffffffffffffffffffffffffffffff166107e5610a47565b73ffffffffffffffffffffffffffffffffffffffff161461083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906127b8565b60405180910390fd5b8060089080519060200190610851929190611d5f565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612738565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f90612718565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c761114f565b73ffffffffffffffffffffffffffffffffffffffff166109e5610a47565b73ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a32906127b8565b60405180910390fd5b610a45600061165b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610a7f90612aae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aab90612aae565b8015610af85780601f10610acd57610100808354040283529160200191610af8565b820191906000526020600020905b815481529060010190602001808311610adb57829003601f168201915b5050505050905090565b610b0a61114f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906126b8565b60405180910390fd5b8060066000610b8561114f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610c3261114f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c7791906125fb565b60405180910390a35050565b610c94610c8e61114f565b83611210565b610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90612838565b60405180910390fd5b610cdf8484848461171f565b50505050565b6060610cf0826110e3565b610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906127f8565b60405180910390fd5b6000600760008481526020019081526020016000208054610d4f90612aae565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b90612aae565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b505050505090506000610dd961177b565b9050600081511415610def578192505050610e53565b600082511115610e24578082604051602001610e0c929190612570565b60405160208183030381529060405292505050610e53565b80610e2e8561180d565b604051602001610e3f929190612570565b604051602081830303815290604052925050505b919050565b610e6061114f565b73ffffffffffffffffffffffffffffffffffffffff16610e7e610a47565b73ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb906127b8565b60405180910390fd5b610ede838361196e565b610ee88282611b3c565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f8961114f565b73ffffffffffffffffffffffffffffffffffffffff16610fa7610a47565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906127b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490612658565b60405180910390fd5b6110768161165b565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166111ca83610855565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061121b826110e3565b61125a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611251906126d8565b60405180910390fd5b600061126583610855565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112d457508373ffffffffffffffffffffffffffffffffffffffff166112bc8461051a565b73ffffffffffffffffffffffffffffffffffffffff16145b806112e557506112e48185610eed565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661130e82610855565b73ffffffffffffffffffffffffffffffffffffffff1614611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b906127d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612698565b60405180910390fd5b6113df838383611bb0565b6113ea600082611157565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143a91906129c4565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611491919061293d565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061155582610855565b905061156381600084611bb0565b61156e600083611157565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115be91906129c4565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61172a8484846112ee565b61173684848484611bb5565b611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90612638565b60405180910390fd5b50505050565b60606008805461178a90612aae565b80601f01602080910402602001604051908101604052809291908181526020018280546117b690612aae565b80156118035780601f106117d857610100808354040283529160200191611803565b820191906000526020600020905b8154815290600101906020018083116117e657829003601f168201915b5050505050905090565b60606000821415611855576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611969565b600082905060005b6000821461188757808061187090612b11565b915050600a826118809190612993565b915061185d565b60008167ffffffffffffffff8111156118a3576118a2612c47565b5b6040519080825280601f01601f1916602001820160405280156118d55781602001600182028036833780820191505090505b5090505b60008514611962576001826118ee91906129c4565b9150600a856118fd9190612b5a565b6030611909919061293d565b60f81b81838151811061191f5761191e612c18565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561195b9190612993565b94506118d9565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590612758565b60405180910390fd5b6119e7816110e3565b15611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e90612678565b60405180910390fd5b611a3360008383611bb0565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a83919061293d565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b611b45826110e3565b611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90612798565b60405180910390fd5b80600760008481526020019081526020016000209080519060200190611bab929190611d5f565b505050565b505050565b6000611bd68473ffffffffffffffffffffffffffffffffffffffff16611d4c565b15611d3f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611bff61114f565b8786866040518563ffffffff1660e01b8152600401611c2194939291906125af565b602060405180830381600087803b158015611c3b57600080fd5b505af1925050508015611c6c57506040513d601f19601f82011682018060405250810190611c6991906121aa565b60015b611cef573d8060008114611c9c576040519150601f19603f3d011682016040523d82523d6000602084013e611ca1565b606091505b50600081511415611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90612638565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d44565b600190505b949350505050565b600080823b905060008111915050919050565b828054611d6b90612aae565b90600052602060002090601f016020900481019282611d8d5760008555611dd4565b82601f10611da657805160ff1916838001178555611dd4565b82800160010185558215611dd4579182015b82811115611dd3578251825591602001919060010190611db8565b5b509050611de19190611de5565b5090565b5b80821115611dfe576000816000905550600101611de6565b5090565b6000611e15611e1084612898565b612873565b905082815260208101848484011115611e3157611e30612c7b565b5b611e3c848285612a6c565b509392505050565b6000611e57611e52846128c9565b612873565b905082815260208101848484011115611e7357611e72612c7b565b5b611e7e848285612a6c565b509392505050565b600081359050611e9581613142565b92915050565b600081359050611eaa81613159565b92915050565b600081359050611ebf81613170565b92915050565b600081519050611ed481613170565b92915050565b600082601f830112611eef57611eee612c76565b5b8135611eff848260208601611e02565b91505092915050565b600082601f830112611f1d57611f1c612c76565b5b8135611f2d848260208601611e44565b91505092915050565b600081359050611f4581613187565b92915050565b600060208284031215611f6157611f60612c85565b5b6000611f6f84828501611e86565b91505092915050565b60008060408385031215611f8f57611f8e612c85565b5b6000611f9d85828601611e86565b9250506020611fae85828601611e86565b9150509250929050565b600080600060608486031215611fd157611fd0612c85565b5b6000611fdf86828701611e86565b9350506020611ff086828701611e86565b925050604061200186828701611f36565b9150509250925092565b6000806000806080858703121561202557612024612c85565b5b600061203387828801611e86565b945050602061204487828801611e86565b935050604061205587828801611f36565b925050606085013567ffffffffffffffff81111561207657612075612c80565b5b61208287828801611eda565b91505092959194509250565b600080604083850312156120a5576120a4612c85565b5b60006120b385828601611e86565b92505060206120c485828601611e9b565b9150509250929050565b600080604083850312156120e5576120e4612c85565b5b60006120f385828601611e86565b925050602061210485828601611f36565b9150509250929050565b60008060006060848603121561212757612126612c85565b5b600061213586828701611e86565b935050602061214686828701611f36565b925050604084013567ffffffffffffffff81111561216757612166612c80565b5b61217386828701611f08565b9150509250925092565b60006020828403121561219357612192612c85565b5b60006121a184828501611eb0565b91505092915050565b6000602082840312156121c0576121bf612c85565b5b60006121ce84828501611ec5565b91505092915050565b6000602082840312156121ed576121ec612c85565b5b600082013567ffffffffffffffff81111561220b5761220a612c80565b5b61221784828501611f08565b91505092915050565b60006020828403121561223657612235612c85565b5b600061224484828501611f36565b91505092915050565b612256816129f8565b82525050565b61226581612a0a565b82525050565b6000612276826128fa565b6122808185612910565b9350612290818560208601612a7b565b61229981612c8a565b840191505092915050565b60006122af82612905565b6122b98185612921565b93506122c9818560208601612a7b565b6122d281612c8a565b840191505092915050565b60006122e882612905565b6122f28185612932565b9350612302818560208601612a7b565b80840191505092915050565b600061231b603283612921565b915061232682612c9b565b604082019050919050565b600061233e602683612921565b915061234982612cea565b604082019050919050565b6000612361601c83612921565b915061236c82612d39565b602082019050919050565b6000612384602483612921565b915061238f82612d62565b604082019050919050565b60006123a7601983612921565b91506123b282612db1565b602082019050919050565b60006123ca602c83612921565b91506123d582612dda565b604082019050919050565b60006123ed603883612921565b91506123f882612e29565b604082019050919050565b6000612410602a83612921565b915061241b82612e78565b604082019050919050565b6000612433602983612921565b915061243e82612ec7565b604082019050919050565b6000612456602083612921565b915061246182612f16565b602082019050919050565b6000612479602c83612921565b915061248482612f3f565b604082019050919050565b600061249c602c83612921565b91506124a782612f8e565b604082019050919050565b60006124bf602083612921565b91506124ca82612fdd565b602082019050919050565b60006124e2602983612921565b91506124ed82613006565b604082019050919050565b6000612505602f83612921565b915061251082613055565b604082019050919050565b6000612528602183612921565b9150612533826130a4565b604082019050919050565b600061254b603183612921565b9150612556826130f3565b604082019050919050565b61256a81612a62565b82525050565b600061257c82856122dd565b915061258882846122dd565b91508190509392505050565b60006020820190506125a9600083018461224d565b92915050565b60006080820190506125c4600083018761224d565b6125d1602083018661224d565b6125de6040830185612561565b81810360608301526125f0818461226b565b905095945050505050565b6000602082019050612610600083018461225c565b92915050565b6000602082019050818103600083015261263081846122a4565b905092915050565b600060208201905081810360008301526126518161230e565b9050919050565b6000602082019050818103600083015261267181612331565b9050919050565b6000602082019050818103600083015261269181612354565b9050919050565b600060208201905081810360008301526126b181612377565b9050919050565b600060208201905081810360008301526126d18161239a565b9050919050565b600060208201905081810360008301526126f1816123bd565b9050919050565b60006020820190508181036000830152612711816123e0565b9050919050565b6000602082019050818103600083015261273181612403565b9050919050565b6000602082019050818103600083015261275181612426565b9050919050565b6000602082019050818103600083015261277181612449565b9050919050565b600060208201905081810360008301526127918161246c565b9050919050565b600060208201905081810360008301526127b18161248f565b9050919050565b600060208201905081810360008301526127d1816124b2565b9050919050565b600060208201905081810360008301526127f1816124d5565b9050919050565b60006020820190508181036000830152612811816124f8565b9050919050565b600060208201905081810360008301526128318161251b565b9050919050565b600060208201905081810360008301526128518161253e565b9050919050565b600060208201905061286d6000830184612561565b92915050565b600061287d61288e565b90506128898282612ae0565b919050565b6000604051905090565b600067ffffffffffffffff8211156128b3576128b2612c47565b5b6128bc82612c8a565b9050602081019050919050565b600067ffffffffffffffff8211156128e4576128e3612c47565b5b6128ed82612c8a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061294882612a62565b915061295383612a62565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561298857612987612b8b565b5b828201905092915050565b600061299e82612a62565b91506129a983612a62565b9250826129b9576129b8612bba565b5b828204905092915050565b60006129cf82612a62565b91506129da83612a62565b9250828210156129ed576129ec612b8b565b5b828203905092915050565b6000612a0382612a42565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612a99578082015181840152602081019050612a7e565b83811115612aa8576000848401525b50505050565b60006002820490506001821680612ac657607f821691505b60208210811415612ada57612ad9612be9565b5b50919050565b612ae982612c8a565b810181811067ffffffffffffffff82111715612b0857612b07612c47565b5b80604052505050565b6000612b1c82612a62565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b4f57612b4e612b8b565b5b600182019050919050565b6000612b6582612a62565b9150612b7083612a62565b925082612b8057612b7f612bba565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b61314b816129f8565b811461315657600080fd5b50565b61316281612a0a565b811461316d57600080fd5b50565b61317981612a16565b811461318457600080fd5b50565b61319081612a62565b811461319b57600080fd5b5056fea2646970667358221220954288ba8da6b250402ccaa62b9e3d9ac21954e01e5d6bcd80f86201f3b5356a64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000084150455f6275726e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044150456200000000000000000000000000000000000000000000000000000000

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000084150455f6275726e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044150456200000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): APE_burn
Arg [1] : _symbol (string): APEb

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [3] : 4150455f6275726e000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4150456200000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

34732:2058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22383:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23328:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24887:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24410:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25777:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26187:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30700:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35133:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23022:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22752:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2375:94;;;:::i;:::-;;1724:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23497:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25180:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26443:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35664:861;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36547:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25546:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2624:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22383:305;22485:4;22537:25;22522:40;;;:11;:40;;;;:105;;;;22594:33;22579:48;;;:11;:48;;;;22522:105;:158;;;;22644:36;22668:11;22644:23;:36::i;:::-;22522:158;22502:178;;22383:305;;;:::o;23328:100::-;23382:13;23415:5;23408:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23328:100;:::o;24887:221::-;24963:7;24991:16;24999:7;24991;:16::i;:::-;24983:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25076:15;:24;25092:7;25076:24;;;;;;;;;;;;;;;;;;;;;25069:31;;24887:221;;;:::o;24410:411::-;24491:13;24507:23;24522:7;24507:14;:23::i;:::-;24491:39;;24555:5;24549:11;;:2;:11;;;;24541:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24649:5;24633:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;24658:37;24675:5;24682:12;:10;:12::i;:::-;24658:16;:37::i;:::-;24633:62;24611:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;24792:21;24801:2;24805:7;24792:8;:21::i;:::-;24480:341;24410:411;;:::o;25777:339::-;25972:41;25991:12;:10;:12::i;:::-;26005:7;25972:18;:41::i;:::-;25964:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;26080:28;26090:4;26096:2;26100:7;26080:9;:28::i;:::-;25777:339;;;:::o;26187:185::-;26325:39;26342:4;26348:2;26352:7;26325:39;;;;;;;;;;;;:16;:39::i;:::-;26187:185;;;:::o;30700:91::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30769:14:::1;30775:7;30769:5;:14::i;:::-;30700:91:::0;:::o;35133:119::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35232:8:::1;35213:16;:27;;;;;;;;;;;;:::i;:::-;;35133:119:::0;:::o;23022:239::-;23094:7;23114:13;23130:7;:16;23138:7;23130:16;;;;;;;;;;;;;;;;;;;;;23114:32;;23182:1;23165:19;;:5;:19;;;;23157:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23248:5;23241:12;;;23022:239;;;:::o;22752:208::-;22824:7;22869:1;22852:19;;:5;:19;;;;22844:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22936:9;:16;22946:5;22936:16;;;;;;;;;;;;;;;;22929:23;;22752:208;;;:::o;2375:94::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2440:21:::1;2458:1;2440:9;:21::i;:::-;2375:94::o:0;1724:87::-;1770:7;1797:6;;;;;;;;;;;1790:13;;1724:87;:::o;23497:104::-;23553:13;23586:7;23579:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23497:104;:::o;25180:295::-;25295:12;:10;:12::i;:::-;25283:24;;:8;:24;;;;25275:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25395:8;25350:18;:32;25369:12;:10;:12::i;:::-;25350:32;;;;;;;;;;;;;;;:42;25383:8;25350:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;25448:8;25419:48;;25434:12;:10;:12::i;:::-;25419:48;;;25458:8;25419:48;;;;;;:::i;:::-;;;;;;;;25180:295;;:::o;26443:328::-;26618:41;26637:12;:10;:12::i;:::-;26651:7;26618:18;:41::i;:::-;26610:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;26724:39;26738:4;26744:2;26748:7;26757:5;26724:13;:39::i;:::-;26443:328;;;;:::o;35664:861::-;35737:13;35775:16;35783:7;35775;:16::i;:::-;35767:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;35860:23;35886:10;:19;35897:7;35886:19;;;;;;;;;;;35860:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35920:18;35941:10;:8;:10::i;:::-;35920:31;;36069:1;36053:4;36047:18;:23;36043:80;;;36098:9;36091:16;;;;;;36043:80;36261:1;36241:9;36235:23;:27;36231:116;;;36314:4;36320:9;36297:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;36283:48;;;;;;36231:116;36487:4;36493:18;:7;:16;:18::i;:::-;36470:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;36456:57;;;;35664:861;;;;:::o;36547:236::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36703:20:::1;36709:3;36714:8;36703:5;:20::i;:::-;36738:33;36751:8;36761:9;36738:12;:33::i;:::-;36547:236:::0;;;:::o;25546:164::-;25643:4;25667:18;:25;25686:5;25667:25;;;;;;;;;;;;;;;:35;25693:8;25667:35;;;;;;;;;;;;;;;;;;;;;;;;;25660:42;;25546:164;;;;:::o;2624:192::-;1955:12;:10;:12::i;:::-;1944:23;;:7;:5;:7::i;:::-;:23;;;1936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2733:1:::1;2713:22;;:8;:22;;;;2705:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:19;2799:8;2789:9;:19::i;:::-;2624:192:::0;:::o;20847:157::-;20932:4;20971:25;20956:40;;;:11;:40;;;;20949:47;;20847:157;;;:::o;28281:127::-;28346:4;28398:1;28370:30;;:7;:16;28378:7;28370:16;;;;;;;;;;;;;;;;;;;;;:30;;;;28363:37;;28281:127;;;:::o;567:98::-;620:7;647:10;640:17;;567:98;:::o;32413:174::-;32515:2;32488:15;:24;32504:7;32488:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;32571:7;32567:2;32533:46;;32542:23;32557:7;32542:14;:23::i;:::-;32533:46;;;;;;;;;;;;32413:174;;:::o;28575:348::-;28668:4;28693:16;28701:7;28693;:16::i;:::-;28685:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28769:13;28785:23;28800:7;28785:14;:23::i;:::-;28769:39;;28838:5;28827:16;;:7;:16;;;:51;;;;28871:7;28847:31;;:20;28859:7;28847:11;:20::i;:::-;:31;;;28827:51;:87;;;;28882:32;28899:5;28906:7;28882:16;:32::i;:::-;28827:87;28819:96;;;28575:348;;;;:::o;31717:578::-;31876:4;31849:31;;:23;31864:7;31849:14;:23::i;:::-;:31;;;31841:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;31959:1;31945:16;;:2;:16;;;;31937:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;32015:39;32036:4;32042:2;32046:7;32015:20;:39::i;:::-;32119:29;32136:1;32140:7;32119:8;:29::i;:::-;32180:1;32161:9;:15;32171:4;32161:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;32209:1;32192:9;:13;32202:2;32192:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;32240:2;32221:7;:16;32229:7;32221:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32279:7;32275:2;32260:27;;32269:4;32260:27;;;;;;;;;;;;31717:578;;;:::o;31020:360::-;31080:13;31096:23;31111:7;31096:14;:23::i;:::-;31080:39;;31132:48;31153:5;31168:1;31172:7;31132:20;:48::i;:::-;31221:29;31238:1;31242:7;31221:8;:29::i;:::-;31283:1;31263:9;:16;31273:5;31263:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;31302:7;:16;31310:7;31302:16;;;;;;;;;;;;31295:23;;;;;;;;;;;31364:7;31360:1;31336:36;;31345:5;31336:36;;;;;;;;;;;;31069:311;31020:360;:::o;2824:173::-;2880:16;2899:6;;;;;;;;;;;2880:25;;2925:8;2916:6;;:17;;;;;;;;;;;;;;;;;;2980:8;2949:40;;2970:8;2949:40;;;;;;;;;;;;2869:128;2824:173;:::o;27653:315::-;27810:28;27820:4;27826:2;27830:7;27810:9;:28::i;:::-;27857:48;27880:4;27886:2;27890:7;27899:5;27857:22;:48::i;:::-;27849:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;27653:315;;;;:::o;35519:125::-;35579:13;35616:16;35609:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35519:125;:::o;18359:723::-;18415:13;18645:1;18636:5;:10;18632:53;;;18663:10;;;;;;;;;;;;;;;;;;;;;18632:53;18695:12;18710:5;18695:20;;18726:14;18751:78;18766:1;18758:4;:9;18751:78;;18784:8;;;;;:::i;:::-;;;;18815:2;18807:10;;;;;:::i;:::-;;;18751:78;;;18839:19;18871:6;18861:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18839:39;;18889:154;18905:1;18896:5;:10;18889:154;;18933:1;18923:11;;;;;:::i;:::-;;;19000:2;18992:5;:10;;;;:::i;:::-;18979:2;:24;;;;:::i;:::-;18966:39;;18949:6;18956;18949:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;19029:2;19020:11;;;;;:::i;:::-;;;18889:154;;;19067:6;19053:21;;;;;18359:723;;;;:::o;30259:382::-;30353:1;30339:16;;:2;:16;;;;30331:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;30412:16;30420:7;30412;:16::i;:::-;30411:17;30403:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;30474:45;30503:1;30507:2;30511:7;30474:20;:45::i;:::-;30549:1;30532:9;:13;30542:2;30532:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30580:2;30561:7;:16;30569:7;30561:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30625:7;30621:2;30600:33;;30617:1;30600:33;;;;;;;;;;;;30259:382;;:::o;35272:227::-;35376:16;35384:7;35376;:16::i;:::-;35368:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;35478:9;35456:10;:19;35467:7;35456:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;35272:227;;:::o;34523:126::-;;;;:::o;33152:799::-;33307:4;33328:15;:2;:13;;;:15::i;:::-;33324:620;;;33380:2;33364:36;;;33401:12;:10;:12::i;:::-;33415:4;33421:7;33430:5;33364:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33360:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33623:1;33606:6;:13;:18;33602:272;;;33649:60;;;;;;;;;;:::i;:::-;;;;;;;;33602:272;33824:6;33818:13;33809:6;33805:2;33801:15;33794:38;33360:529;33497:41;;;33487:51;;;:6;:51;;;;33480:58;;;;;33324:620;33928:4;33921:11;;33152:799;;;;;;;:::o;10773:387::-;10833:4;11041:12;11108:7;11096:20;11088:28;;11151:1;11144:4;:8;11137:15;;;10773:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:799::-;5707:6;5715;5723;5772:2;5760:9;5751:7;5747:23;5743:32;5740:119;;;5778:79;;:::i;:::-;5740:119;5898:1;5923:53;5968:7;5959:6;5948:9;5944:22;5923:53;:::i;:::-;5913:63;;5869:117;6025:2;6051:53;6096:7;6087:6;6076:9;6072:22;6051:53;:::i;:::-;6041:63;;5996:118;6181:2;6170:9;6166:18;6153:32;6212:18;6204:6;6201:30;6198:117;;;6234:79;;:::i;:::-;6198:117;6339:63;6394:7;6385:6;6374:9;6370:22;6339:63;:::i;:::-;6329:73;;6124:288;5620:799;;;;;:::o;6425:327::-;6483:6;6532:2;6520:9;6511:7;6507:23;6503:32;6500:119;;;6538:79;;:::i;:::-;6500:119;6658:1;6683:52;6727:7;6718:6;6707:9;6703:22;6683:52;:::i;:::-;6673:62;;6629:116;6425:327;;;;:::o;6758:349::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:63;7082:7;7073:6;7062:9;7058:22;7027:63;:::i;:::-;7017:73;;6973:127;6758:349;;;;:::o;7113:509::-;7182:6;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7385:1;7374:9;7370:17;7357:31;7415:18;7407:6;7404:30;7401:117;;;7437:79;;:::i;:::-;7401:117;7542:63;7597:7;7588:6;7577:9;7573:22;7542:63;:::i;:::-;7532:73;;7328:287;7113:509;;;;:::o;7628:329::-;7687:6;7736:2;7724:9;7715:7;7711:23;7707:32;7704:119;;;7742:79;;:::i;:::-;7704:119;7862:1;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7833:117;7628:329;;;;:::o;7963:118::-;8050:24;8068:5;8050:24;:::i;:::-;8045:3;8038:37;7963:118;;:::o;8087:109::-;8168:21;8183:5;8168:21;:::i;:::-;8163:3;8156:34;8087:109;;:::o;8202:360::-;8288:3;8316:38;8348:5;8316:38;:::i;:::-;8370:70;8433:6;8428:3;8370:70;:::i;:::-;8363:77;;8449:52;8494:6;8489:3;8482:4;8475:5;8471:16;8449:52;:::i;:::-;8526:29;8548:6;8526:29;:::i;:::-;8521:3;8517:39;8510:46;;8292:270;8202:360;;;;:::o;8568:364::-;8656:3;8684:39;8717:5;8684:39;:::i;:::-;8739:71;8803:6;8798:3;8739:71;:::i;:::-;8732:78;;8819:52;8864:6;8859:3;8852:4;8845:5;8841:16;8819:52;:::i;:::-;8896:29;8918:6;8896:29;:::i;:::-;8891:3;8887:39;8880:46;;8660:272;8568:364;;;;:::o;8938:377::-;9044:3;9072:39;9105:5;9072:39;:::i;:::-;9127:89;9209:6;9204:3;9127:89;:::i;:::-;9120:96;;9225:52;9270:6;9265:3;9258:4;9251:5;9247:16;9225:52;:::i;:::-;9302:6;9297:3;9293:16;9286:23;;9048:267;8938:377;;;;:::o;9321:366::-;9463:3;9484:67;9548:2;9543:3;9484:67;:::i;:::-;9477:74;;9560:93;9649:3;9560:93;:::i;:::-;9678:2;9673:3;9669:12;9662:19;;9321:366;;;:::o;9693:::-;9835:3;9856:67;9920:2;9915:3;9856:67;:::i;:::-;9849:74;;9932:93;10021:3;9932:93;:::i;:::-;10050:2;10045:3;10041:12;10034:19;;9693:366;;;:::o;10065:::-;10207:3;10228:67;10292:2;10287:3;10228:67;:::i;:::-;10221:74;;10304:93;10393:3;10304:93;:::i;:::-;10422:2;10417:3;10413:12;10406:19;;10065:366;;;:::o;10437:::-;10579:3;10600:67;10664:2;10659:3;10600:67;:::i;:::-;10593:74;;10676:93;10765:3;10676:93;:::i;:::-;10794:2;10789:3;10785:12;10778:19;;10437:366;;;:::o;10809:::-;10951:3;10972:67;11036:2;11031:3;10972:67;:::i;:::-;10965:74;;11048:93;11137:3;11048:93;:::i;:::-;11166:2;11161:3;11157:12;11150:19;;10809:366;;;:::o;11181:::-;11323:3;11344:67;11408:2;11403:3;11344:67;:::i;:::-;11337:74;;11420:93;11509:3;11420:93;:::i;:::-;11538:2;11533:3;11529:12;11522:19;;11181:366;;;:::o;11553:::-;11695:3;11716:67;11780:2;11775:3;11716:67;:::i;:::-;11709:74;;11792:93;11881:3;11792:93;:::i;:::-;11910:2;11905:3;11901:12;11894:19;;11553:366;;;:::o;11925:::-;12067:3;12088:67;12152:2;12147:3;12088:67;:::i;:::-;12081:74;;12164:93;12253:3;12164:93;:::i;:::-;12282:2;12277:3;12273:12;12266:19;;11925:366;;;:::o;12297:::-;12439:3;12460:67;12524:2;12519:3;12460:67;:::i;:::-;12453:74;;12536:93;12625:3;12536:93;:::i;:::-;12654:2;12649:3;12645:12;12638:19;;12297:366;;;:::o;12669:::-;12811:3;12832:67;12896:2;12891:3;12832:67;:::i;:::-;12825:74;;12908:93;12997:3;12908:93;:::i;:::-;13026:2;13021:3;13017:12;13010:19;;12669:366;;;:::o;13041:::-;13183:3;13204:67;13268:2;13263:3;13204:67;:::i;:::-;13197:74;;13280:93;13369:3;13280:93;:::i;:::-;13398:2;13393:3;13389:12;13382:19;;13041:366;;;:::o;13413:::-;13555:3;13576:67;13640:2;13635:3;13576:67;:::i;:::-;13569:74;;13652:93;13741:3;13652:93;:::i;:::-;13770:2;13765:3;13761:12;13754:19;;13413:366;;;:::o;13785:::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:::-;14299:3;14320:67;14384:2;14379:3;14320:67;:::i;:::-;14313:74;;14396:93;14485:3;14396:93;:::i;:::-;14514:2;14509:3;14505:12;14498:19;;14157:366;;;:::o;14529:::-;14671:3;14692:67;14756:2;14751:3;14692:67;:::i;:::-;14685:74;;14768:93;14857:3;14768:93;:::i;:::-;14886:2;14881:3;14877:12;14870:19;;14529:366;;;:::o;14901:::-;15043:3;15064:67;15128:2;15123:3;15064:67;:::i;:::-;15057:74;;15140:93;15229:3;15140:93;:::i;:::-;15258:2;15253:3;15249:12;15242:19;;14901:366;;;:::o;15273:::-;15415:3;15436:67;15500:2;15495:3;15436:67;:::i;:::-;15429:74;;15512:93;15601:3;15512:93;:::i;:::-;15630:2;15625:3;15621:12;15614:19;;15273:366;;;:::o;15645:118::-;15732:24;15750:5;15732:24;:::i;:::-;15727:3;15720:37;15645:118;;:::o;15769:435::-;15949:3;15971:95;16062:3;16053:6;15971:95;:::i;:::-;15964:102;;16083:95;16174:3;16165:6;16083:95;:::i;:::-;16076:102;;16195:3;16188:10;;15769:435;;;;;:::o;16210:222::-;16303:4;16341:2;16330:9;16326:18;16318:26;;16354:71;16422:1;16411:9;16407:17;16398:6;16354:71;:::i;:::-;16210:222;;;;:::o;16438:640::-;16633:4;16671:3;16660:9;16656:19;16648:27;;16685:71;16753:1;16742:9;16738:17;16729:6;16685:71;:::i;:::-;16766:72;16834:2;16823:9;16819:18;16810:6;16766:72;:::i;:::-;16848;16916:2;16905:9;16901:18;16892:6;16848:72;:::i;:::-;16967:9;16961:4;16957:20;16952:2;16941:9;16937:18;16930:48;16995:76;17066:4;17057:6;16995:76;:::i;:::-;16987:84;;16438:640;;;;;;;:::o;17084:210::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:65;17284:1;17273:9;17269:17;17260:6;17222:65;:::i;:::-;17084:210;;;;:::o;17300:313::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:78;17601:4;17592:6;17528:78;:::i;:::-;17520:86;;17300:313;;;;:::o;17619:419::-;17785:4;17823:2;17812:9;17808:18;17800:26;;17872:9;17866:4;17862:20;17858:1;17847:9;17843:17;17836:47;17900:131;18026:4;17900:131;:::i;:::-;17892:139;;17619:419;;;:::o;18044:::-;18210:4;18248:2;18237:9;18233:18;18225:26;;18297:9;18291:4;18287:20;18283:1;18272:9;18268:17;18261:47;18325:131;18451:4;18325:131;:::i;:::-;18317:139;;18044:419;;;:::o;18469:::-;18635:4;18673:2;18662:9;18658:18;18650:26;;18722:9;18716:4;18712:20;18708:1;18697:9;18693:17;18686:47;18750:131;18876:4;18750:131;:::i;:::-;18742:139;;18469:419;;;:::o;18894:::-;19060:4;19098:2;19087:9;19083:18;19075:26;;19147:9;19141:4;19137:20;19133:1;19122:9;19118:17;19111:47;19175:131;19301:4;19175:131;:::i;:::-;19167:139;;18894:419;;;:::o;19319:::-;19485:4;19523:2;19512:9;19508:18;19500:26;;19572:9;19566:4;19562:20;19558:1;19547:9;19543:17;19536:47;19600:131;19726:4;19600:131;:::i;:::-;19592:139;;19319:419;;;:::o;19744:::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19997:9;19991:4;19987:20;19983:1;19972:9;19968:17;19961:47;20025:131;20151:4;20025:131;:::i;:::-;20017:139;;19744:419;;;:::o;20169:::-;20335:4;20373:2;20362:9;20358:18;20350:26;;20422:9;20416:4;20412:20;20408:1;20397:9;20393:17;20386:47;20450:131;20576:4;20450:131;:::i;:::-;20442:139;;20169:419;;;:::o;20594:::-;20760:4;20798:2;20787:9;20783:18;20775:26;;20847:9;20841:4;20837:20;20833:1;20822:9;20818:17;20811:47;20875:131;21001:4;20875:131;:::i;:::-;20867:139;;20594:419;;;:::o;21019:::-;21185:4;21223:2;21212:9;21208:18;21200:26;;21272:9;21266:4;21262:20;21258:1;21247:9;21243:17;21236:47;21300:131;21426:4;21300:131;:::i;:::-;21292:139;;21019:419;;;:::o;21444:::-;21610:4;21648:2;21637:9;21633:18;21625:26;;21697:9;21691:4;21687:20;21683:1;21672:9;21668:17;21661:47;21725:131;21851:4;21725:131;:::i;:::-;21717:139;;21444:419;;;:::o;21869:::-;22035:4;22073:2;22062:9;22058:18;22050:26;;22122:9;22116:4;22112:20;22108:1;22097:9;22093:17;22086:47;22150:131;22276:4;22150:131;:::i;:::-;22142:139;;21869:419;;;:::o;22294:::-;22460:4;22498:2;22487:9;22483:18;22475:26;;22547:9;22541:4;22537:20;22533:1;22522:9;22518:17;22511:47;22575:131;22701:4;22575:131;:::i;:::-;22567:139;;22294:419;;;:::o;22719:::-;22885:4;22923:2;22912:9;22908:18;22900:26;;22972:9;22966:4;22962:20;22958:1;22947:9;22943:17;22936:47;23000:131;23126:4;23000:131;:::i;:::-;22992:139;;22719:419;;;:::o;23144:::-;23310:4;23348:2;23337:9;23333:18;23325:26;;23397:9;23391:4;23387:20;23383:1;23372:9;23368:17;23361:47;23425:131;23551:4;23425:131;:::i;:::-;23417:139;;23144:419;;;:::o;23569:::-;23735:4;23773:2;23762:9;23758:18;23750:26;;23822:9;23816:4;23812:20;23808:1;23797:9;23793:17;23786:47;23850:131;23976:4;23850:131;:::i;:::-;23842:139;;23569:419;;;:::o;23994:::-;24160:4;24198:2;24187:9;24183:18;24175:26;;24247:9;24241:4;24237:20;24233:1;24222:9;24218:17;24211:47;24275:131;24401:4;24275:131;:::i;:::-;24267:139;;23994:419;;;:::o;24419:::-;24585:4;24623:2;24612:9;24608:18;24600:26;;24672:9;24666:4;24662:20;24658:1;24647:9;24643:17;24636:47;24700:131;24826:4;24700:131;:::i;:::-;24692:139;;24419:419;;;:::o;24844:222::-;24937:4;24975:2;24964:9;24960:18;24952:26;;24988:71;25056:1;25045:9;25041:17;25032:6;24988:71;:::i;:::-;24844:222;;;;:::o;25072:129::-;25106:6;25133:20;;:::i;:::-;25123:30;;25162:33;25190:4;25182:6;25162:33;:::i;:::-;25072:129;;;:::o;25207:75::-;25240:6;25273:2;25267:9;25257:19;;25207:75;:::o;25288:307::-;25349:4;25439:18;25431:6;25428:30;25425:56;;;25461:18;;:::i;:::-;25425:56;25499:29;25521:6;25499:29;:::i;:::-;25491:37;;25583:4;25577;25573:15;25565:23;;25288:307;;;:::o;25601:308::-;25663:4;25753:18;25745:6;25742:30;25739:56;;;25775:18;;:::i;:::-;25739:56;25813:29;25835:6;25813:29;:::i;:::-;25805:37;;25897:4;25891;25887:15;25879:23;;25601:308;;;:::o;25915:98::-;25966:6;26000:5;25994:12;25984:22;;25915:98;;;:::o;26019:99::-;26071:6;26105:5;26099:12;26089:22;;26019:99;;;:::o;26124:168::-;26207:11;26241:6;26236:3;26229:19;26281:4;26276:3;26272:14;26257:29;;26124:168;;;;:::o;26298:169::-;26382:11;26416:6;26411:3;26404:19;26456:4;26451:3;26447:14;26432:29;;26298:169;;;;:::o;26473:148::-;26575:11;26612:3;26597:18;;26473:148;;;;:::o;26627:305::-;26667:3;26686:20;26704:1;26686:20;:::i;:::-;26681:25;;26720:20;26738:1;26720:20;:::i;:::-;26715:25;;26874:1;26806:66;26802:74;26799:1;26796:81;26793:107;;;26880:18;;:::i;:::-;26793:107;26924:1;26921;26917:9;26910:16;;26627:305;;;;:::o;26938:185::-;26978:1;26995:20;27013:1;26995:20;:::i;:::-;26990:25;;27029:20;27047:1;27029:20;:::i;:::-;27024:25;;27068:1;27058:35;;27073:18;;:::i;:::-;27058:35;27115:1;27112;27108:9;27103:14;;26938:185;;;;:::o;27129:191::-;27169:4;27189:20;27207:1;27189:20;:::i;:::-;27184:25;;27223:20;27241:1;27223:20;:::i;:::-;27218:25;;27262:1;27259;27256:8;27253:34;;;27267:18;;:::i;:::-;27253:34;27312:1;27309;27305:9;27297:17;;27129:191;;;;:::o;27326:96::-;27363:7;27392:24;27410:5;27392:24;:::i;:::-;27381:35;;27326:96;;;:::o;27428:90::-;27462:7;27505:5;27498:13;27491:21;27480:32;;27428:90;;;:::o;27524:149::-;27560:7;27600:66;27593:5;27589:78;27578:89;;27524:149;;;:::o;27679:126::-;27716:7;27756:42;27749:5;27745:54;27734:65;;27679:126;;;:::o;27811:77::-;27848:7;27877:5;27866:16;;27811:77;;;:::o;27894:154::-;27978:6;27973:3;27968;27955:30;28040:1;28031:6;28026:3;28022:16;28015:27;27894:154;;;:::o;28054:307::-;28122:1;28132:113;28146:6;28143:1;28140:13;28132:113;;;28231:1;28226:3;28222:11;28216:18;28212:1;28207:3;28203:11;28196:39;28168:2;28165:1;28161:10;28156:15;;28132:113;;;28263:6;28260:1;28257:13;28254:101;;;28343:1;28334:6;28329:3;28325:16;28318:27;28254:101;28103:258;28054:307;;;:::o;28367:320::-;28411:6;28448:1;28442:4;28438:12;28428:22;;28495:1;28489:4;28485:12;28516:18;28506:81;;28572:4;28564:6;28560:17;28550:27;;28506:81;28634:2;28626:6;28623:14;28603:18;28600:38;28597:84;;;28653:18;;:::i;:::-;28597:84;28418:269;28367:320;;;:::o;28693:281::-;28776:27;28798:4;28776:27;:::i;:::-;28768:6;28764:40;28906:6;28894:10;28891:22;28870:18;28858:10;28855:34;28852:62;28849:88;;;28917:18;;:::i;:::-;28849:88;28957:10;28953:2;28946:22;28736:238;28693:281;;:::o;28980:233::-;29019:3;29042:24;29060:5;29042:24;:::i;:::-;29033:33;;29088:66;29081:5;29078:77;29075:103;;;29158:18;;:::i;:::-;29075:103;29205:1;29198:5;29194:13;29187:20;;28980:233;;;:::o;29219:176::-;29251:1;29268:20;29286:1;29268:20;:::i;:::-;29263:25;;29302:20;29320:1;29302:20;:::i;:::-;29297:25;;29341:1;29331:35;;29346:18;;:::i;:::-;29331:35;29387:1;29384;29380:9;29375:14;;29219:176;;;;:::o;29401:180::-;29449:77;29446:1;29439:88;29546:4;29543:1;29536:15;29570:4;29567:1;29560:15;29587:180;29635:77;29632:1;29625:88;29732:4;29729:1;29722:15;29756:4;29753:1;29746:15;29773:180;29821:77;29818:1;29811:88;29918:4;29915:1;29908:15;29942:4;29939:1;29932:15;29959:180;30007:77;30004:1;29997:88;30104:4;30101:1;30094:15;30128:4;30125:1;30118:15;30145:180;30193:77;30190:1;30183:88;30290:4;30287:1;30280:15;30314:4;30311:1;30304:15;30331:117;30440:1;30437;30430:12;30454:117;30563:1;30560;30553:12;30577:117;30686:1;30683;30676:12;30700:117;30809:1;30806;30799:12;30823:102;30864:6;30915:2;30911:7;30906:2;30899:5;30895:14;30891:28;30881:38;;30823:102;;;:::o;30931:237::-;31071:34;31067:1;31059:6;31055:14;31048:58;31140:20;31135:2;31127:6;31123:15;31116:45;30931:237;:::o;31174:225::-;31314:34;31310:1;31302:6;31298:14;31291:58;31383:8;31378:2;31370:6;31366:15;31359:33;31174:225;:::o;31405:178::-;31545:30;31541:1;31533:6;31529:14;31522:54;31405:178;:::o;31589:223::-;31729:34;31725:1;31717:6;31713:14;31706:58;31798:6;31793:2;31785:6;31781:15;31774:31;31589:223;:::o;31818:175::-;31958:27;31954:1;31946:6;31942:14;31935:51;31818:175;:::o;31999:231::-;32139:34;32135:1;32127:6;32123:14;32116:58;32208:14;32203:2;32195:6;32191:15;32184:39;31999:231;:::o;32236:243::-;32376:34;32372:1;32364:6;32360:14;32353:58;32445:26;32440:2;32432:6;32428:15;32421:51;32236:243;:::o;32485:229::-;32625:34;32621:1;32613:6;32609:14;32602:58;32694:12;32689:2;32681:6;32677:15;32670:37;32485:229;:::o;32720:228::-;32860:34;32856:1;32848:6;32844:14;32837:58;32929:11;32924:2;32916:6;32912:15;32905:36;32720:228;:::o;32954:182::-;33094:34;33090:1;33082:6;33078:14;33071:58;32954:182;:::o;33142:231::-;33282:34;33278:1;33270:6;33266:14;33259:58;33351:14;33346:2;33338:6;33334:15;33327:39;33142:231;:::o;33379:::-;33519:34;33515:1;33507:6;33503:14;33496:58;33588:14;33583:2;33575:6;33571:15;33564:39;33379:231;:::o;33616:182::-;33756:34;33752:1;33744:6;33740:14;33733:58;33616:182;:::o;33804:228::-;33944:34;33940:1;33932:6;33928:14;33921:58;34013:11;34008:2;34000:6;33996:15;33989:36;33804:228;:::o;34038:234::-;34178:34;34174:1;34166:6;34162:14;34155:58;34247:17;34242:2;34234:6;34230:15;34223:42;34038:234;:::o;34278:220::-;34418:34;34414:1;34406:6;34402:14;34395:58;34487:3;34482:2;34474:6;34470:15;34463:28;34278:220;:::o;34504:236::-;34644:34;34640:1;34632:6;34628:14;34621:58;34713:19;34708:2;34700:6;34696:15;34689:44;34504:236;:::o;34746:122::-;34819:24;34837:5;34819:24;:::i;:::-;34812:5;34809:35;34799:63;;34858:1;34855;34848:12;34799:63;34746:122;:::o;34874:116::-;34944:21;34959:5;34944:21;:::i;:::-;34937:5;34934:32;34924:60;;34980:1;34977;34970:12;34924:60;34874:116;:::o;34996:120::-;35068:23;35085:5;35068:23;:::i;:::-;35061:5;35058:34;35048:62;;35106:1;35103;35096:12;35048:62;34996:120;:::o;35122:122::-;35195:24;35213:5;35195:24;:::i;:::-;35188:5;35185:35;35175:63;;35234:1;35231;35224:12;35175:63;35122:122;:::o

Swarm Source

ipfs://954288ba8da6b250402ccaa62b9e3d9ac21954e01e5d6bcd80f86201f3b5356a
Loading