ERC-721
Overview
Max Total Supply
1,308 SBFCVX
Holders
407
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 SBFCVXLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SBFC_VX
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
// _ _ _ _ _ _ _ _ // / /\ / /\ /\ \ /\ \ /\ \ _ / /\/_/\ /\ \ // / / \ / / \ / \ \ / \ \ \ \ \ /_/ / /\ \ \ \ \_\ // / / /\ \__ / / /\ \ / /\ \ \ / /\ \ \ \ \ \ \___\/ \ \ \__/ / / // / / /\ \___\ / / /\ \ \ / / /\ \_\ / / /\ \ \ / / / \ \ \ \ \__ \/_/ // \ \ \ \/___// / /\ \_\ \ / /_/_ \/_// / / \ \_\ \ \ \ \_\ \ \/_/\__/\ // \ \ \ / / /\ \ \___\ / /____/\ / / / \/_/ \ \ \ / / / _/\/__\ \ // _ \ \ \ / / / \ \ \__/ / /\____\/ / / / \ \ \/ / / / _/_/\ \ \ // /_/\__/ / / / / /____\_\ \ / / / / / /________ \ \ \/ / / / / \ \ \ // \ \/___/ / / / /__________\/ / / / / /_________\ \ \ / / / / /_/ / // \_____\/ \/_____________/\/_/ \/____________/ \_\/ \/_/ \_\/ // // SPDX-License-Identifier: MIT // sharkboyfightclub.com pragma solidity ^0.8.7; import "./ERC721A.sol"; interface NFTContract { function ownerOf(uint256 tokenId) external view returns (address owner); function balanceOf(address owner) external view returns (uint256 balance); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); } interface LOXContract { function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } contract SBFC_VX is Ownable, ERC721A, ReentrancyGuard { using Strings for uint256; uint256 public PRICE_ETH_IN_PUBLICSALE = 15*10**16; //0.15 ether uint256 public PRICE_ETH_IN_WHITELIST = 1*10**17; //0.1 ether uint256 public PRICE_ETH_IN_PRESALE = 1*10**17; //0.1 ether uint256 public PRICE_LOX_TILL_1_400 = 10*10**18; //10 lOX uint256 public PRICE_LOX_401_2500 = 30*10**18; //30 lox uint256 public PRICE_LOX_2501_8888 = 50*10**18; //50 lox uint256 private constant TotalCollectionSize_ = 8888; uint256 private constant MaxMintPerBatch_ = 50; string private _baseTokenURI; string private _URIExtension = ".json"; bool public isPresaleOn = true; bool public isPublicSaleOn = false; bool public isWhitelistPriceOn = true; mapping(uint256=>uint256) public vxNftToSbfcNft; mapping(uint256=>bool) public isNftMintedForThisId; NFTContract private nftContract; LOXContract private loxContract; constructor(string memory _baseUri, address sbfcContractAddress, address loxContractAddress) ERC721A("Shark Boy Fight Club VX", "SBFCVX", MaxMintPerBatch_, TotalCollectionSize_) { _baseTokenURI = _baseUri; isPresaleOn = true; nftContract = NFTContract(sbfcContractAddress); loxContract = LOXContract(loxContractAddress); } modifier callerIsUser() { require(tx.origin == msg.sender, "Please mint at the official website"); _; } function mintPresale(uint256[] memory sbfcNftIds,bool withLOX) external payable callerIsUser { require(isPresaleOn, "Minting will be starting shortly."); uint256 totalNft = totalSupply(); for (uint256 i = 0; i < sbfcNftIds.length; i++) { require(nftContract.ownerOf(sbfcNftIds[i]) == msg.sender, "You don't own this NFT"); require(!isNftMintedForThisId[sbfcNftIds[i]], "This Token ID is already minted"); vxNftToSbfcNft[totalNft+i] = sbfcNftIds[i]; isNftMintedForThisId[sbfcNftIds[i]] = true; if (withLOX) { if (sbfcNftIds[i] < 401) { require(loxContract.allowance(msg.sender, address(this)) >= PRICE_LOX_TILL_1_400); require(loxContract.transferFrom(msg.sender, address(this), PRICE_LOX_TILL_1_400)); } else if (sbfcNftIds[i] <= 2500) { require(loxContract.allowance(msg.sender, address(this)) >= PRICE_LOX_401_2500); require(loxContract.transferFrom(msg.sender, address(this), PRICE_LOX_401_2500)); } else if (sbfcNftIds[i] <= 8888) { require(loxContract.allowance(msg.sender, address(this)) >= PRICE_LOX_2501_8888); require(loxContract.transferFrom(msg.sender, address(this), PRICE_LOX_2501_8888)); } } } if (!withLOX) { require(msg.value >= PRICE_ETH_IN_PRESALE * sbfcNftIds.length, "You need more ETH to mint."); } _safeMint(msg.sender, sbfcNftIds.length); } function mintPublicSale(uint256[] memory sbfcNftIds) external payable callerIsUser { require(isPublicSaleOn, "Minting will be starting shortly."); uint256 totalNft = totalSupply(); if (isWhitelistPriceOn) { require(msg.value >= PRICE_ETH_IN_WHITELIST * sbfcNftIds.length, "You need more ETH to mint."); } else { require(msg.value >= PRICE_ETH_IN_PUBLICSALE * sbfcNftIds.length, "You need more ETH to mint."); } for (uint256 i = 0; i < sbfcNftIds.length; i++) { require(!isNftMintedForThisId[sbfcNftIds[i]], "This Token ID is already minted"); vxNftToSbfcNft[totalNft+i] = sbfcNftIds[i]; isNftMintedForThisId[sbfcNftIds[i]] = true; } _safeMint(msg.sender, sbfcNftIds.length); } function mintPublicSaleDirect(uint256 howMuch) external payable callerIsUser { require(isPublicSaleOn, "Minting will be starting shortly."); if (isWhitelistPriceOn) { require(msg.value >= PRICE_ETH_IN_WHITELIST * howMuch, "You need more ETH to mint."); } else { require(msg.value >= PRICE_ETH_IN_PUBLICSALE * howMuch, "You need more ETH to mint."); } uint256 totalNft = totalSupply(); uint256[] memory sbfcIdArray = getNotMintedIds(howMuch); for (uint256 i = 0; i < sbfcIdArray.length; i++) { require(!isNftMintedForThisId[sbfcIdArray[i]], "This Token ID is already minted"); require(sbfcIdArray[i] > 0, "This Token ID is already minted"); vxNftToSbfcNft[totalNft+i] = sbfcIdArray[i]; isNftMintedForThisId[sbfcIdArray[i]] = true; } _safeMint(msg.sender, sbfcIdArray.length); } function getNotMintedIds(uint256 howMuch) public view returns(uint256[] memory) { uint256[] memory _a = new uint256[](howMuch); uint256 _id = 0; for (uint256 i = 1; i <= 8888; i++) { if (!isNftMintedForThisId[i]){ _a[_id] = i; _id ++; if(_id >= howMuch){ break; } } } return _a; } function getAllVxTokensIdOfUser(address _user) public view returns(uint256[] memory) { uint256 totalNftsUser = balanceOf(_user); uint256[] memory _allNftsArray = new uint256[](totalNftsUser); for (uint256 i = 0; i < totalNftsUser; i++) { uint256 _nft = tokenOfOwnerByIndex(_user,i); _allNftsArray[i] = _nft; } return _allNftsArray; } function getAllVxTokensSbfcIdOfUser(address _user) public view returns(uint256[] memory) { uint256 totalNftsUser = balanceOf(_user); uint256[] memory _allNftsArray = new uint256[](totalNftsUser); for (uint256 i = 0; i < totalNftsUser; i++) { uint256 _nft = tokenOfOwnerByIndex(_user,i); _allNftsArray[i] = vxNftToSbfcNft[_nft]; } return _allNftsArray; } function getAllSbfcNftsUserHave(address _user) public view returns(uint256[] memory) { uint256 totalNftsUser = nftContract.balanceOf(_user); uint256[] memory _allNftsArray = new uint256[](totalNftsUser); for (uint256 i = 0; i < totalNftsUser; i++) { uint256 _nft = nftContract.tokenOfOwnerByIndex(_user,i); _allNftsArray[i] = _nft; } return _allNftsArray; } 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, vxNftToSbfcNft[tokenId].toString(),_getUriExtension())) : ""; } function _getUriExtension() internal view virtual override returns (string memory) { return _URIExtension; } function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) { return ownershipOf(tokenId); } function probablyNothing() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed."); } function LoxBack(LOXContract _tokenAddress, address _user,uint256 _amount) external onlyOwner nonReentrant { _tokenAddress.transfer(_user,_amount); } function FlipPublicSale() external onlyOwner { isPublicSaleOn = !isPublicSaleOn; } function FlipPreSale() external onlyOwner { isPresaleOn = !isPresaleOn; } function FlipWhitelistSystem() external onlyOwner { isWhitelistPriceOn = !isWhitelistPriceOn; } function setBaseURI(string memory baseURI) external onlyOwner { _baseTokenURI = baseURI; } function setBaseURIExtension(NFTContract _address) external onlyOwner { nftContract = _address; } function setBaseURI(LOXContract _address) external onlyOwner { loxContract = _address; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } /** * @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); } } /** * @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; } } /** * @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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @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); } } } } /** * @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); } /** * @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); } /** * @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; } } /** * @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; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) /** * @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); } // File: contracts/ERC721A.sol /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..). * * Assumes the number of issuable tokens (collection size) is capped and fits in a uint128. * * Does not support burning tokens to address(0). */ contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 private currentIndex = 0; uint256 internal immutable collectionSize; uint256 internal immutable maxBatchSize; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details. mapping(uint256 => TokenOwnership) private _ownerships; // Mapping owner address to address data mapping(address => AddressData) private _addressData; // 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 * `maxBatchSize` refers to how much a minter can mint at a time. * `collectionSize_` refers to how many tokens are in the collection. */ constructor( string memory name_, string memory symbol_, uint256 maxBatchSize_, uint256 collectionSize_ ) { require( collectionSize_ > 0, "ERC721A: collection must have a nonzero supply" ); require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero"); _name = name_; _symbol = symbol_; maxBatchSize = maxBatchSize_; collectionSize = collectionSize_; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view override returns (uint256) { return currentIndex; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), "ERC721A: global index out of bounds"); return index; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first. * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), "ERC721A: owner index out of bounds"); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx = 0; address currOwnershipAddr = address(0); for (uint256 i = 0; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } revert("ERC721A: unable to get token of owner by index"); } /** * @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 || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), "ERC721A: balance query for the zero address"); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require( owner != address(0), "ERC721A: number minted query for the zero address" ); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), "ERC721A: owner query for nonexistent token"); uint256 lowestTokenToCheck; if (tokenId >= maxBatchSize) { lowestTokenToCheck = tokenId - maxBatchSize + 1; } for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } revert("ERC721A: unable to determine the owner of token"); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } /** * @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(),_getUriExtension())) : ""; } /** * @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 ""; } function _getUriExtension() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, "ERC721A: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all" ); _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), "ERC721A: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), "ERC721A: 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 override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } /** * @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`), */ function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - there must be `quantity` tokens remaining unminted in the total collection. * - `to` cannot be the zero address. * - `quantity` cannot be larger than the max batch size. * * Emits a {Transfer} event. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering. require(!_exists(startTokenId), "ERC721A: token already minted"); require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); AddressData memory addressData = _addressData[to]; _addressData[to] = AddressData( addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity) ); _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 updatedIndex = startTokenId; for (uint256 i = 0; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); require( _checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); updatedIndex++; } currentIndex = updatedIndex; _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Transfers `tokenId` from `from` to `to`. * * 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 ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require( isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved" ); require( prevOwnership.addr == from, "ERC721A: transfer from incorrect owner" ); require(to != address(0), "ERC721A: transfer to the zero address"); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId] = TokenOwnership( prevOwnership.addr, prevOwnership.startTimestamp ); } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } uint256 public nextOwnerToExplicitlySet = 0; /** * @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf(). */ function _setOwnersExplicit(uint256 quantity) internal { uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet; require(quantity > 0, "quantity must be nonzero"); uint256 endIndex = oldNextOwnerToSet + quantity - 1; if (endIndex > collectionSize - 1) { endIndex = collectionSize - 1; } // We know if the last one in the group exists, all in the group exist, due to serial ordering. require(_exists(endIndex), "not enough minted yet for this cleanup"); for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) { if (_ownerships[i].addr == address(0)) { TokenOwnership memory ownership = ownershipOf(i); _ownerships[i] = TokenOwnership( ownership.addr, ownership.startTimestamp ); } } nextOwnerToExplicitlySet = endIndex + 1; } /** * @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(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721A: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * 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`. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes * minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_baseUri","type":"string"},{"internalType":"address","name":"sbfcContractAddress","type":"address"},{"internalType":"address","name":"loxContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FlipPreSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"FlipPublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"FlipWhitelistSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract LOXContract","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"LoxBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"PRICE_ETH_IN_PRESALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_ETH_IN_PUBLICSALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_ETH_IN_WHITELIST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_LOX_2501_8888","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_LOX_401_2500","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_LOX_TILL_1_400","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllSbfcNftsUserHave","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllVxTokensIdOfUser","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllVxTokensSbfcIdOfUser","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMuch","type":"uint256"}],"name":"getNotMintedIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isNftMintedForThisId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPresaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicSaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWhitelistPriceOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"sbfcNftIds","type":"uint256[]"},{"internalType":"bool","name":"withLOX","type":"bool"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"sbfcNftIds","type":"uint256[]"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"howMuch","type":"uint256"}],"name":"mintPublicSaleDirect","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"probablyNothing","outputs":[],"stateMutability":"nonpayable","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":"contract LOXContract","name":"_address","type":"address"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract NFTContract","name":"_address","type":"address"}],"name":"setBaseURIExtension","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vxNftToSbfcNft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60006001819055600855670214e8348c4f0000600a5567016345785d8a0000600b819055600c55678ac7230489e80000600d556801a055690d9db80000600e556802b5e3af16b1880000600f55610100604052600560c081905264173539b7b760d91b60e0908152620000769160119190620002e1565b506012805462ffffff1916620100011790553480156200009557600080fd5b5060405162003be238038062003be2833981016040819052620000b891620003a4565b6040518060400160405280601781526020017f536861726b20426f7920466967687420436c7562205658000000000000000000815250604051806040016040528060068152602001650a6848c86acb60d31b81525060326122b86200012c620001266200028d60201b60201c565b62000291565b60008111620001995760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b60008211620001fb5760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b606482015260840162000190565b835162000210906002906020870190620002e1565b50825162000226906003906020860190620002e1565b5060a0919091526080525050600160095582516200024c906010906020860190620002e1565b506012805460ff19166001179055601580546001600160a01b039384166001600160a01b0319918216179091556016805492909316911617905550620004fa565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620002ef90620004a7565b90600052602060002090601f0160209004810192826200031357600085556200035e565b82601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b5b808211156200036c576000815560010162000371565b80516001600160a01b03811681146200039f57600080fd5b919050565b600080600060608486031215620003ba57600080fd5b83516001600160401b0380821115620003d257600080fd5b818601915086601f830112620003e757600080fd5b815181811115620003fc57620003fc620004e4565b604051601f8201601f19908116603f01168101908382118183101715620004275762000427620004e4565b816040528281526020935089848487010111156200044457600080fd5b600091505b8282101562000468578482018401518183018501529083019062000449565b828211156200047a5760008484830101525b96506200048c91505086820162000387565b935050506200049e6040850162000387565b90509250925092565b600181811c90821680620004bc57607f821691505b60208210811415620004de57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a0516136b76200052b6000396000818161266b015281816126950152612b800152600050506136b76000f3fe6080604052600436106102935760003560e01c80637f8e1aa21161015a578063c040e15d116100c1578063dc33e6811161007a578063dc33e681146107c2578063e5e7781a146107e2578063e6df0a1e146107f5578063e985e9c51461080b578063ebd53c3f14610854578063f2fde38b1461087457600080fd5b8063c040e15d14610738578063c7141d001461074e578063c87b56dd14610764578063cb1070c614610784578063d7224ba014610799578063d754c28f146107af57600080fd5b80639231ab2a116101135780639231ab2a1461066d57806395d89b41146106ba578063a22cb465146106cf578063b068b898146106ef578063b88d4fde14610702578063bdb3e5a11461072257600080fd5b80637f8e1aa2146105ba57806386be53d3146105da578063882b08dd146105f45780638a706818146106245780638da5cb5b146106395780638e14ea931461065757600080fd5b80632f745c59116101fe578063581355bd116101b7578063581355bd146104f85780636352211e14610518578063644082e01461053857806370a0823114610558578063715018a6146105785780637bb76dab1461058d57600080fd5b80632f745c59146104395780633f5e47411461045957806342842e0e146104785780634f6ccce71461049857806355f804b3146104b8578063579d8542146104d857600080fd5b8063095ea7b311610250578063095ea7b31461038b5780630a2a6f8c146103ab57806315250a92146103cf57806318160ddd146103e457806323b872dd146103f95780632db32ba71461041957600080fd5b806301ffc9a714610298578063020deb66146102cd57806306fdde03146102e45780630783daaa14610306578063081812fc146103265780630899151a1461035e575b600080fd5b3480156102a457600080fd5b506102b86102b336600461312d565b610894565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e2610901565b005b3480156102f057600080fd5b506102f9610951565b6040516102c491906132d1565b34801561031257600080fd5b506102e2610321366004612f09565b6109e3565b34801561033257600080fd5b506103466103413660046131af565b610a2f565b6040516001600160a01b0390911681526020016102c4565b34801561036a57600080fd5b5061037e6103793660046131af565b610aba565b6040516102c4919061328d565b34801561039757600080fd5b506102e26103a636600461306a565b610b78565b3480156103b757600080fd5b506103c1600a5481565b6040519081526020016102c4565b3480156103db57600080fd5b506102e2610c90565b3480156103f057600080fd5b506001546103c1565b34801561040557600080fd5b506102e2610414366004612f7c565b610cce565b34801561042557600080fd5b5061037e610434366004612f09565b610cd9565b34801561044557600080fd5b506103c161045436600461306a565b610d80565b34801561046557600080fd5b506012546102b890610100900460ff1681565b34801561048457600080fd5b506102e2610493366004612f7c565b610ef8565b3480156104a457600080fd5b506103c16104b33660046131af565b610f13565b3480156104c457600080fd5b506102e26104d3366004613167565b610f7c565b3480156104e457600080fd5b506102e26104f3366004612f7c565b610fbd565b34801561050457600080fd5b506012546102b89062010000900460ff1681565b34801561052457600080fd5b506103466105333660046131af565b6110cc565b34801561054457600080fd5b506102e2610553366004612f09565b6110de565b34801561056457600080fd5b506103c1610573366004612f09565b61112a565b34801561058457600080fd5b506102e26111bb565b34801561059957600080fd5b506103c16105a83660046131af565b60136020526000908152604090205481565b3480156105c657600080fd5b5061037e6105d5366004612f09565b6111f1565b3480156105e657600080fd5b506012546102b89060ff1681565b34801561060057600080fd5b506102b861060f3660046131af565b60146020526000908152604090205460ff1681565b34801561063057600080fd5b506102e261137e565b34801561064557600080fd5b506000546001600160a01b0316610346565b34801561066357600080fd5b506103c1600d5481565b34801561067957600080fd5b5061068d6106883660046131af565b611493565b6040805182516001600160a01b031681526020928301516001600160401b031692810192909252016102c4565b3480156106c657600080fd5b506102f96114b0565b3480156106db57600080fd5b506102e26106ea36600461303c565b6114bf565b6102e26106fd3660046131af565b611584565b34801561070e57600080fd5b506102e261071d366004612fbd565b61178a565b34801561072e57600080fd5b506103c1600e5481565b34801561074457600080fd5b506103c1600b5481565b34801561075a57600080fd5b506103c1600c5481565b34801561077057600080fd5b506102f961077f3660046131af565b6117c3565b34801561079057600080fd5b506102e26118a9565b3480156107a557600080fd5b506103c160085481565b6102e26107bd3660046130ca565b6118f2565b3480156107ce57600080fd5b506103c16107dd366004612f09565b611eec565b6102e26107f0366004613096565b611ef7565b34801561080157600080fd5b506103c1600f5481565b34801561081757600080fd5b506102b8610826366004612f43565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561086057600080fd5b5061037e61086f366004612f09565b6120ba565b34801561088057600080fd5b506102e261088f366004612f09565b61216c565b60006001600160e01b031982166380ac58cd60e01b14806108c557506001600160e01b03198216635b5e139f60e01b145b806108e057506001600160e01b0319821663780e9d6360e01b145b806108fb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146109345760405162461bcd60e51b815260040161092b90613352565b60405180910390fd5b6012805461ff001981166101009182900460ff1615909102179055565b60606002805461096090613586565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90613586565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b815260040161092b90613352565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a3c826001541190565b610a9e5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b606482015260840161092b565b506000908152600660205260409020546001600160a01b031690565b60606000826001600160401b03811115610ad657610ad6613632565b604051908082528060200260200182016040528015610aff578160200160208202803683370190505b509050600060015b6122b88111610b6f5760008181526014602052604090205460ff16610b5d5780838381518110610b3957610b3961361c565b602090810291909101015281610b4e816135c1565b925050848210610b5d57610b6f565b80610b67816135c1565b915050610b07565b50909392505050565b6000610b83826110cc565b9050806001600160a01b0316836001600160a01b03161415610bf25760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b606482015260840161092b565b336001600160a01b0382161480610c0e5750610c0e8133610826565b610c805760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000606482015260840161092b565b610c8b838383612207565b505050565b6000546001600160a01b03163314610cba5760405162461bcd60e51b815260040161092b90613352565b6012805460ff19811660ff90911615179055565b610c8b838383612263565b60606000610ce68361112a565b90506000816001600160401b03811115610d0257610d02613632565b604051908082528060200260200182016040528015610d2b578160200160208202803683370190505b50905060005b82811015610d78576000610d458683610d80565b905080838381518110610d5a57610d5a61361c565b60209081029190910101525080610d70816135c1565b915050610d31565b509392505050565b6000610d8b8361112a565b8210610de45760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161092b565b6000610def60015490565b905060008060005b83811015610e98576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215610e4957805192505b876001600160a01b0316836001600160a01b03161415610e855786841415610e77575093506108fb92505050565b83610e81816135c1565b9450505b5080610e90816135c1565b915050610df7565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b606482015260840161092b565b610c8b8383836040518060200160405280600081525061178a565b6000610f1e60015490565b8210610f785760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b606482015260840161092b565b5090565b6000546001600160a01b03163314610fa65760405162461bcd60e51b815260040161092b90613352565b8051610fb9906010906020840190612d9d565b5050565b6000546001600160a01b03163314610fe75760405162461bcd60e51b815260040161092b90613352565b6002600954141561103a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161092b565b600260095560405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190613110565b505060016009555050565b60006110d7826125e9565b5192915050565b6000546001600160a01b031633146111085760405162461bcd60e51b815260040161092b90613352565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0382166111965760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b606482015260840161092b565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146111e55760405162461bcd60e51b815260040161092b90613352565b6111ef6000612792565b565b6015546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561123b57600080fd5b505afa15801561124f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127391906131c8565b90506000816001600160401b0381111561128f5761128f613632565b6040519080825280602002602001820160405280156112b8578160200160208202803683370190505b50905060005b82811015610d7857601554604051632f745c5960e01b81526001600160a01b038781166004830152602482018490526000921690632f745c599060440160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b91906131c8565b9050808383815181106113605761136061361c565b60209081029190910101525080611376816135c1565b9150506112be565b6000546001600160a01b031633146113a85760405162461bcd60e51b815260040161092b90613352565b600260095414156113fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161092b565b6002600955604051600090339047908381818185875af1925050503d8060008114611442576040519150601f19603f3d011682016040523d82523d6000602084013e611447565b606091505b505090508061148b5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015260640161092b565b506001600955565b60408051808201909152600080825260208201526108fb826125e9565b60606003805461096090613586565b6001600160a01b0382163314156115185760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c6572000000000000604482015260640161092b565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3233146115a35760405162461bcd60e51b815260040161092b90613387565b601254610100900460ff166115ca5760405162461bcd60e51b815260040161092b9061341d565b60125462010000900460ff161561160d5780600b546115e991906134e5565b3410156116085760405162461bcd60e51b815260040161092b906132e4565b61163a565b80600a5461161b91906134e5565b34101561163a5760405162461bcd60e51b815260040161092b906132e4565b600061164560015490565b9050600061165283610aba565b905060005b815181101561177e57601460008383815181106116765761167661361c565b60209081029190910181015182528101919091526040016000205460ff16156116b15760405162461bcd60e51b815260040161092b9061331b565b60008282815181106116c5576116c561361c565b6020026020010151116116ea5760405162461bcd60e51b815260040161092b9061331b565b8181815181106116fc576116fc61361c565b602002602001015160136000838661171491906134b9565b81526020019081526020016000208190555060016014600084848151811061173e5761173e61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611776906135c1565b915050611657565b50610c8b3382516127e2565b611795848484612263565b6117a1848484846127fc565b6117bd5760405162461bcd60e51b815260040161092b906133ca565b50505050565b60606117d0826001541190565b6118345760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161092b565b600061183e61290a565b9050600081511161185e57604051806020016040528060008152506118a2565b600083815260136020526040902054819061187890612919565b611880612a16565b6040516020016118929392919061320d565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118d35760405162461bcd60e51b815260040161092b90613352565b6012805462ff0000198116620100009182900460ff1615909102179055565b3233146119115760405162461bcd60e51b815260040161092b90613387565b60125460ff166119335760405162461bcd60e51b815260040161092b9061341d565b600061193e60015490565b905060005b8351811015611ead57601554845133916001600160a01b031690636352211e908790859081106119755761197561361c565b60200260200101516040518263ffffffff1660e01b815260040161199b91815260200190565b60206040518083038186803b1580156119b357600080fd5b505afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190612f26565b6001600160a01b031614611a3a5760405162461bcd60e51b8152602060048201526016602482015275165bdd48191bdb89dd081bdddb881d1a1a5cc813919560521b604482015260640161092b565b60146000858381518110611a5057611a5061361c565b60209081029190910181015182528101919091526040016000205460ff1615611a8b5760405162461bcd60e51b815260040161092b9061331b565b838181518110611a9d57611a9d61361c565b6020026020010151601360008385611ab591906134b9565b815260200190815260200160002081905550600160146000868481518110611adf57611adf61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508215611e9b57610191848281518110611b2757611b2761361c565b60200260200101511015611c6157600d54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611b8157600080fd5b505afa158015611b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb991906131c8565b1015611bc457600080fd5b601654600d546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064015b602060405180830381600087803b158015611c1b57600080fd5b505af1158015611c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c539190613110565b611c5c57600080fd5b611e9b565b6109c4848281518110611c7657611c7661361c565b602002602001015111611d5357600e54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611ccf57600080fd5b505afa158015611ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0791906131c8565b1015611d1257600080fd5b601654600e546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401611c01565b6122b8848281518110611d6857611d6861361c565b602002602001015111611e9b57600f54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611dc157600080fd5b505afa158015611dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df991906131c8565b1015611e0457600080fd5b601654600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e5a57600080fd5b505af1158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e929190613110565b611e9b57600080fd5b80611ea5816135c1565b915050611943565b5081611ee1578251600c54611ec291906134e5565b341015611ee15760405162461bcd60e51b815260040161092b906132e4565b610c8b3384516127e2565b60006108fb82612a25565b323314611f165760405162461bcd60e51b815260040161092b90613387565b601254610100900460ff16611f3d5760405162461bcd60e51b815260040161092b9061341d565b6000611f4860015490565b60125490915062010000900460ff1615611f8f578151600b54611f6b91906134e5565b341015611f8a5760405162461bcd60e51b815260040161092b906132e4565b611fbd565b8151600a54611f9e91906134e5565b341015611fbd5760405162461bcd60e51b815260040161092b906132e4565b60005b82518110156120ae5760146000848381518110611fdf57611fdf61361c565b60209081029190910181015182528101919091526040016000205460ff161561201a5760405162461bcd60e51b815260040161092b9061331b565b82818151811061202c5761202c61361c565b602002602001015160136000838561204491906134b9565b81526020019081526020016000208190555060016014600085848151811061206e5761206e61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555080806120a6906135c1565b915050611fc0565b50610fb93383516127e2565b606060006120c78361112a565b90506000816001600160401b038111156120e3576120e3613632565b60405190808252806020026020018201604052801561210c578160200160208202803683370190505b50905060005b82811015610d785760006121268683610d80565b9050601360008281526020019081526020016000205483838151811061214e5761214e61361c565b60209081029190910101525080612164816135c1565b915050612112565b6000546001600160a01b031633146121965760405162461bcd60e51b815260040161092b90613352565b6001600160a01b0381166121fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092b565b61220481612792565b50565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061226e826125e9565b80519091506000906001600160a01b0316336001600160a01b031614806122a557503361229a84610a2f565b6001600160a01b0316145b806122b7575081516122b79033610826565b9050806123215760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161092b565b846001600160a01b031682600001516001600160a01b0316146123955760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b606482015260840161092b565b6001600160a01b0384166123f95760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161092b565b6124096000848460000151612207565b6001600160a01b038516600090815260056020526040812080546001929061243b9084906001600160801b0316613504565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926124879185911661348e565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b0380871682526001600160401b03428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b0319909116919092161717905561250e8460016134b9565b6000818152600460205260409020549091506001600160a01b031661259f57612538816001541190565b1561259f5760408051808201825284516001600160a01b0390811682526020808701516001600160401b039081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152612608826001541190565b6126675760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b606482015260840161092b565b60007f000000000000000000000000000000000000000000000000000000000000000083106126c8576126ba7f00000000000000000000000000000000000000000000000000000000000000008461352c565b6126c59060016134b9565b90505b825b818110612731576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b0316918301919091521561271e57949350505050565b50806127298161356f565b9150506126ca565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b606482015260840161092b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fb9828260405180602001604052806000815250612ac3565b60006001600160a01b0384163b156128fe57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612840903390899088908890600401613250565b602060405180830381600087803b15801561285a57600080fd5b505af192505050801561288a575060408051601f3d908101601f191682019092526128879181019061314a565b60015b6128e4573d8080156128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b5080516128dc5760405162461bcd60e51b815260040161092b906133ca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612902565b5060015b949350505050565b60606010805461096090613586565b60608161293d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156129675780612951816135c1565b91506129609050600a836134d1565b9150612941565b6000816001600160401b0381111561298157612981613632565b6040519080825280601f01601f1916602001820160405280156129ab576020820181803683370190505b5090505b8415612902576129c060018361352c565b91506129cd600a866135dc565b6129d89060306134b9565b60f81b8183815181106129ed576129ed61361c565b60200101906001600160f81b031916908160001a905350612a0f600a866134d1565b94506129af565b60606011805461096090613586565b60006001600160a01b038216612a975760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b606482015260840161092b565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b038416612b265760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161092b565b612b31816001541190565b15612b7e5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e746564000000604482015260640161092b565b7f0000000000000000000000000000000000000000000000000000000000000000831115612bf95760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b606482015260840161092b565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190612c5590879061348e565b6001600160801b03168152602001858360200151612c73919061348e565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b029790961696909617909455845180860186529182526001600160401b034281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015612d925760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612d5660008884886127fc565b612d725760405162461bcd60e51b815260040161092b906133ca565b81612d7c816135c1565b9250508080612d8a906135c1565b915050612d09565b5060018190556125e1565b828054612da990613586565b90600052602060002090601f016020900481019282612dcb5760008555612e11565b82601f10612de457805160ff1916838001178555612e11565b82800160010185558215612e11579182015b82811115612e11578251825591602001919060010190612df6565b50610f789291505b80821115610f785760008155600101612e19565b60006001600160401b03831115612e4657612e46613632565b612e59601f8401601f191660200161345e565b9050828152838383011115612e6d57600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e9557600080fd5b813560206001600160401b03821115612eb057612eb0613632565b8160051b612ebf82820161345e565b838152828101908684018388018501891015612eda57600080fd5b600093505b85841015612efd578035835260019390930192918401918401612edf565b50979650505050505050565b600060208284031215612f1b57600080fd5b81356118a281613648565b600060208284031215612f3857600080fd5b81516118a281613648565b60008060408385031215612f5657600080fd5b8235612f6181613648565b91506020830135612f7181613648565b809150509250929050565b600080600060608486031215612f9157600080fd5b8335612f9c81613648565b92506020840135612fac81613648565b929592945050506040919091013590565b60008060008060808587031215612fd357600080fd5b8435612fde81613648565b93506020850135612fee81613648565b92506040850135915060608501356001600160401b0381111561301057600080fd5b8501601f8101871361302157600080fd5b61303087823560208401612e2d565b91505092959194509250565b6000806040838503121561304f57600080fd5b823561305a81613648565b91506020830135612f718161365d565b6000806040838503121561307d57600080fd5b823561308881613648565b946020939093013593505050565b6000602082840312156130a857600080fd5b81356001600160401b038111156130be57600080fd5b61290284828501612e84565b600080604083850312156130dd57600080fd5b82356001600160401b038111156130f357600080fd5b6130ff85828601612e84565b9250506020830135612f718161365d565b60006020828403121561312257600080fd5b81516118a28161365d565b60006020828403121561313f57600080fd5b81356118a28161366b565b60006020828403121561315c57600080fd5b81516118a28161366b565b60006020828403121561317957600080fd5b81356001600160401b0381111561318f57600080fd5b8201601f810184136131a057600080fd5b61290284823560208401612e2d565b6000602082840312156131c157600080fd5b5035919050565b6000602082840312156131da57600080fd5b5051919050565b600081518084526131f9816020860160208601613543565b601f01601f19169290920160200192915050565b6000845161321f818460208901613543565b845190830190613233818360208901613543565b8451910190613246818360208801613543565b0195945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613283908301846131e1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156132c5578351835292840192918401916001016132a9565b50909695505050505050565b6020815260006118a260208301846131e1565b6020808252601a908201527f596f75206e656564206d6f72652045544820746f206d696e742e000000000000604082015260600190565b6020808252601f908201527f5468697320546f6b656e20494420697320616c7265616479206d696e74656400604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f506c65617365206d696e7420617420746865206f6666696369616c207765627360408201526269746560e81b606082015260800190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60208082526021908201527f4d696e74696e672077696c6c206265207374617274696e672073686f72746c796040820152601760f91b606082015260800190565b604051601f8201601f191681016001600160401b038111828210171561348657613486613632565b604052919050565b60006001600160801b038083168185168083038211156134b0576134b06135f0565b01949350505050565b600082198211156134cc576134cc6135f0565b500190565b6000826134e0576134e0613606565b500490565b60008160001904831182151516156134ff576134ff6135f0565b500290565b60006001600160801b0383811690831681811015613524576135246135f0565b039392505050565b60008282101561353e5761353e6135f0565b500390565b60005b8381101561355e578181015183820152602001613546565b838111156117bd5750506000910152565b60008161357e5761357e6135f0565b506000190190565b600181811c9082168061359a57607f821691505b602082108114156135bb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135d5576135d56135f0565b5060010190565b6000826135eb576135eb613606565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461220457600080fd5b801515811461220457600080fd5b6001600160e01b03198116811461220457600080fdfea26469706673582212209f91c25410f8d7a57cf4159c67007c3d6a4224308a08d37989fa2c252271afb064736f6c634300080700330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000759c55b14190ce6c5a74c15d62cd04a1ad9e49d700000000000000000000000000c9edb376e8c87e146f5af9ae023fb128e0ad4b000000000000000000000000000000000000000000000000000000000000002668747470733a2f2f736861726b626f796669676874636c75622e636f6d2f76782f6a736f6e2f0000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102935760003560e01c80637f8e1aa21161015a578063c040e15d116100c1578063dc33e6811161007a578063dc33e681146107c2578063e5e7781a146107e2578063e6df0a1e146107f5578063e985e9c51461080b578063ebd53c3f14610854578063f2fde38b1461087457600080fd5b8063c040e15d14610738578063c7141d001461074e578063c87b56dd14610764578063cb1070c614610784578063d7224ba014610799578063d754c28f146107af57600080fd5b80639231ab2a116101135780639231ab2a1461066d57806395d89b41146106ba578063a22cb465146106cf578063b068b898146106ef578063b88d4fde14610702578063bdb3e5a11461072257600080fd5b80637f8e1aa2146105ba57806386be53d3146105da578063882b08dd146105f45780638a706818146106245780638da5cb5b146106395780638e14ea931461065757600080fd5b80632f745c59116101fe578063581355bd116101b7578063581355bd146104f85780636352211e14610518578063644082e01461053857806370a0823114610558578063715018a6146105785780637bb76dab1461058d57600080fd5b80632f745c59146104395780633f5e47411461045957806342842e0e146104785780634f6ccce71461049857806355f804b3146104b8578063579d8542146104d857600080fd5b8063095ea7b311610250578063095ea7b31461038b5780630a2a6f8c146103ab57806315250a92146103cf57806318160ddd146103e457806323b872dd146103f95780632db32ba71461041957600080fd5b806301ffc9a714610298578063020deb66146102cd57806306fdde03146102e45780630783daaa14610306578063081812fc146103265780630899151a1461035e575b600080fd5b3480156102a457600080fd5b506102b86102b336600461312d565b610894565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e2610901565b005b3480156102f057600080fd5b506102f9610951565b6040516102c491906132d1565b34801561031257600080fd5b506102e2610321366004612f09565b6109e3565b34801561033257600080fd5b506103466103413660046131af565b610a2f565b6040516001600160a01b0390911681526020016102c4565b34801561036a57600080fd5b5061037e6103793660046131af565b610aba565b6040516102c4919061328d565b34801561039757600080fd5b506102e26103a636600461306a565b610b78565b3480156103b757600080fd5b506103c1600a5481565b6040519081526020016102c4565b3480156103db57600080fd5b506102e2610c90565b3480156103f057600080fd5b506001546103c1565b34801561040557600080fd5b506102e2610414366004612f7c565b610cce565b34801561042557600080fd5b5061037e610434366004612f09565b610cd9565b34801561044557600080fd5b506103c161045436600461306a565b610d80565b34801561046557600080fd5b506012546102b890610100900460ff1681565b34801561048457600080fd5b506102e2610493366004612f7c565b610ef8565b3480156104a457600080fd5b506103c16104b33660046131af565b610f13565b3480156104c457600080fd5b506102e26104d3366004613167565b610f7c565b3480156104e457600080fd5b506102e26104f3366004612f7c565b610fbd565b34801561050457600080fd5b506012546102b89062010000900460ff1681565b34801561052457600080fd5b506103466105333660046131af565b6110cc565b34801561054457600080fd5b506102e2610553366004612f09565b6110de565b34801561056457600080fd5b506103c1610573366004612f09565b61112a565b34801561058457600080fd5b506102e26111bb565b34801561059957600080fd5b506103c16105a83660046131af565b60136020526000908152604090205481565b3480156105c657600080fd5b5061037e6105d5366004612f09565b6111f1565b3480156105e657600080fd5b506012546102b89060ff1681565b34801561060057600080fd5b506102b861060f3660046131af565b60146020526000908152604090205460ff1681565b34801561063057600080fd5b506102e261137e565b34801561064557600080fd5b506000546001600160a01b0316610346565b34801561066357600080fd5b506103c1600d5481565b34801561067957600080fd5b5061068d6106883660046131af565b611493565b6040805182516001600160a01b031681526020928301516001600160401b031692810192909252016102c4565b3480156106c657600080fd5b506102f96114b0565b3480156106db57600080fd5b506102e26106ea36600461303c565b6114bf565b6102e26106fd3660046131af565b611584565b34801561070e57600080fd5b506102e261071d366004612fbd565b61178a565b34801561072e57600080fd5b506103c1600e5481565b34801561074457600080fd5b506103c1600b5481565b34801561075a57600080fd5b506103c1600c5481565b34801561077057600080fd5b506102f961077f3660046131af565b6117c3565b34801561079057600080fd5b506102e26118a9565b3480156107a557600080fd5b506103c160085481565b6102e26107bd3660046130ca565b6118f2565b3480156107ce57600080fd5b506103c16107dd366004612f09565b611eec565b6102e26107f0366004613096565b611ef7565b34801561080157600080fd5b506103c1600f5481565b34801561081757600080fd5b506102b8610826366004612f43565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561086057600080fd5b5061037e61086f366004612f09565b6120ba565b34801561088057600080fd5b506102e261088f366004612f09565b61216c565b60006001600160e01b031982166380ac58cd60e01b14806108c557506001600160e01b03198216635b5e139f60e01b145b806108e057506001600160e01b0319821663780e9d6360e01b145b806108fb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146109345760405162461bcd60e51b815260040161092b90613352565b60405180910390fd5b6012805461ff001981166101009182900460ff1615909102179055565b60606002805461096090613586565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90613586565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b815260040161092b90613352565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a3c826001541190565b610a9e5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b606482015260840161092b565b506000908152600660205260409020546001600160a01b031690565b60606000826001600160401b03811115610ad657610ad6613632565b604051908082528060200260200182016040528015610aff578160200160208202803683370190505b509050600060015b6122b88111610b6f5760008181526014602052604090205460ff16610b5d5780838381518110610b3957610b3961361c565b602090810291909101015281610b4e816135c1565b925050848210610b5d57610b6f565b80610b67816135c1565b915050610b07565b50909392505050565b6000610b83826110cc565b9050806001600160a01b0316836001600160a01b03161415610bf25760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b606482015260840161092b565b336001600160a01b0382161480610c0e5750610c0e8133610826565b610c805760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000606482015260840161092b565b610c8b838383612207565b505050565b6000546001600160a01b03163314610cba5760405162461bcd60e51b815260040161092b90613352565b6012805460ff19811660ff90911615179055565b610c8b838383612263565b60606000610ce68361112a565b90506000816001600160401b03811115610d0257610d02613632565b604051908082528060200260200182016040528015610d2b578160200160208202803683370190505b50905060005b82811015610d78576000610d458683610d80565b905080838381518110610d5a57610d5a61361c565b60209081029190910101525080610d70816135c1565b915050610d31565b509392505050565b6000610d8b8361112a565b8210610de45760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161092b565b6000610def60015490565b905060008060005b83811015610e98576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215610e4957805192505b876001600160a01b0316836001600160a01b03161415610e855786841415610e77575093506108fb92505050565b83610e81816135c1565b9450505b5080610e90816135c1565b915050610df7565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b606482015260840161092b565b610c8b8383836040518060200160405280600081525061178a565b6000610f1e60015490565b8210610f785760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b606482015260840161092b565b5090565b6000546001600160a01b03163314610fa65760405162461bcd60e51b815260040161092b90613352565b8051610fb9906010906020840190612d9d565b5050565b6000546001600160a01b03163314610fe75760405162461bcd60e51b815260040161092b90613352565b6002600954141561103a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161092b565b600260095560405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190613110565b505060016009555050565b60006110d7826125e9565b5192915050565b6000546001600160a01b031633146111085760405162461bcd60e51b815260040161092b90613352565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0382166111965760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b606482015260840161092b565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146111e55760405162461bcd60e51b815260040161092b90613352565b6111ef6000612792565b565b6015546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561123b57600080fd5b505afa15801561124f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127391906131c8565b90506000816001600160401b0381111561128f5761128f613632565b6040519080825280602002602001820160405280156112b8578160200160208202803683370190505b50905060005b82811015610d7857601554604051632f745c5960e01b81526001600160a01b038781166004830152602482018490526000921690632f745c599060440160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b91906131c8565b9050808383815181106113605761136061361c565b60209081029190910101525080611376816135c1565b9150506112be565b6000546001600160a01b031633146113a85760405162461bcd60e51b815260040161092b90613352565b600260095414156113fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161092b565b6002600955604051600090339047908381818185875af1925050503d8060008114611442576040519150601f19603f3d011682016040523d82523d6000602084013e611447565b606091505b505090508061148b5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015260640161092b565b506001600955565b60408051808201909152600080825260208201526108fb826125e9565b60606003805461096090613586565b6001600160a01b0382163314156115185760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c6572000000000000604482015260640161092b565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3233146115a35760405162461bcd60e51b815260040161092b90613387565b601254610100900460ff166115ca5760405162461bcd60e51b815260040161092b9061341d565b60125462010000900460ff161561160d5780600b546115e991906134e5565b3410156116085760405162461bcd60e51b815260040161092b906132e4565b61163a565b80600a5461161b91906134e5565b34101561163a5760405162461bcd60e51b815260040161092b906132e4565b600061164560015490565b9050600061165283610aba565b905060005b815181101561177e57601460008383815181106116765761167661361c565b60209081029190910181015182528101919091526040016000205460ff16156116b15760405162461bcd60e51b815260040161092b9061331b565b60008282815181106116c5576116c561361c565b6020026020010151116116ea5760405162461bcd60e51b815260040161092b9061331b565b8181815181106116fc576116fc61361c565b602002602001015160136000838661171491906134b9565b81526020019081526020016000208190555060016014600084848151811061173e5761173e61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611776906135c1565b915050611657565b50610c8b3382516127e2565b611795848484612263565b6117a1848484846127fc565b6117bd5760405162461bcd60e51b815260040161092b906133ca565b50505050565b60606117d0826001541190565b6118345760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161092b565b600061183e61290a565b9050600081511161185e57604051806020016040528060008152506118a2565b600083815260136020526040902054819061187890612919565b611880612a16565b6040516020016118929392919061320d565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118d35760405162461bcd60e51b815260040161092b90613352565b6012805462ff0000198116620100009182900460ff1615909102179055565b3233146119115760405162461bcd60e51b815260040161092b90613387565b60125460ff166119335760405162461bcd60e51b815260040161092b9061341d565b600061193e60015490565b905060005b8351811015611ead57601554845133916001600160a01b031690636352211e908790859081106119755761197561361c565b60200260200101516040518263ffffffff1660e01b815260040161199b91815260200190565b60206040518083038186803b1580156119b357600080fd5b505afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190612f26565b6001600160a01b031614611a3a5760405162461bcd60e51b8152602060048201526016602482015275165bdd48191bdb89dd081bdddb881d1a1a5cc813919560521b604482015260640161092b565b60146000858381518110611a5057611a5061361c565b60209081029190910181015182528101919091526040016000205460ff1615611a8b5760405162461bcd60e51b815260040161092b9061331b565b838181518110611a9d57611a9d61361c565b6020026020010151601360008385611ab591906134b9565b815260200190815260200160002081905550600160146000868481518110611adf57611adf61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508215611e9b57610191848281518110611b2757611b2761361c565b60200260200101511015611c6157600d54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611b8157600080fd5b505afa158015611b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb991906131c8565b1015611bc457600080fd5b601654600d546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064015b602060405180830381600087803b158015611c1b57600080fd5b505af1158015611c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c539190613110565b611c5c57600080fd5b611e9b565b6109c4848281518110611c7657611c7661361c565b602002602001015111611d5357600e54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611ccf57600080fd5b505afa158015611ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0791906131c8565b1015611d1257600080fd5b601654600e546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401611c01565b6122b8848281518110611d6857611d6861361c565b602002602001015111611e9b57600f54601654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e9060440160206040518083038186803b158015611dc157600080fd5b505afa158015611dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df991906131c8565b1015611e0457600080fd5b601654600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e5a57600080fd5b505af1158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e929190613110565b611e9b57600080fd5b80611ea5816135c1565b915050611943565b5081611ee1578251600c54611ec291906134e5565b341015611ee15760405162461bcd60e51b815260040161092b906132e4565b610c8b3384516127e2565b60006108fb82612a25565b323314611f165760405162461bcd60e51b815260040161092b90613387565b601254610100900460ff16611f3d5760405162461bcd60e51b815260040161092b9061341d565b6000611f4860015490565b60125490915062010000900460ff1615611f8f578151600b54611f6b91906134e5565b341015611f8a5760405162461bcd60e51b815260040161092b906132e4565b611fbd565b8151600a54611f9e91906134e5565b341015611fbd5760405162461bcd60e51b815260040161092b906132e4565b60005b82518110156120ae5760146000848381518110611fdf57611fdf61361c565b60209081029190910181015182528101919091526040016000205460ff161561201a5760405162461bcd60e51b815260040161092b9061331b565b82818151811061202c5761202c61361c565b602002602001015160136000838561204491906134b9565b81526020019081526020016000208190555060016014600085848151811061206e5761206e61361c565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555080806120a6906135c1565b915050611fc0565b50610fb93383516127e2565b606060006120c78361112a565b90506000816001600160401b038111156120e3576120e3613632565b60405190808252806020026020018201604052801561210c578160200160208202803683370190505b50905060005b82811015610d785760006121268683610d80565b9050601360008281526020019081526020016000205483838151811061214e5761214e61361c565b60209081029190910101525080612164816135c1565b915050612112565b6000546001600160a01b031633146121965760405162461bcd60e51b815260040161092b90613352565b6001600160a01b0381166121fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092b565b61220481612792565b50565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061226e826125e9565b80519091506000906001600160a01b0316336001600160a01b031614806122a557503361229a84610a2f565b6001600160a01b0316145b806122b7575081516122b79033610826565b9050806123215760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161092b565b846001600160a01b031682600001516001600160a01b0316146123955760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b606482015260840161092b565b6001600160a01b0384166123f95760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161092b565b6124096000848460000151612207565b6001600160a01b038516600090815260056020526040812080546001929061243b9084906001600160801b0316613504565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926124879185911661348e565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b0380871682526001600160401b03428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b0319909116919092161717905561250e8460016134b9565b6000818152600460205260409020549091506001600160a01b031661259f57612538816001541190565b1561259f5760408051808201825284516001600160a01b0390811682526020808701516001600160401b039081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152612608826001541190565b6126675760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b606482015260840161092b565b60007f000000000000000000000000000000000000000000000000000000000000003283106126c8576126ba7f00000000000000000000000000000000000000000000000000000000000000328461352c565b6126c59060016134b9565b90505b825b818110612731576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b0316918301919091521561271e57949350505050565b50806127298161356f565b9150506126ca565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b606482015260840161092b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fb9828260405180602001604052806000815250612ac3565b60006001600160a01b0384163b156128fe57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612840903390899088908890600401613250565b602060405180830381600087803b15801561285a57600080fd5b505af192505050801561288a575060408051601f3d908101601f191682019092526128879181019061314a565b60015b6128e4573d8080156128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b5080516128dc5760405162461bcd60e51b815260040161092b906133ca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612902565b5060015b949350505050565b60606010805461096090613586565b60608161293d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156129675780612951816135c1565b91506129609050600a836134d1565b9150612941565b6000816001600160401b0381111561298157612981613632565b6040519080825280601f01601f1916602001820160405280156129ab576020820181803683370190505b5090505b8415612902576129c060018361352c565b91506129cd600a866135dc565b6129d89060306134b9565b60f81b8183815181106129ed576129ed61361c565b60200101906001600160f81b031916908160001a905350612a0f600a866134d1565b94506129af565b60606011805461096090613586565b60006001600160a01b038216612a975760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b606482015260840161092b565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b038416612b265760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161092b565b612b31816001541190565b15612b7e5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e746564000000604482015260640161092b565b7f0000000000000000000000000000000000000000000000000000000000000032831115612bf95760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b606482015260840161092b565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190612c5590879061348e565b6001600160801b03168152602001858360200151612c73919061348e565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b029790961696909617909455845180860186529182526001600160401b034281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015612d925760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612d5660008884886127fc565b612d725760405162461bcd60e51b815260040161092b906133ca565b81612d7c816135c1565b9250508080612d8a906135c1565b915050612d09565b5060018190556125e1565b828054612da990613586565b90600052602060002090601f016020900481019282612dcb5760008555612e11565b82601f10612de457805160ff1916838001178555612e11565b82800160010185558215612e11579182015b82811115612e11578251825591602001919060010190612df6565b50610f789291505b80821115610f785760008155600101612e19565b60006001600160401b03831115612e4657612e46613632565b612e59601f8401601f191660200161345e565b9050828152838383011115612e6d57600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e9557600080fd5b813560206001600160401b03821115612eb057612eb0613632565b8160051b612ebf82820161345e565b838152828101908684018388018501891015612eda57600080fd5b600093505b85841015612efd578035835260019390930192918401918401612edf565b50979650505050505050565b600060208284031215612f1b57600080fd5b81356118a281613648565b600060208284031215612f3857600080fd5b81516118a281613648565b60008060408385031215612f5657600080fd5b8235612f6181613648565b91506020830135612f7181613648565b809150509250929050565b600080600060608486031215612f9157600080fd5b8335612f9c81613648565b92506020840135612fac81613648565b929592945050506040919091013590565b60008060008060808587031215612fd357600080fd5b8435612fde81613648565b93506020850135612fee81613648565b92506040850135915060608501356001600160401b0381111561301057600080fd5b8501601f8101871361302157600080fd5b61303087823560208401612e2d565b91505092959194509250565b6000806040838503121561304f57600080fd5b823561305a81613648565b91506020830135612f718161365d565b6000806040838503121561307d57600080fd5b823561308881613648565b946020939093013593505050565b6000602082840312156130a857600080fd5b81356001600160401b038111156130be57600080fd5b61290284828501612e84565b600080604083850312156130dd57600080fd5b82356001600160401b038111156130f357600080fd5b6130ff85828601612e84565b9250506020830135612f718161365d565b60006020828403121561312257600080fd5b81516118a28161365d565b60006020828403121561313f57600080fd5b81356118a28161366b565b60006020828403121561315c57600080fd5b81516118a28161366b565b60006020828403121561317957600080fd5b81356001600160401b0381111561318f57600080fd5b8201601f810184136131a057600080fd5b61290284823560208401612e2d565b6000602082840312156131c157600080fd5b5035919050565b6000602082840312156131da57600080fd5b5051919050565b600081518084526131f9816020860160208601613543565b601f01601f19169290920160200192915050565b6000845161321f818460208901613543565b845190830190613233818360208901613543565b8451910190613246818360208801613543565b0195945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613283908301846131e1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156132c5578351835292840192918401916001016132a9565b50909695505050505050565b6020815260006118a260208301846131e1565b6020808252601a908201527f596f75206e656564206d6f72652045544820746f206d696e742e000000000000604082015260600190565b6020808252601f908201527f5468697320546f6b656e20494420697320616c7265616479206d696e74656400604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f506c65617365206d696e7420617420746865206f6666696369616c207765627360408201526269746560e81b606082015260800190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60208082526021908201527f4d696e74696e672077696c6c206265207374617274696e672073686f72746c796040820152601760f91b606082015260800190565b604051601f8201601f191681016001600160401b038111828210171561348657613486613632565b604052919050565b60006001600160801b038083168185168083038211156134b0576134b06135f0565b01949350505050565b600082198211156134cc576134cc6135f0565b500190565b6000826134e0576134e0613606565b500490565b60008160001904831182151516156134ff576134ff6135f0565b500290565b60006001600160801b0383811690831681811015613524576135246135f0565b039392505050565b60008282101561353e5761353e6135f0565b500390565b60005b8381101561355e578181015183820152602001613546565b838111156117bd5750506000910152565b60008161357e5761357e6135f0565b506000190190565b600181811c9082168061359a57607f821691505b602082108114156135bb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135d5576135d56135f0565b5060010190565b6000826135eb576135eb613606565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461220457600080fd5b801515811461220457600080fd5b6001600160e01b03198116811461220457600080fdfea26469706673582212209f91c25410f8d7a57cf4159c67007c3d6a4224308a08d37989fa2c252271afb064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000759c55b14190ce6c5a74c15d62cd04a1ad9e49d700000000000000000000000000c9edb376e8c87e146f5af9ae023fb128e0ad4b000000000000000000000000000000000000000000000000000000000000002668747470733a2f2f736861726b626f796669676874636c75622e636f6d2f76782f6a736f6e2f0000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _baseUri (string): https://sharkboyfightclub.com/vx/json/
Arg [1] : sbfcContractAddress (address): 0x759c55B14190Ce6c5A74C15d62cd04a1Ad9e49d7
Arg [2] : loxContractAddress (address): 0x00C9Edb376E8c87e146F5aF9Ae023Fb128E0aD4B
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 000000000000000000000000759c55b14190ce6c5a74c15d62cd04a1ad9e49d7
Arg [2] : 00000000000000000000000000c9edb376e8c87e146f5af9ae023fb128e0ad4b
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000026
Arg [4] : 68747470733a2f2f736861726b626f796669676874636c75622e636f6d2f7678
Arg [5] : 2f6a736f6e2f0000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
1699:8148:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28569:370:0;;;;;;;;;;-1:-1:-1;28569:370:0;;;;;:::i;:::-;;:::i;:::-;;;11076:14:2;;11069:22;11051:41;;11039:2;11024:18;28569:370:0;;;;;;;;9202:101:1;;;;;;;;;;;;;:::i;:::-;;30295:94:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9636:105:1:-;;;;;;;;;;-1:-1:-1;9636:105:1;;;;;:::i;:::-;;:::i;31941:204:0:-;;;;;;;;;;-1:-1:-1;31941:204:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8769:32:2;;;8751:51;;8739:2;8724:18;31941:204:0;8605:203:2;6329:369:1;;;;;;;;;;-1:-1:-1;6329:369:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31504:379:0:-;;;;;;;;;;-1:-1:-1;31504:379:0;;;;;:::i;:::-;;:::i;1794:51:1:-;;;;;;;;;;;;;;;;;;;22891:25:2;;;22879:2;22864:18;1794:51:1;22745:177:2;9311:92:1;;;;;;;;;;;;;:::i;27130:94:0:-;;;;;;;;;;-1:-1:-1;27206:12:0;;27130:94;;32791:142;;;;;;;;;;-1:-1:-1;32791:142:0;;;;;:::i;:::-;;:::i;6704:379:1:-;;;;;;;;;;-1:-1:-1;6704:379:1;;;;;:::i;:::-;;:::i;27761:744:0:-;;;;;;;;;;-1:-1:-1;27761:744:0;;;;;:::i;:::-;;:::i;2403:34:1:-;;;;;;;;;;-1:-1:-1;2403:34:1;;;;;;;;;;;32996:157:0;;;;;;;;;;-1:-1:-1;32996:157:0;;;;;:::i;:::-;;:::i;27293:177::-;;;;;;;;;;-1:-1:-1;27293:177:0;;;;;:::i;:::-;;:::i;9534:98:1:-;;;;;;;;;;-1:-1:-1;9534:98:1;;;;;:::i;:::-;;:::i;9037:157::-;;;;;;;;;;-1:-1:-1;9037:157:1;;;;;:::i;:::-;;:::i;2442:37::-;;;;;;;;;;-1:-1:-1;2442:37:1;;;;;;;;;;;30118:118:0;;;;;;;;;;-1:-1:-1;30118:118:0;;;;;:::i;:::-;;:::i;9747:97:1:-;;;;;;;;;;-1:-1:-1;9747:97:1;;;;;:::i;:::-;;:::i;28995:211:0:-;;;;;;;;;;-1:-1:-1;28995:211:0;;;;;:::i;:::-;;:::i;6971:103::-;;;;;;;;;;;;;:::i;2486:47:1:-;;;;;;;;;;-1:-1:-1;2486:47:1;;;;;:::i;:::-;;;;;;;;;;;;;;7495:403;;;;;;;;;;-1:-1:-1;7495:403:1;;;;;:::i;:::-;;:::i;2368:30::-;;;;;;;;;;-1:-1:-1;2368:30:1;;;;;;;;2538:50;;;;;;;;;;-1:-1:-1;2538:50:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;8848:183;;;;;;;;;;;;;:::i;6320:87:0:-;;;;;;;;;;-1:-1:-1;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;6320:87;;1995:48:1;;;;;;;;;;;;;;;;8695:147;;;;;;;;;;-1:-1:-1;8695:147:1;;;;;:::i;:::-;;:::i;:::-;;;;22610:13:2;;-1:-1:-1;;;;;22606:39:2;22588:58;;22706:4;22694:17;;;22688:24;-1:-1:-1;;;;;22684:49:2;22662:20;;;22655:79;;;;22561:18;8695:147:1;22380:360:2;30450:98:0;;;;;;;;;;;;;:::i;32209:274::-;;;;;;;;;;-1:-1:-1;32209:274:0;;;;;:::i;:::-;;:::i;5429:892:1:-;;;;;;:::i;:::-;;:::i;33216:311:0:-;;;;;;;;;;-1:-1:-1;33216:311:0;;;;;:::i;:::-;;:::i;2057:46:1:-;;;;;;;;;;;;;;;;1863:49;;;;;;;;;;;;;;;;1931:47;;;;;;;;;;;;;;;;7908:429;;;;;;;;;;-1:-1:-1;7908:429:1;;;;;:::i;:::-;;:::i;9411:114::-;;;;;;;;;;;;;:::i;37631:43:0:-;;;;;;;;;;;;;;;;3152:1484:1;;;;;;:::i;:::-;;:::i;8582:107::-;;;;;;;;;;-1:-1:-1;8582:107:1;;;;;:::i;:::-;;:::i;4644:778::-;;;;;;:::i;:::-;;:::i;2117:47::-;;;;;;;;;;;;;;;;32546:186:0;;;;;;;;;;-1:-1:-1;32546:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;32691:25:0;;;32668:4;32691:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;32546:186;7089:399:1;;;;;;;;;;-1:-1:-1;7089:399:1;;;;;:::i;:::-;;:::i;7229:201:0:-;;;;;;;;;;-1:-1:-1;7229:201:0;;;;;:::i;:::-;;:::i;28569:370::-;28696:4;-1:-1:-1;;;;;;28726:40:0;;-1:-1:-1;;;28726:40:0;;:99;;-1:-1:-1;;;;;;;28777:48:0;;-1:-1:-1;;;28777:48:0;28726:99;:160;;;-1:-1:-1;;;;;;;28836:50:0;;-1:-1:-1;;;28836:50:0;28726:160;:207;;;-1:-1:-1;;;;;;;;;;18223:40:0;;;28897:36;28712:221;28569:370;-1:-1:-1;;28569:370:0:o;9202:101:1:-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;;;;;;;;;9281:14:1::1;::::0;;-1:-1:-1;;9263:32:1;::::1;9281:14;::::0;;;::::1;;;9280:15;9263:32:::0;;::::1;;::::0;;9202:101::o;30295:94:0:-;30349:13;30378:5;30371:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30295:94;:::o;9636:105:1:-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;9713:11:1::1;:22:::0;;-1:-1:-1;;;;;;9713:22:1::1;-1:-1:-1::0;;;;;9713:22:1;;;::::1;::::0;;;::::1;::::0;;9636:105::o;31941:204:0:-;32009:7;32033:16;32041:7;33853:12;;-1:-1:-1;33843:22:0;33766:105;32033:16;32025:74;;;;-1:-1:-1;;;32025:74:0;;21765:2:2;32025:74:0;;;21747:21:2;21804:2;21784:18;;;21777:30;21843:34;21823:18;;;21816:62;-1:-1:-1;;;21894:18:2;;;21887:43;21947:19;;32025:74:0;21563:409:2;32025:74:0;-1:-1:-1;32115:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;32115:24:0;;31941:204::o;6329:369:1:-;6391:16;6416:19;6452:7;-1:-1:-1;;;;;6438:22:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6438:22:1;-1:-1:-1;6416:44:1;-1:-1:-1;6467:11:1;6506:1;6489:188;6514:4;6509:1;:9;6489:188;;6539:23;;;;:20;:23;;;;;;;;6534:136;;6584:1;6574:2;6577:3;6574:7;;;;;;;;:::i;:::-;;;;;;;;;;:11;6596:6;;;;:::i;:::-;;;;6623:7;6616:3;:14;6613:48;;6644:5;;6613:48;6520:3;;;;:::i;:::-;;;;6489:188;;;-1:-1:-1;6690:2:1;;6329:369;-1:-1:-1;;;6329:369:1:o;31504:379:0:-;31573:13;31589:24;31605:7;31589:15;:24::i;:::-;31573:40;;31634:5;-1:-1:-1;;;;;31628:11:0;:2;-1:-1:-1;;;;;31628:11:0;;;31620:58;;;;-1:-1:-1;;;31620:58:0;;18244:2:2;31620:58:0;;;18226:21:2;18283:2;18263:18;;;18256:30;18322:34;18302:18;;;18295:62;-1:-1:-1;;;18373:18:2;;;18366:32;18415:19;;31620:58:0;18042:398:2;31620:58:0;5267:10;-1:-1:-1;;;;;31703:21:0;;;;:62;;-1:-1:-1;31728:37:0;31745:5;5267:10;32546:186;:::i;31728:37::-;31687:153;;;;-1:-1:-1;;;31687:153:0;;15044:2:2;31687:153:0;;;15026:21:2;15083:2;15063:18;;;15056:30;15122:34;15102:18;;;15095:62;15193:27;15173:18;;;15166:55;15238:19;;31687:153:0;14842:421:2;31687:153:0;31849:28;31858:2;31862:7;31871:5;31849:8;:28::i;:::-;31566:317;31504:379;;:::o;9311:92:1:-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;9384:11:1::1;::::0;;-1:-1:-1;;9369:26:1;::::1;9384:11;::::0;;::::1;9383:12;9369:26;::::0;;9311:92::o;32791:142:0:-;32899:28;32909:4;32915:2;32919:7;32899:9;:28::i;6704:379:1:-;6771:16;6796:21;6820:16;6830:5;6820:9;:16::i;:::-;6796:40;;6843:30;6890:13;-1:-1:-1;;;;;6876:28:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6876:28:1;;6843:61;;6916:9;6911:140;6935:13;6931:1;:17;6911:140;;;6966:12;6981:28;7001:5;7007:1;6981:19;:28::i;:::-;6966:43;;7039:4;7020:13;7034:1;7020:16;;;;;;;;:::i;:::-;;;;;;;;;;:23;-1:-1:-1;6950:3:1;;;;:::i;:::-;;;;6911:140;;;-1:-1:-1;7064:13:1;6704:379;-1:-1:-1;;;6704:379:1:o;27761:744:0:-;27870:7;27905:16;27915:5;27905:9;:16::i;:::-;27897:5;:24;27889:71;;;;-1:-1:-1;;;27889:71:0;;11529:2:2;27889:71:0;;;11511:21:2;11568:2;11548:18;;;11541:30;11607:34;11587:18;;;11580:62;-1:-1:-1;;;11658:18:2;;;11651:32;11700:19;;27889:71:0;11327:398:2;27889:71:0;27967:22;27992:13;27206:12;;;27130:94;27992:13;27967:38;;28012:19;28042:25;28092:9;28087:350;28111:14;28107:1;:18;28087:350;;;28141:31;28175:14;;;:11;:14;;;;;;;;;28141:48;;;;;;;;;-1:-1:-1;;;;;28141:48:0;;;;;-1:-1:-1;;;28141:48:0;;;-1:-1:-1;;;;;28141:48:0;;;;;;;;28202:28;28198:89;;28263:14;;;-1:-1:-1;28198:89:0;28320:5;-1:-1:-1;;;;;28299:26:0;:17;-1:-1:-1;;;;;28299:26:0;;28295:135;;;28357:5;28342:11;:20;28338:59;;;-1:-1:-1;28384:1:0;-1:-1:-1;28377:8:0;;-1:-1:-1;;;28377:8:0;28338:59;28407:13;;;;:::i;:::-;;;;28295:135;-1:-1:-1;28127:3:0;;;;:::i;:::-;;;;28087:350;;;-1:-1:-1;28443:56:0;;-1:-1:-1;;;28443:56:0;;20574:2:2;28443:56:0;;;20556:21:2;20613:2;20593:18;;;20586:30;20652:34;20632:18;;;20625:62;-1:-1:-1;;;20703:18:2;;;20696:44;20757:19;;28443:56:0;20372:410:2;32996:157:0;33108:39;33125:4;33131:2;33135:7;33108:39;;;;;;;;;;;;:16;:39::i;27293:177::-;27360:7;27392:13;27206:12;;;27130:94;27392:13;27384:5;:21;27376:69;;;;-1:-1:-1;;;27376:69:0;;13465:2:2;27376:69:0;;;13447:21:2;13504:2;13484:18;;;13477:30;13543:34;13523:18;;;13516:62;-1:-1:-1;;;13594:18:2;;;13587:33;13637:19;;27376:69:0;13263:399:2;27376:69:0;-1:-1:-1;27459:5:0;27293:177::o;9534:98:1:-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;9603:23:1;;::::1;::::0;:13:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;:::-;;9534:98:::0;:::o;9037:157::-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;1711:1:::1;2309:7;;:19;;2301:63;;;::::0;-1:-1:-1;;;2301:63:0;;20989:2:2;2301:63:0::1;::::0;::::1;20971:21:2::0;21028:2;21008:18;;;21001:30;21067:33;21047:18;;;21040:61;21118:18;;2301:63:0::1;20787:355:2::0;2301:63:0::1;1711:1;2442:7;:18:::0;9151:37:1::2;::::0;-1:-1:-1;;;9151:37:1;;-1:-1:-1;;;;;10187:32:2;;;9151:37:1::2;::::0;::::2;10169:51:2::0;10236:18;;;10229:34;;;9151:22:1;::::2;::::0;::::2;::::0;10142:18:2;;9151:37:1::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;1667:1:0::1;2621:7;:22:::0;-1:-1:-1;;9037:157:1:o;30118:118:0:-;30182:7;30205:20;30217:7;30205:11;:20::i;:::-;:25;;30118:118;-1:-1:-1;;30118:118:0:o;9747:97:1:-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;9816:11:1::1;:22:::0;;-1:-1:-1;;;;;;9816:22:1::1;-1:-1:-1::0;;;;;9816:22:1;;;::::1;::::0;;;::::1;::::0;;9747:97::o;28995:211:0:-;29059:7;-1:-1:-1;;;;;29083:19:0;;29075:75;;;;-1:-1:-1;;;29075:75:0;;15470:2:2;29075:75:0;;;15452:21:2;15509:2;15489:18;;;15482:30;15548:34;15528:18;;;15521:62;-1:-1:-1;;;15599:18:2;;;15592:41;15650:19;;29075:75:0;15268:407:2;29075:75:0;-1:-1:-1;;;;;;29172:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;29172:27:0;;28995:211::o;6971:103::-;6366:7;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;7036:30:::1;7063:1;7036:18;:30::i;:::-;6971:103::o:0;7495:403:1:-;7611:11;;:28;;-1:-1:-1;;;7611:28:1;;-1:-1:-1;;;;;8769:32:2;;;7611:28:1;;;8751:51:2;7562:16:1;;7587:21;;7611:11;;;:21;;8724:18:2;;7611:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7587:52;;7646:30;7693:13;-1:-1:-1;;;;;7679:28:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7679:28:1;;7646:61;;7719:9;7714:152;7738:13;7734:1;:17;7714:152;;;7784:11;;:40;;-1:-1:-1;;;7784:40:1;;-1:-1:-1;;;;;10187:32:2;;;7784:40:1;;;10169:51:2;10236:18;;;10229:34;;;7769:12:1;;7784:11;;:31;;10142:18:2;;7784:40:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7769:55;;7854:4;7835:13;7849:1;7835:16;;;;;;;;:::i;:::-;;;;;;;;;;:23;-1:-1:-1;7753:3:1;;;;:::i;:::-;;;;7714:152;;8848:183;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;1711:1:::1;2309:7;;:19;;2301:63;;;::::0;-1:-1:-1;;;2301:63:0;;20989:2:2;2301:63:0::1;::::0;::::1;20971:21:2::0;21028:2;21008:18;;;21001:30;21067:33;21047:18;;;21040:61;21118:18;;2301:63:0::1;20787:355:2::0;2301:63:0::1;1711:1;2442:7;:18:::0;8933:49:1::2;::::0;8915:12:::2;::::0;8933:10:::2;::::0;8956:21:::2;::::0;8915:12;8933:49;8915:12;8933:49;8956:21;8933:10;:49:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8914:68;;;8997:7;8989:36;;;::::0;-1:-1:-1;;;8989:36:1;;18647:2:2;8989:36:1::2;::::0;::::2;18629:21:2::0;18686:2;18666:18;;;18659:30;-1:-1:-1;;;18705:18:2;;;18698:46;18761:18;;8989:36:1::2;18445:340:2::0;8989:36:1::2;-1:-1:-1::0;1667:1:0::1;2621:7;:22:::0;8848:183:1:o;8695:147::-;-1:-1:-1;;;;;;;;;;;;;;;;;8816:20:1;8828:7;8816:11;:20::i;30450:98:0:-;30506:13;30535:7;30528:14;;;;;:::i;32209:274::-;-1:-1:-1;;;;;32300:24:0;;5267:10;32300:24;;32292:63;;;;-1:-1:-1;;;32292:63:0;;17066:2:2;32292:63:0;;;17048:21:2;17105:2;17085:18;;;17078:30;17144:28;17124:18;;;17117:56;17190:18;;32292:63:0;16864:350:2;32292:63:0;5267:10;32364:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;32364:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;32364:53:0;;;;;;;;;;32429:48;;11051:41:2;;;32364:42:0;;5267:10;32429:48;;11024:18:2;32429:48:0;;;;;;;32209:274;;:::o;5429:892:1:-;3067:9;3080:10;3067:23;3059:71;;;;-1:-1:-1;;;3059:71:1;;;;;;;:::i;:::-;5539:14:::1;::::0;::::1;::::0;::::1;;;5531:60;;;;-1:-1:-1::0;;;5531:60:1::1;;;;;;;:::i;:::-;5604:18;::::0;;;::::1;;;5600:233;;;5679:7;5654:22;;:32;;;;:::i;:::-;5641:9;:45;;5633:84;;;;-1:-1:-1::0;;;5633:84:1::1;;;;;;;:::i;:::-;5600:233;;;5787:7;5761:23;;:33;;;;:::i;:::-;5748:9;:46;;5740:85;;;;-1:-1:-1::0;;;5740:85:1::1;;;;;;;:::i;:::-;5841:16;5860:13;27206:12:0::0;;;27130:94;5860:13:1::1;5841:32;;5880:28;5911:24;5927:7;5911:15;:24::i;:::-;5880:55;;5947:9;5942:324;5966:11;:18;5962:1;:22;5942:324;;;6009:20;:36;6030:11;6042:1;6030:14;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;6009:36;;;::::1;::::0;;;;;;-1:-1:-1;6009:36:1;;::::1;;6008:37;6000:81;;;;-1:-1:-1::0;;;6000:81:1::1;;;;;;;:::i;:::-;6115:1;6098:11;6110:1;6098:14;;;;;;;;:::i;:::-;;;;;;;:18;6090:62;;;;-1:-1:-1::0;;;6090:62:1::1;;;;;;;:::i;:::-;6192:11;6204:1;6192:14;;;;;;;;:::i;:::-;;;;;;;6163;:26;6187:1;6178:8;:10;;;;:::i;:::-;6163:26;;;;;;;;;;;:43;;;;6254:4;6215:20;:36;6236:11;6248:1;6236:14;;;;;;;;:::i;:::-;;;;;;;6215:36;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;5986:3;;;;;:::i;:::-;;;;5942:324;;;;6274:41;6284:10;6296:11;:18;6274:9;:41::i;33216:311:0:-:0;33353:28;33363:4;33369:2;33373:7;33353:9;:28::i;:::-;33404:48;33427:4;33433:2;33437:7;33446:5;33404:22;:48::i;:::-;33388:133;;;;-1:-1:-1;;;33388:133:0;;;;;;;:::i;:::-;33216:311;;;;:::o;7908:429:1:-;8006:13;8047:16;8055:7;33853:12:0;;-1:-1:-1;33843:22:0;33766:105;8047:16:1;8031:97;;;;-1:-1:-1;;;8031:97:1;;16650:2:2;8031:97:1;;;16632:21:2;16689:2;16669:18;;;16662:30;16728:34;16708:18;;;16701:62;-1:-1:-1;;;16779:18:2;;;16772:45;16834:19;;8031:97:1;16448:411:2;8031:97:1;8137:21;8161:10;:8;:10::i;:::-;8137:34;;8216:1;8198:7;8192:21;:25;:139;;;;;;;;;;;;;;;;;8262:23;;;;:14;:23;;;;;;8253:7;;8262:34;;:32;:34::i;:::-;8297:18;:16;:18::i;:::-;8236:80;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8192:139;8178:153;7908:429;-1:-1:-1;;;7908:429:1:o;9411:114::-;6366:7:0;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;9499:18:1::1;::::0;;-1:-1:-1;;9477:40:1;::::1;9499:18:::0;;;;::::1;;;9498:19;9477:40:::0;;::::1;;::::0;;9411:114::o;3152:1484::-;3067:9;3080:10;3067:23;3059:71;;;;-1:-1:-1;;;3059:71:1;;;;;;;:::i;:::-;3278:11:::1;::::0;::::1;;3270:57;;;;-1:-1:-1::0;;;3270:57:1::1;;;;;;;:::i;:::-;3336:16;3355:13;27206:12:0::0;;;27130:94;3355:13:1::1;3336:32;;3380:9;3375:1076;3399:10;:17;3395:1;:21;3375:1076;;;3440:11;::::0;3460:13;;3478:10:::1;::::0;-1:-1:-1;;;;;3440:11:1::1;::::0;:19:::1;::::0;3460:10;;3471:1;;3460:13;::::1;;;;;:::i;:::-;;;;;;;3440:34;;;;;;;;;;;;;22891:25:2::0;;22879:2;22864:18;;22745:177;3440:34:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3440:48:1::1;;3432:83;;;::::0;-1:-1:-1;;;3432:83:1;;14693:2:2;3432:83:1::1;::::0;::::1;14675:21:2::0;14732:2;14712:18;;;14705:30;-1:-1:-1;;;14751:18:2;;;14744:52;14813:18;;3432:83:1::1;14491:346:2::0;3432:83:1::1;3533:20;:35;3554:10;3565:1;3554:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;3533:35;;;::::1;::::0;;;;;;-1:-1:-1;3533:35:1;;::::1;;3532:36;3524:80;;;;-1:-1:-1::0;;;3524:80:1::1;;;;;;;:::i;:::-;3644:10;3655:1;3644:13;;;;;;;;:::i;:::-;;;;;;;3615:14;:26;3639:1;3630:8;:10;;;;:::i;:::-;3615:26;;;;;;;;;;;:42;;;;3704:4;3666:20;:35;3687:10;3698:1;3687:13;;;;;;;;:::i;:::-;;;;;;;3666:35;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3724:7;3720:722;;;3764:3;3748:10;3759:1;3748:13;;;;;;;;:::i;:::-;;;;;;;:19;3744:689;;;3842:20;::::0;3790:11:::1;::::0;:48:::1;::::0;-1:-1:-1;;;3790:48:1;;3812:10:::1;3790:48;::::0;::::1;9025:34:2::0;3832:4:1::1;9075:18:2::0;;;9068:43;-1:-1:-1;;;;;3790:11:1;;::::1;::::0;:21:::1;::::0;8960:18:2;;3790:48:1::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;3782:81;;;::::0;::::1;;3884:11;::::0;3936:20:::1;::::0;3884:73:::1;::::0;-1:-1:-1;;;3884:73:1;;3909:10:::1;3884:73;::::0;::::1;9362:34:2::0;3929:4:1::1;9412:18:2::0;;;9405:43;9464:18;;;9457:34;;;;-1:-1:-1;;;;;3884:11:1;;::::1;::::0;:24:::1;::::0;9297:18:2;;3884:73:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3876:82;;;::::0;::::1;;3744:689;;;3998:4;3980:10;3991:1;3980:13;;;;;;;;:::i;:::-;;;;;;;:22;3976:457;;4077:18;::::0;4025:11:::1;::::0;:48:::1;::::0;-1:-1:-1;;;4025:48:1;;4047:10:::1;4025:48;::::0;::::1;9025:34:2::0;4067:4:1::1;9075:18:2::0;;;9068:43;-1:-1:-1;;;;;4025:11:1;;::::1;::::0;:21:::1;::::0;8960:18:2;;4025:48:1::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;;4017:79;;;::::0;::::1;;4117:11;::::0;4169:18:::1;::::0;4117:71:::1;::::0;-1:-1:-1;;;4117:71:1;;4142:10:::1;4117:71;::::0;::::1;9362:34:2::0;4162:4:1::1;9412:18:2::0;;;9405:43;9464:18;;;9457:34;;;;-1:-1:-1;;;;;4117:11:1;;::::1;::::0;:24:::1;::::0;9297:18:2;;4117:71:1::1;9122:375:2::0;3976:457:1::1;4228:4;4211:10;4222:1;4211:13;;;;;;;;:::i;:::-;;;;;;;:21;4207:226;;4307:19;::::0;4255:11:::1;::::0;:48:::1;::::0;-1:-1:-1;;;4255:48:1;;4277:10:::1;4255:48;::::0;::::1;9025:34:2::0;4297:4:1::1;9075:18:2::0;;;9068:43;-1:-1:-1;;;;;4255:11:1;;::::1;::::0;:21:::1;::::0;8960:18:2;;4255:48:1::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:71;;4247:80;;;::::0;::::1;;4348:11;::::0;4400:19:::1;::::0;4348:72:::1;::::0;-1:-1:-1;;;4348:72:1;;4373:10:::1;4348:72;::::0;::::1;9362:34:2::0;4393:4:1::1;9412:18:2::0;;;9405:43;9464:18;;;9457:34;;;;-1:-1:-1;;;;;4348:11:1;;::::1;::::0;:24:::1;::::0;9297:18:2;;4348:72:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4340:81;;;::::0;::::1;;3418:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3375:1076;;;;4462:7;4457:127;;4526:10;:17;4503:20;;:40;;;;:::i;:::-;4490:9;:53;;4482:92;;;;-1:-1:-1::0;;;4482:92:1::1;;;;;;;:::i;:::-;4590:40;4600:10;4612;:17;4590:9;:40::i;8582:107::-:0;8640:7;8663:20;8677:5;8663:13;:20::i;4644:778::-;3067:9;3080:10;3067:23;3059:71;;;;-1:-1:-1;;;3059:71:1;;;;;;;:::i;:::-;4760:14:::1;::::0;::::1;::::0;::::1;;;4752:60;;;;-1:-1:-1::0;;;4752:60:1::1;;;;;;;:::i;:::-;4821:16;4840:13;27206:12:0::0;;;27130:94;4840:13:1::1;4866:18;::::0;4821:32;;-1:-1:-1;4866:18:1;;::::1;;;4862:253;;;4941:10;:17;4916:22;;:42;;;;:::i;:::-;4903:9;:55;;4895:94;;;;-1:-1:-1::0;;;4895:94:1::1;;;;;;;:::i;:::-;4862:253;;;5059:10;:17;5033:23;;:43;;;;:::i;:::-;5020:9;:56;;5012:95;;;;-1:-1:-1::0;;;5012:95:1::1;;;;;;;:::i;:::-;5126:9;5121:247;5145:10;:17;5141:1;:21;5121:247;;;5187:20;:35;5208:10;5219:1;5208:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;5187:35;;;::::1;::::0;;;;;;-1:-1:-1;5187:35:1;;::::1;;5186:36;5178:80;;;;-1:-1:-1::0;;;5178:80:1::1;;;;;;;:::i;:::-;5296:10;5307:1;5296:13;;;;;;;;:::i;:::-;;;;;;;5267:14;:26;5291:1;5282:8;:10;;;;:::i;:::-;5267:26;;;;;;;;;;;:42;;;;5356:4;5318:20;:35;5339:10;5350:1;5339:13;;;;;;;;:::i;:::-;;;;;;;5318:35;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;5164:3;;;;;:::i;:::-;;;;5121:247;;;;5376:40;5386:10;5398;:17;5376:9;:40::i;7089:399::-:0;7160:16;7185:21;7209:16;7219:5;7209:9;:16::i;:::-;7185:40;;7232:30;7279:13;-1:-1:-1;;;;;7265:28:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7265:28:1;;7232:61;;7305:9;7300:156;7324:13;7320:1;:17;7300:156;;;7355:12;7370:28;7390:5;7396:1;7370:19;:28::i;:::-;7355:43;;7428:14;:20;7443:4;7428:20;;;;;;;;;;;;7409:13;7423:1;7409:16;;;;;;;;:::i;:::-;;;;;;;;;;:39;-1:-1:-1;7339:3:1;;;;:::i;:::-;;;;7300:156;;7229:201:0;6366:7;6393:6;-1:-1:-1;;;;;6393:6:0;5267:10;6540:23;6532:68;;;;-1:-1:-1;;;6532:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7318:22:0;::::1;7310:73;;;::::0;-1:-1:-1;;;7310:73:0;;11932:2:2;7310:73:0::1;::::0;::::1;11914:21:2::0;11971:2;11951:18;;;11944:30;12010:34;11990:18;;;11983:62;-1:-1:-1;;;12061:18:2;;;12054:36;12107:19;;7310:73:0::1;11730:402:2::0;7310:73:0::1;7394:28;7413:8;7394:18;:28::i;:::-;7229:201:::0;:::o;37453:172::-;37550:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;37550:29:0;-1:-1:-1;;;;;37550:29:0;;;;;;;;;37591:28;;37550:24;;37591:28;;;;;;;37453:172;;;:::o;35818:1529::-;35915:35;35953:20;35965:7;35953:11;:20::i;:::-;36024:18;;35915:58;;-1:-1:-1;35982:22:0;;-1:-1:-1;;;;;36008:34:0;5267:10;-1:-1:-1;;;;;36008:34:0;;:81;;;-1:-1:-1;5267:10:0;36053:20;36065:7;36053:11;:20::i;:::-;-1:-1:-1;;;;;36053:36:0;;36008:81;:142;;;-1:-1:-1;36117:18:0;;36100:50;;5267:10;32546:186;:::i;36100:50::-;35982:169;;36176:17;36160:101;;;;-1:-1:-1;;;36160:101:0;;17421:2:2;36160:101:0;;;17403:21:2;17460:2;17440:18;;;17433:30;17499:34;17479:18;;;17472:62;-1:-1:-1;;;17550:18:2;;;17543:48;17608:19;;36160:101:0;17219:414:2;36160:101:0;36308:4;-1:-1:-1;;;;;36286:26:0;:13;:18;;;-1:-1:-1;;;;;36286:26:0;;36270:98;;;;-1:-1:-1;;;36270:98:0;;15882:2:2;36270:98:0;;;15864:21:2;15921:2;15901:18;;;15894:30;15960:34;15940:18;;;15933:62;-1:-1:-1;;;16011:18:2;;;16004:36;16057:19;;36270:98:0;15680:402:2;36270:98:0;-1:-1:-1;;;;;36383:16:0;;36375:66;;;;-1:-1:-1;;;36375:66:0;;13869:2:2;36375:66:0;;;13851:21:2;13908:2;13888:18;;;13881:30;13947:34;13927:18;;;13920:62;-1:-1:-1;;;13998:18:2;;;13991:35;14043:19;;36375:66:0;13667:401:2;36375:66:0;36550:49;36567:1;36571:7;36580:13;:18;;;36550:8;:49::i;:::-;-1:-1:-1;;;;;36608:18:0;;;;;;:12;:18;;;;;:31;;36638:1;;36608:18;:31;;36638:1;;-1:-1:-1;;;;;36608:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;36608:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36646:16:0;;-1:-1:-1;36646:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;36646:16:0;;:29;;-1:-1:-1;;36646:29:0;;:::i;:::-;;;-1:-1:-1;;;;;36646:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36705:43:0;;;;;;;;-1:-1:-1;;;;;36705:43:0;;;;;-1:-1:-1;;;;;36731:15:0;36705:43;;;;;;;;;-1:-1:-1;36682:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;36682:66:0;-1:-1:-1;;;;;;36682:66:0;;;;;;;;;;;36998:11;36694:7;-1:-1:-1;36998:11:0;:::i;:::-;37061:1;37020:24;;;:11;:24;;;;;:29;36976:33;;-1:-1:-1;;;;;;37020:29:0;37016:236;;37078:20;37086:11;33853:12;;-1:-1:-1;33843:22:0;33766:105;37078:20;37074:171;;;37138:97;;;;;;;;37165:18;;-1:-1:-1;;;;;37138:97:0;;;;;;37196:28;;;;-1:-1:-1;;;;;37138:97:0;;;;;;;;;-1:-1:-1;37111:24:0;;;:11;:24;;;;;;;:124;;;;;;;;;-1:-1:-1;;;37111:124:0;-1:-1:-1;;;;;;37111:124:0;;;;;;;;;;;;37074:171;37284:7;37280:2;-1:-1:-1;;;;;37265:27:0;37274:4;-1:-1:-1;;;;;37265:27:0;;;;;;;;;;;37299:42;35908:1439;;;35818:1529;;;:::o;29458:606::-;-1:-1:-1;;;;;;;;;;;;;;;;;29575:16:0;29583:7;33853:12;;-1:-1:-1;33843:22:0;33766:105;29575:16;29567:71;;;;-1:-1:-1;;;29567:71:0;;12694:2:2;29567:71:0;;;12676:21:2;12733:2;12713:18;;;12706:30;12772:34;12752:18;;;12745:62;-1:-1:-1;;;12823:18:2;;;12816:40;12873:19;;29567:71:0;12492:406:2;29567:71:0;29647:26;29695:12;29684:7;:23;29680:93;;29739:22;29749:12;29739:7;:22;:::i;:::-;:26;;29764:1;29739:26;:::i;:::-;29718:47;;29680:93;29801:7;29781:212;29818:18;29810:4;:26;29781:212;;29855:31;29889:17;;;:11;:17;;;;;;;;;29855:51;;;;;;;;;-1:-1:-1;;;;;29855:51:0;;;;;-1:-1:-1;;;29855:51:0;;;-1:-1:-1;;;;;29855:51:0;;;;;;;;29919:28;29915:71;;29967:9;29458:606;-1:-1:-1;;;;29458:606:0:o;29915:71::-;-1:-1:-1;29838:6:0;;;;:::i;:::-;;;;29781:212;;;-1:-1:-1;30001:57:0;;-1:-1:-1;;;30001:57:0;;21349:2:2;30001:57:0;;;21331:21:2;21388:2;21368:18;;;21361:30;21427:34;21407:18;;;21400:62;-1:-1:-1;;;21478:18:2;;;21471:45;21533:19;;30001:57:0;21147:411:2;7590:191:0;7664:16;7683:6;;-1:-1:-1;;;;;7700:17:0;;;-1:-1:-1;;;;;;7700:17:0;;;;;;7733:40;;7683:6;;;;;;;7733:40;;7664:16;7733:40;7653:128;7590:191;:::o;33877:98::-;33942:27;33952:2;33956:8;33942:27;;;;;;;;;;;;:9;:27::i;39168:690::-;39305:4;-1:-1:-1;;;;;39322:13:0;;8794:20;8842:8;39318:535;;39361:72;;-1:-1:-1;;;39361:72:0;;-1:-1:-1;;;;;39361:36:0;;;;;:72;;5267:10;;39412:4;;39418:7;;39427:5;;39361:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39361:72:0;;;;;;;;-1:-1:-1;;39361:72:0;;;;;;;;;;;;:::i;:::-;;;39348:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39592:13:0;;39588:215;;39625:61;;-1:-1:-1;;;39625:61:0;;;;;;;:::i;39588:215::-;39771:6;39765:13;39756:6;39752:2;39748:15;39741:38;39348:464;-1:-1:-1;;;;;;39483:55:0;-1:-1:-1;;;39483:55:0;;-1:-1:-1;39476:62:0;;39318:535;-1:-1:-1;39841:4:0;39318:535;39168:690;;;;;;:::o;8466:108:1:-;8526:13;8555;8548:20;;;;;:::i;2886:723:0:-;2942:13;3163:10;3159:53;;-1:-1:-1;;3190:10:0;;;;;;;;;;;;-1:-1:-1;;;3190:10:0;;;;;2886:723::o;3159:53::-;3237:5;3222:12;3278:78;3285:9;;3278:78;;3311:8;;;;:::i;:::-;;-1:-1:-1;3334:10:0;;-1:-1:-1;3342:2:0;3334:10;;:::i;:::-;;;3278:78;;;3366:19;3398:6;-1:-1:-1;;;;;3388:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3388:17:0;;3366:39;;3416:154;3423:10;;3416:154;;3450:11;3460:1;3450:11;;:::i;:::-;;-1:-1:-1;3519:10:0;3527:2;3519:5;:10;:::i;:::-;3506:24;;:2;:24;:::i;:::-;3493:39;;3476:6;3483;3476:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;3476:56:0;;;;;;;;-1:-1:-1;3547:11:0;3556:2;3547:11;;:::i;:::-;;;3416:154;;8343:116:1;8411:13;8440;8433:20;;;;;:::i;29212:240:0:-;29273:7;-1:-1:-1;;;;;29305:19:0;;29289:102;;;;-1:-1:-1;;;29289:102:0;;14275:2:2;29289:102:0;;;14257:21:2;14314:2;14294:18;;;14287:30;14353:34;14333:18;;;14326:62;-1:-1:-1;;;14404:18:2;;;14397:47;14461:19;;29289:102:0;14073:413:2;29289:102:0;-1:-1:-1;;;;;;29413:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;29413:32:0;;-1:-1:-1;;;;;29413:32:0;;29212:240::o;34314:1272::-;34442:12;;-1:-1:-1;;;;;34469:16:0;;34461:62;;;;-1:-1:-1;;;34461:62:0;;20172:2:2;34461:62:0;;;20154:21:2;20211:2;20191:18;;;20184:30;20250:34;20230:18;;;20223:62;-1:-1:-1;;;20301:18:2;;;20294:31;20342:19;;34461:62:0;19970:397:2;34461:62:0;34660:21;34668:12;33853;;-1:-1:-1;33843:22:0;33766:105;34660:21;34659:22;34651:64;;;;-1:-1:-1;;;34651:64:0;;19814:2:2;34651:64:0;;;19796:21:2;19853:2;19833:18;;;19826:30;19892:31;19872:18;;;19865:59;19941:18;;34651:64:0;19612:353:2;34651:64:0;34742:12;34730:8;:24;;34722:71;;;;-1:-1:-1;;;34722:71:0;;22179:2:2;34722:71:0;;;22161:21:2;22218:2;22198:18;;;22191:30;22257:34;22237:18;;;22230:62;-1:-1:-1;;;22308:18:2;;;22301:32;22350:19;;34722:71:0;21977:398:2;34722:71:0;-1:-1:-1;;;;;34905:16:0;;34872:30;34905:16;;;:12;:16;;;;;;;;;34872:49;;;;;;;;;-1:-1:-1;;;;;34872:49:0;;;;;-1:-1:-1;;;34872:49:0;;;;;;;;;;;34947:119;;;;;;;;34967:19;;34872:49;;34947:119;;;34967:39;;34997:8;;34967:39;:::i;:::-;-1:-1:-1;;;;;34947:119:0;;;;;35050:8;35015:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;34947:119:0;;;;;;-1:-1:-1;;;;;34928:16:0;;;;;;;:12;:16;;;;;;;;:138;;;;;;;;-1:-1:-1;;;34928:138:0;;;;;;;;;;;;35101:43;;;;;;;;;;-1:-1:-1;;;;;35127:15:0;35101:43;;;;;;;;35073:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;35073:71:0;-1:-1:-1;;;;;;35073:71:0;;;;;;;;;;;;;;;;;;35085:12;;35197:281;35221:8;35217:1;:12;35197:281;;;35250:38;;35275:12;;-1:-1:-1;;;;;35250:38:0;;;35267:1;;35250:38;;35267:1;;35250:38;35315:59;35346:1;35350:2;35354:12;35368:5;35315:22;:59::i;:::-;35297:150;;;;-1:-1:-1;;;35297:150:0;;;;;;;:::i;:::-;35456:14;;;;:::i;:::-;;;;35231:3;;;;;:::i;:::-;;;;35197:281;;;-1:-1:-1;35486:12:0;:27;;;35520:60;33216:311;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:406:2;78:5;-1:-1:-1;;;;;104:6:2;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:2;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:723::-;479:5;532:3;525:4;517:6;513:17;509:27;499:55;;550:1;547;540:12;499:55;586:6;573:20;612:4;-1:-1:-1;;;;;631:2:2;628:26;625:52;;;657:18;;:::i;:::-;703:2;700:1;696:10;726:28;750:2;746;742:11;726:28;:::i;:::-;788:15;;;819:12;;;;851:15;;;885;;;881:24;;878:33;-1:-1:-1;875:53:2;;;924:1;921;914:12;875:53;946:1;937:10;;956:163;970:2;967:1;964:9;956:163;;;1027:17;;1015:30;;988:1;981:9;;;;;1065:12;;;;1097;;956:163;;;-1:-1:-1;1137:5:2;425:723;-1:-1:-1;;;;;;;425:723:2:o;1153:247::-;1212:6;1265:2;1253:9;1244:7;1240:23;1236:32;1233:52;;;1281:1;1278;1271:12;1233:52;1320:9;1307:23;1339:31;1364:5;1339:31;:::i;1405:251::-;1475:6;1528:2;1516:9;1507:7;1503:23;1499:32;1496:52;;;1544:1;1541;1534:12;1496:52;1576:9;1570:16;1595:31;1620:5;1595:31;:::i;1661:388::-;1729:6;1737;1790:2;1778:9;1769:7;1765:23;1761:32;1758:52;;;1806:1;1803;1796:12;1758:52;1845:9;1832:23;1864:31;1889:5;1864:31;:::i;:::-;1914:5;-1:-1:-1;1971:2:2;1956:18;;1943:32;1984:33;1943:32;1984:33;:::i;:::-;2036:7;2026:17;;;1661:388;;;;;:::o;2054:456::-;2131:6;2139;2147;2200:2;2188:9;2179:7;2175:23;2171:32;2168:52;;;2216:1;2213;2206:12;2168:52;2255:9;2242:23;2274:31;2299:5;2274:31;:::i;:::-;2324:5;-1:-1:-1;2381:2:2;2366:18;;2353:32;2394:33;2353:32;2394:33;:::i;:::-;2054:456;;2446:7;;-1:-1:-1;;;2500:2:2;2485:18;;;;2472:32;;2054:456::o;2515:794::-;2610:6;2618;2626;2634;2687:3;2675:9;2666:7;2662:23;2658:33;2655:53;;;2704:1;2701;2694:12;2655:53;2743:9;2730:23;2762:31;2787:5;2762:31;:::i;:::-;2812:5;-1:-1:-1;2869:2:2;2854:18;;2841:32;2882:33;2841:32;2882:33;:::i;:::-;2934:7;-1:-1:-1;2988:2:2;2973:18;;2960:32;;-1:-1:-1;3043:2:2;3028:18;;3015:32;-1:-1:-1;;;;;3059:30:2;;3056:50;;;3102:1;3099;3092:12;3056:50;3125:22;;3178:4;3170:13;;3166:27;-1:-1:-1;3156:55:2;;3207:1;3204;3197:12;3156:55;3230:73;3295:7;3290:2;3277:16;3272:2;3268;3264:11;3230:73;:::i;:::-;3220:83;;;2515:794;;;;;;;:::o;3314:382::-;3379:6;3387;3440:2;3428:9;3419:7;3415:23;3411:32;3408:52;;;3456:1;3453;3446:12;3408:52;3495:9;3482:23;3514:31;3539:5;3514:31;:::i;:::-;3564:5;-1:-1:-1;3621:2:2;3606:18;;3593:32;3634:30;3593:32;3634:30;:::i;3701:315::-;3769:6;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3885:9;3872:23;3904:31;3929:5;3904:31;:::i;:::-;3954:5;4006:2;3991:18;;;;3978:32;;-1:-1:-1;;;3701:315:2:o;4021:348::-;4105:6;4158:2;4146:9;4137:7;4133:23;4129:32;4126:52;;;4174:1;4171;4164:12;4126:52;4214:9;4201:23;-1:-1:-1;;;;;4239:6:2;4236:30;4233:50;;;4279:1;4276;4269:12;4233:50;4302:61;4355:7;4346:6;4335:9;4331:22;4302:61;:::i;4374:477::-;4464:6;4472;4525:2;4513:9;4504:7;4500:23;4496:32;4493:52;;;4541:1;4538;4531:12;4493:52;4581:9;4568:23;-1:-1:-1;;;;;4606:6:2;4603:30;4600:50;;;4646:1;4643;4636:12;4600:50;4669:61;4722:7;4713:6;4702:9;4698:22;4669:61;:::i;:::-;4659:71;;;4780:2;4769:9;4765:18;4752:32;4793:28;4815:5;4793:28;:::i;4856:245::-;4923:6;4976:2;4964:9;4955:7;4951:23;4947:32;4944:52;;;4992:1;4989;4982:12;4944:52;5024:9;5018:16;5043:28;5065:5;5043:28;:::i;5106:245::-;5164:6;5217:2;5205:9;5196:7;5192:23;5188:32;5185:52;;;5233:1;5230;5223:12;5185:52;5272:9;5259:23;5291:30;5315:5;5291:30;:::i;5356:249::-;5425:6;5478:2;5466:9;5457:7;5453:23;5449:32;5446:52;;;5494:1;5491;5484:12;5446:52;5526:9;5520:16;5545:30;5569:5;5545:30;:::i;6635:450::-;6704:6;6757:2;6745:9;6736:7;6732:23;6728:32;6725:52;;;6773:1;6770;6763:12;6725:52;6813:9;6800:23;-1:-1:-1;;;;;6838:6:2;6835:30;6832:50;;;6878:1;6875;6868:12;6832:50;6901:22;;6954:4;6946:13;;6942:27;-1:-1:-1;6932:55:2;;6983:1;6980;6973:12;6932:55;7006:73;7071:7;7066:2;7053:16;7048:2;7044;7040:11;7006:73;:::i;7090:180::-;7149:6;7202:2;7190:9;7181:7;7177:23;7173:32;7170:52;;;7218:1;7215;7208:12;7170:52;-1:-1:-1;7241:23:2;;7090:180;-1:-1:-1;7090:180:2:o;7275:184::-;7345:6;7398:2;7386:9;7377:7;7373:23;7369:32;7366:52;;;7414:1;7411;7404:12;7366:52;-1:-1:-1;7437:16:2;;7275:184;-1:-1:-1;7275:184:2:o;7464:257::-;7505:3;7543:5;7537:12;7570:6;7565:3;7558:19;7586:63;7642:6;7635:4;7630:3;7626:14;7619:4;7612:5;7608:16;7586:63;:::i;:::-;7703:2;7682:15;-1:-1:-1;;7678:29:2;7669:39;;;;7710:4;7665:50;;7464:257;-1:-1:-1;;7464:257:2:o;7726:664::-;7953:3;7991:6;7985:13;8007:53;8053:6;8048:3;8041:4;8033:6;8029:17;8007:53;:::i;:::-;8123:13;;8082:16;;;;8145:57;8123:13;8082:16;8179:4;8167:17;;8145:57;:::i;:::-;8269:13;;8224:20;;;8291:57;8269:13;8224:20;8325:4;8313:17;;8291:57;:::i;:::-;8364:20;;7726:664;-1:-1:-1;;;;;7726:664:2:o;9502:488::-;-1:-1:-1;;;;;9771:15:2;;;9753:34;;9823:15;;9818:2;9803:18;;9796:43;9870:2;9855:18;;9848:34;;;9918:3;9913:2;9898:18;;9891:31;;;9696:4;;9939:45;;9964:19;;9956:6;9939:45;:::i;:::-;9931:53;9502:488;-1:-1:-1;;;;;;9502:488:2:o;10274:632::-;10445:2;10497:21;;;10567:13;;10470:18;;;10589:22;;;10416:4;;10445:2;10668:15;;;;10642:2;10627:18;;;10416:4;10711:169;10725:6;10722:1;10719:13;10711:169;;;10786:13;;10774:26;;10855:15;;;;10820:12;;;;10747:1;10740:9;10711:169;;;-1:-1:-1;10897:3:2;;10274:632;-1:-1:-1;;;;;;10274:632:2:o;11103:219::-;11252:2;11241:9;11234:21;11215:4;11272:44;11312:2;11301:9;11297:18;11289:6;11272:44;:::i;12137:350::-;12339:2;12321:21;;;12378:2;12358:18;;;12351:30;12417:28;12412:2;12397:18;;12390:56;12478:2;12463:18;;12137:350::o;12903:355::-;13105:2;13087:21;;;13144:2;13124:18;;;13117:30;13183:33;13178:2;13163:18;;13156:61;13249:2;13234:18;;12903:355::o;16087:356::-;16289:2;16271:21;;;16308:18;;;16301:30;16367:34;16362:2;16347:18;;16340:62;16434:2;16419:18;;16087:356::o;17638:399::-;17840:2;17822:21;;;17879:2;17859:18;;;17852:30;17918:34;17913:2;17898:18;;17891:62;-1:-1:-1;;;17984:2:2;17969:18;;17962:33;18027:3;18012:19;;17638:399::o;18790:415::-;18992:2;18974:21;;;19031:2;19011:18;;;19004:30;19070:34;19065:2;19050:18;;19043:62;-1:-1:-1;;;19136:2:2;19121:18;;19114:49;19195:3;19180:19;;18790:415::o;19210:397::-;19412:2;19394:21;;;19451:2;19431:18;;;19424:30;19490:34;19485:2;19470:18;;19463:62;-1:-1:-1;;;19556:2:2;19541:18;;19534:31;19597:3;19582:19;;19210:397::o;22927:275::-;22998:2;22992:9;23063:2;23044:13;;-1:-1:-1;;23040:27:2;23028:40;;-1:-1:-1;;;;;23083:34:2;;23119:22;;;23080:62;23077:88;;;23145:18;;:::i;:::-;23181:2;23174:22;22927:275;;-1:-1:-1;22927:275:2:o;23207:253::-;23247:3;-1:-1:-1;;;;;23336:2:2;23333:1;23329:10;23366:2;23363:1;23359:10;23397:3;23393:2;23389:12;23384:3;23381:21;23378:47;;;23405:18;;:::i;:::-;23441:13;;23207:253;-1:-1:-1;;;;23207:253:2:o;23465:128::-;23505:3;23536:1;23532:6;23529:1;23526:13;23523:39;;;23542:18;;:::i;:::-;-1:-1:-1;23578:9:2;;23465:128::o;23598:120::-;23638:1;23664;23654:35;;23669:18;;:::i;:::-;-1:-1:-1;23703:9:2;;23598:120::o;23723:168::-;23763:7;23829:1;23825;23821:6;23817:14;23814:1;23811:21;23806:1;23799:9;23792:17;23788:45;23785:71;;;23836:18;;:::i;:::-;-1:-1:-1;23876:9:2;;23723:168::o;23896:246::-;23936:4;-1:-1:-1;;;;;24049:10:2;;;;24019;;24071:12;;;24068:38;;;24086:18;;:::i;:::-;24123:13;;23896:246;-1:-1:-1;;;23896:246:2:o;24147:125::-;24187:4;24215:1;24212;24209:8;24206:34;;;24220:18;;:::i;:::-;-1:-1:-1;24257:9:2;;24147:125::o;24277:258::-;24349:1;24359:113;24373:6;24370:1;24367:13;24359:113;;;24449:11;;;24443:18;24430:11;;;24423:39;24395:2;24388:10;24359:113;;;24490:6;24487:1;24484:13;24481:48;;;-1:-1:-1;;24525:1:2;24507:16;;24500:27;24277:258::o;24540:136::-;24579:3;24607:5;24597:39;;24616:18;;:::i;:::-;-1:-1:-1;;;24652:18:2;;24540:136::o;24681:380::-;24760:1;24756:12;;;;24803;;;24824:61;;24878:4;24870:6;24866:17;24856:27;;24824:61;24931:2;24923:6;24920:14;24900:18;24897:38;24894:161;;;24977:10;24972:3;24968:20;24965:1;24958:31;25012:4;25009:1;25002:15;25040:4;25037:1;25030:15;24894:161;;24681:380;;;:::o;25066:135::-;25105:3;-1:-1:-1;;25126:17:2;;25123:43;;;25146:18;;:::i;:::-;-1:-1:-1;25193:1:2;25182:13;;25066:135::o;25206:112::-;25238:1;25264;25254:35;;25269:18;;:::i;:::-;-1:-1:-1;25303:9:2;;25206:112::o;25323:127::-;25384:10;25379:3;25375:20;25372:1;25365:31;25415:4;25412:1;25405:15;25439:4;25436:1;25429:15;25455:127;25516:10;25511:3;25507:20;25504:1;25497:31;25547:4;25544:1;25537:15;25571:4;25568:1;25561:15;25587:127;25648:10;25643:3;25639:20;25636:1;25629:31;25679:4;25676:1;25669:15;25703:4;25700:1;25693:15;25719:127;25780:10;25775:3;25771:20;25768:1;25761:31;25811:4;25808:1;25801:15;25835:4;25832:1;25825:15;25851:131;-1:-1:-1;;;;;25926:31:2;;25916:42;;25906:70;;25972:1;25969;25962:12;25987:118;26073:5;26066:13;26059:21;26052:5;26049:32;26039:60;;26095:1;26092;26085:12;26110:131;-1:-1:-1;;;;;;26184:32:2;;26174:43;;26164:71;;26231:1;26228;26221:12
Swarm Source
ipfs://9f91c25410f8d7a57cf4159c67007c3d6a4224308a08d37989fa2c252271afb0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.