Contract 0x7a1aC006A24678F5d41B20D309D0d95f892b8Ae4

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0c47e0a64122de7240bac23a70b82d278f27ebc87cf26606c0c20471e5ff82c9Set Approval For...228704712022-11-26 15:26:358 days 16 hrs ago0xdbc35fb4ed163425953928fc2c0d6f9425855035 IN  Vending Machines NFT: VMH Token0 AVAX0.0007719185 26.5
0xdff5795da865b64e5b68ecfa2352c1a0803436e74e7fa09c1221dc8a1f11b4acSet Approval For...228578802022-11-26 8:06:318 days 23 hrs ago0xec5702441bd31ce0c8a6b8b951bb388276f1321d IN  Vending Machines NFT: VMH Token0 AVAX0.000774145654 26.576458309
0xc39593a540a7e316fb45d1bf242a1c5c04cb4c4a227876631ac7f24ca3febc51Set Approval For...228057462022-11-25 2:00:2410 days 5 hrs ago0xab7727c55155234b7a53eda30cead15902cca5e8 IN  Vending Machines NFT: VMH Token0 AVAX0.0012253865 26.5
0x46f6fcb495e1f4e985292cc182cbf10668d8c4f854551ee7465df69d101e778dSet Approval For...226445702022-11-21 6:02:0114 days 1 hr ago0xdb1893cee7e4415756f4a09c8227ec80c40b48cd IN  Vending Machines NFT: VMH Token0 AVAX0.001265855725 27.425
0xa33fdaa3685b2f7ec8237c85fee121c2b0dc7dbe14856f88e82818e0633dabccSet Approval For...225116242022-11-18 0:40:1317 days 7 hrs ago0xa309e549a70f2aa1b6a403b5364e00517a645ead IN  Vending Machines NFT: VMH Token0 AVAX0.0012253865 26.5
0x744cd1ad7e83ae61f8175bcb9f2b6ec032daea961e32a1bb60720b4f8b958ee1Air Drop VM Owne...224759342022-11-17 3:56:3718 days 4 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.00659035 26
0x8fdb25018bc82d9321e6adc1bb551045c1d8ffa50a8a559bd2faf653edcd0a23Air Drop VM Owne...224687802022-11-16 23:46:4218 days 8 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.014851746 26
0x22139fb6667215479e70ba310d74a2997c34c14e32403bfdace22ff7852032e8Set Approval For...224679842022-11-16 23:18:5418 days 8 hrs ago0x83923de4ea901cba9d157bef5496d9d0d356867e IN  Vending Machines NFT: VMH Token0 AVAX0.0012716275 27.5
0xf691bc8401166fb7ccf1164ddb2acc7b9098f9e9c06704b4aab12cf52e7090a9Safe Transfer Fr...223644862022-11-14 11:27:2020 days 20 hrs ago0x2ed087297c56f469c033ff2188a5916f4478063c IN  Vending Machines NFT: VMH Token0 AVAX0.004608175 27.5
0xe53134b2edf6d42e1ea2c4a5785f92bb093e3970585d765aa41b5be37c5e3858Safe Transfer Fr...222904062022-11-12 17:02:3622 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMH Token0 AVAX0.00432476 27.5
0xecf86615c300a637cba9ef066f2648df3934be0297a63fa214889210fdc5e2a6Safe Transfer Fr...222903512022-11-12 17:00:4622 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMH Token0 AVAX0.00385451 27.5
0x4b62331487753379f801407c4752a9c62e1a4c04564846f7cf5c5185d8107ae0Safe Transfer Fr...222902892022-11-12 16:58:3822 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMH Token0 AVAX0.004530845 27.5
0x76fe5c925bc5d81c78b667de4a73efe97cbfb0a4585b7b4d03bb87da6b46cb20Set Approval For...220455292022-11-06 23:13:3528 days 8 hrs ago0xfbe8529277c7db9187fce93a214bcfbab6e8b1c8 IN  Vending Machines NFT: VMH Token0 AVAX0.0012253865 26.5
0x29bb05e0004fc8a0917e5543ae9f77454805e756d8575f6d35d4e7ffb98d6b76Set Approval For...220404872022-11-06 20:22:0228 days 11 hrs ago0xfbe8529277c7db9187fce93a214bcfbab6e8b1c8 IN  Vending Machines NFT: VMH Token0 AVAX0.001243041313 26.8818
0x7e2880a8db38d58c97f4d373e5b420f84a2f7201ca58024d75cdc3368e88e663Air Drop VM Owne...220108492022-11-06 3:12:1729 days 4 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.010684648 26
0xabb7be17263c8f68e43b74efa7cc96e30ec55cbf9ae923ac21ecbac4f076d0b2Set Approval For...219913192022-11-05 16:02:1829 days 15 hrs ago0x59e9e4a97ede955cbd704546683a4d31c718e205 IN  Vending Machines NFT: VMH Token0 AVAX0.0012253865 26.5
0xe3ed9c96c70027e61d84eb9f2c7584ac68a5918ca827dcc757d589397bd72383Air Drop VM Owne...219465302022-11-04 14:32:5630 days 17 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.010684648 26
0x02002d22c380e8a1ef02bfa07ab9a0cb7eecd01d240259ed8960086494e1c83cAir Drop VM Owne...218830342022-11-03 2:25:0132 days 5 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.00659035 26
0x1da72b754407b0fc004842f930c59e5d79594089988acc22ec20710e901b4429Set Approval For...218540012022-11-02 9:59:4832 days 21 hrs ago0xe1b06b9e90f30688399c68f52032550b6701413e IN  Vending Machines NFT: VMH Token0 AVAX0.001243041313 26.8818
0x3f15844728e22ed59a85b38fc43d196da5045bb4d72c80221385c3ad5b7d84dfAir Drop VM Owne...218442022022-11-02 4:23:4333 days 3 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.010684648 26
0x92af12d1ccbca99671213cbf29fb57efc5b8bde527467fb28a11fb4baaa38502Air Drop VM Owne...218310742022-11-01 20:54:4533 days 11 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.00659035 26
0x7bdf458723ffe7b99a7fb438e734a678389dcd1e148c958eae68bc22b5cd2e15Air Drop VM Owne...218293822022-11-01 19:56:5333 days 12 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.010684648 26
0x65e699d76e184b87e9d115ef5a52507d8317aa4724b9382ae846912e4f60f9d4Emergency Withdr...217534292022-10-31 1:03:0635 days 6 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.000793728 26
0x7ca147d746ffcecd82a014b70ae461e7c94b6c018ce0e34364a3f74c0cd77062Set Approval For...216888602022-10-29 12:20:1236 days 19 hrs ago0xfb180a49ae5209fb308c70f85c1d10e605cda4e4 IN  Vending Machines NFT: VMH Token0 AVAX0.0007719185 26.5
0x2b72bd47752a68f0827c31bccdc816a2fdc709441edecc73991ce9e0285b2289Air Drop VM Owne...216820812022-10-29 8:30:2836 days 23 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMH Token0 AVAX0.00659035 26
[ Download CSV Export 

OVERVIEW

VM Hats NFT - Art done by community member. These Hats have staking abilities!

Latest 10 internal transactions
Parent Txn Hash Block From To Value
0x65e699d76e184b87e9d115ef5a52507d8317aa4724b9382ae846912e4f60f9d4217534292022-10-31 1:03:0635 days 6 hrs ago Vending Machines NFT: VMH TokenVending Machines NFT: Deployer0.535399999999984036 AVAX
0x8ed57779ba9f50767204f17d2bbe9e42bb2b6888c95a5de79ccd85b797169f51217526702022-10-31 0:37:2135 days 7 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMH Token0.003 AVAX
0x5278283bdbef6b11d17021cd390c57baf45971aad69ab0629ed36026b33a2d44211804532022-10-17 12:45:3348 days 19 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMH Token0.003 AVAX
0xfc37ce29c0794f37d0eb45f994950f87927b17507564940b5c2a1543a3157a49210998902022-10-15 14:54:4750 days 17 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMH Token0.0027 AVAX
0x1441c8b3e6c83dbcacd20187d8820133c8dc9ee23d14d196220aa0d609037fb7210083162022-10-13 11:05:5152 days 20 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMH Token0.0027 AVAX
0x5af6382628da64ea7dea68f8aa5debf6275bc53164664018078b74f34013c10c157476292022-06-08 5:30:15180 days 2 hrs ago Vending Machines NFT: VMH Token0x236adcccba5ffe5e3e36c4beac94079f1e4459610.388000000000001824 AVAX
0xd32c28fa4e16eedbe4314b620241e821fa83776691fa72b9c35fadbec80a0ed4141787882022-05-02 13:27:41216 days 18 hrs ago Vending Machines NFT: VMH Token0x1ddbccffb075f9242720554391d6cab8084ad2fc0.097000000000003535 AVAX
0xde5995b830d451d20e26dde1877de21c5424d09e86293fb7052b46dfddb940d6141787752022-05-02 13:27:15216 days 18 hrs ago Vending Machines NFT: VMH Token0x1ddbccffb075f9242720554391d6cab8084ad2fc0.097000000000003535 AVAX
0xc387a672b8174322c3d43026fe1e8707cda3c464302796f83107e077b5f51be2141786992022-05-02 13:24:32216 days 18 hrs ago Vending Machines NFT: VMH Token0x15384d0578cfcba6c9e29777599871c8e08785130.097000000000003535 AVAX
0x707f01e9a06cdedea2857c5680b040d8c9ab994727ad409e227d6394ac545183141785122022-05-02 13:18:17216 days 18 hrs ago Vending Machines NFT: VMH Token0x1ddbccffb075f9242720554391d6cab8084ad2fc0.097000000000003535 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VMHats

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-02-09
*/

// SPDX-License-Identifier: MIT
// Created by petdomaa100 & modified by xrpant

pragma solidity 0.8.11;


library Strings {
	function toString(uint256 value) internal pure returns(string memory) {
		if (value == 0) return "0";

		uint256 temp = value;
		uint256 digits;

		while (temp != 0) {
			digits++;
			temp /= 10;
		}

		bytes memory buffer = new bytes(digits);

		while (value != 0) {
			digits -= 1;
			buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
			value /= 10;
		}

		return string(buffer);
	}
}

library Address {
	function isContract(address account) internal view returns(bool) {
		return account.code.length > 0;
	}
}

library Counters {
	struct Counter {
		uint256 _value;
	}


	function current(Counter storage counter) internal view returns(uint256) {
		return counter._value;
	}

	function increment(Counter storage counter) internal {
		unchecked {
			counter._value += 1;
		}
	}

	function decrement(Counter storage counter) internal {
		uint256 value = counter._value;
		require(value > 0, "Counter: decrement overflow");

		unchecked {
			counter._value = value - 1;
		}
	}

	function reset(Counter storage counter) internal {
		counter._value = 0;
	}
}


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

interface IERC721 is IERC165 {
	event Transfer(address indexed from, address indexed to, uint256 indexed tokenID);
	event Approval(address indexed owner, address indexed approved, uint256 indexed tokenID);
	event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

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

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

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

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

	function approve(address to, uint256 tokenID) external;

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

	function setApprovalForAll(address operator, bool _approved) external;

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

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

interface IERC721Metadata is IERC721 {
	function name() external view returns(string memory);

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

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

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

interface IERC2981Royalties {
	function royaltyInfo(uint256 tokenID, uint256 value) external view returns(address receiver, uint256 royaltyAmount);
}


abstract contract Context {
	function _msgSender() internal view virtual returns(address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns(bytes calldata) {
		return msg.data;
	}
}

abstract contract Ownable is Context {
	address private _owner;

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


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


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

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


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

		_transferOwnership(newOwner);
	}

	function _transferOwnership(address newOwner) internal virtual {
		address oldOwner = _owner;

		_owner = newOwner;

		emit OwnershipTransferred(oldOwner, newOwner);
	}
}

abstract contract ReentrancyGuard {
	uint256 private constant _NOT_ENTERED = 1;
	uint256 private constant _ENTERED = 2;

	uint256 private _status;

	constructor() {
		_status = _NOT_ENTERED;
	}


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

		_status = _ENTERED;

		_;

		_status = _NOT_ENTERED;
	}
}


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

abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
	using Address for address;
	using Strings for uint256;

	string private _name;
	string private _symbol;

	mapping(uint256 => address) private _owners;
	mapping(address => uint256) private _balances;
	mapping(uint256 => address) private _tokenApprovals;
	mapping(address => mapping(address => bool)) private _operatorApprovals;

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

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

	function balanceOf(address owner) public view virtual override returns(uint256) {
		require(owner != address(0), "ERC721: balance query for the zero address");

		return _balances[owner];
	}

	function ownerOf(uint256 tokenId) public view virtual override returns(address) {
		address owner = _owners[tokenId];

		require(owner != address(0), "ERC721: owner query for nonexistent token");

		return owner;
	}

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

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

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

		string memory baseURI = _baseURI();

		return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenID.toString())) : "";
	}

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

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

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

		_approve(to, tokenID);
	}

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

		return _tokenApprovals[tokenID];
	}

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

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

	function transferFrom(address from, address to, uint256 tokenID) public virtual override {
		//solhint-disable-next-line max-line-length
		require(_isApprovedOrOwner(_msgSender(), tokenID), "ERC721: transfer caller is not owner nor approved");

		_transfer(from, to, tokenID);
	}

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

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

		_safeTransfer(from, to, tokenID, _data);
	}

	function _safeTransfer(address from, address to, uint256 tokenID, bytes memory _data) internal virtual {
		_transfer(from, to, tokenID);

		require(_checkOnERC721Received(from, to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

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

	function _isApprovedOrOwner(address spender, uint256 tokenID) internal view virtual returns(bool) {
		require(_exists(tokenID), "ERC721: operator query for nonexistent token");

		address owner = ERC721.ownerOf(tokenID);

		return (spender == owner || getApproved(tokenID) == spender || isApprovedForAll(owner, spender));
	}

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

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

		require(_checkOnERC721Received(address(0), to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

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

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

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

		emit Transfer(address(0), to, tokenID);

		_afterTokenTransfer(address(0), to, tokenID);
	}

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

		_beforeTokenTransfer(owner, address(0), tokenID);
		_approve(address(0), tokenID);

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

		emit Transfer(owner, address(0), tokenID);

		_afterTokenTransfer(owner, address(0), tokenID);
	}

	function _transfer(address from, address to, uint256 tokenID) internal virtual {
		require(ERC721.ownerOf(tokenID) == from, "ERC721: transfer from incorrect owner");
		require(to != address(0), "ERC721: transfer to the zero address");

		_beforeTokenTransfer(from, to, tokenID);
		_approve(address(0), tokenID);

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

		emit Transfer(from, to, tokenID);

		_afterTokenTransfer(from, to, tokenID);
	}

	function _approve(address to, uint256 tokenID) internal virtual {
		_tokenApprovals[tokenID] = to;

		emit Approval(ERC721.ownerOf(tokenID), to, tokenID);
	}

	function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
		require(owner != operator, "ERC721: approve to caller");

		_operatorApprovals[owner][operator] = approved;

		emit ApprovalForAll(owner, operator, approved);
	}

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

				else {
					assembly {
						revert(add(32, reason), mload(reason))
					}
				}
			}
		}

		else return true;
	}

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}

	function _afterTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}
}

// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;

/**
 * @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/[email protected]


pragma solidity ^0.8.0;


/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

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

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

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

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


contract VMHats is ERC721Enumerable, ReentrancyGuard, Ownable {
	using Counters for Counters.Counter;
	using Strings for uint256;

	bool public paused;
	bool public revealed;
	bool public allowListings;
	bool public collectSalesRewardsFromThirdParty;

	string private unrevealedURI;
	string private baseURI;
	string private uriSuffix;

	uint256 public cost;
	uint256 public maxSupply;
	uint256 public reservedSupply;
	uint256 public nextVMAirdrop;

	uint256 public maxMintAmountPerTX;

	uint256 public royalties;
	uint256 public dust;

	uint256 public mintRewards;
	uint256 public salesRewards;
	uint256 public totalRewardsIndex;
	uint256 public totalRewardsVault;

	mapping(uint256 => uint256) private lastCollectedRewardIndex;

	address private communityAddress;
	address private artistAddress;
	address private VMAddr; 

	struct Listing {
		uint256 tokenID;
		uint256 price;
		address seller;
		uint256 timestamp;
	}

	Listing[] private listings;

	Counters.Counter private supply;


	uint256 private constant PERCENTAGE_MULTIPLIER = 10000;


	event NewListing(uint256 indexed tokenID, address indexed seller, uint256 price);
	event WithdrawnListing(uint256 indexed tokenID);
	event TokenSold(uint256 indexed tokenID, address indexed from, address indexed to, uint256 price);
	event ClaimedRewards(address indexed wallet, uint256 amount);
	event DisbursedRewards(uint256 amount);


	constructor(string memory _initUnrevealedURI, address _initCommunityAddress, address _initartistAddress) ERC721("VM Hats", "VMH") {
		paused = true;
		revealed = false;
		allowListings = true;
		collectSalesRewardsFromThirdParty = true;

		cost = 1 ether;
		maxSupply = 8888;
		reservedSupply = 4444;
		maxMintAmountPerTX = 10;

		nextVMAirdrop = 1;

		royalties = 150;
		mintRewards = 1000;
		salesRewards = 150;
		dust = 1000000000;

		totalRewardsIndex = 1;

		communityAddress = _initCommunityAddress;
		artistAddress = _initartistAddress;
		VMAddr = 0xBbD9786f178e2AEBb4b4329c41A821921ca05339;

		setURIsuffix(".json");
		setUnrevealedURI(_initUnrevealedURI);
	}


	function supportsInterface(bytes4 interfaceID) public view override returns(bool) {
		return interfaceID == type(IERC2981Royalties).interfaceId || super.supportsInterface(interfaceID);
	}


	function mint(uint256 amount) public payable nonReentrant {
		require(amount > 0 && amount <= maxMintAmountPerTX, "Invalid mint amount");

		uint256 newSupply = supply.current() + amount;

		require(newSupply <= maxSupply, "Max token supply exceeded");
		require(newSupply <= maxSupply - reservedSupply, "Remaining tokens are reserved");

		require(!paused, "Minting is paused");
		require(msg.value >= cost * amount, "Insufficient funds");


		uint256 mintRewardValue = 0;
		uint256 tokenIndex = supply.current();

		_mintLoop(_msgSender(), amount);


		for (uint256 i = 0; i < amount; i++) {
			if (tokenIndex > 0) {
				uint256 individualMintRewardValue = msg.value * mintRewards / PERCENTAGE_MULTIPLIER / amount / tokenIndex;

				mintRewardValue += individualMintRewardValue * tokenIndex;
				totalRewardsIndex += individualMintRewardValue;
			}

			tokenIndex++;
			lastCollectedRewardIndex[tokenIndex] = totalRewardsIndex;
		}

		totalRewardsVault += mintRewardValue;
	}

	function airDrop(address[] calldata addresses, uint8[] calldata amounts) public onlyOwner {
		assert(addresses.length == amounts.length);
		assert(addresses.length > 0 && amounts.length > 0);


		uint256 totalAmount;
		for (uint256 i = 0; i < amounts.length; i++) totalAmount += amounts[i];

		require(supply.current() + totalAmount <= maxSupply, "Max token supply exceeded");


		for (uint256 i = 0; i < addresses.length; i++) {
			uint8 amount = amounts[i];

			for (uint256 j = 0; j < amount; j++) {
				supply.increment();

				uint256 tokenID = supply.current();

				_safeMint(addresses[i], tokenID);

				lastCollectedRewardIndex[tokenID] = totalRewardsIndex;
			}
		}
	}

	function airDropVMOwner(uint256 _lastToken) public onlyOwner {
		require(nextVMAirdrop <= _lastToken, "Token already airdropped!");
		require(_lastToken <= 4444, "Last token must be 4444 or less.");

		IERC721 VMContract = IERC721(VMAddr);

		for (uint256 i = nextVMAirdrop; i <= _lastToken; i++) {

			supply.increment();

			uint256 tokenID = supply.current();

			_safeMint(VMContract.ownerOf(i), tokenID);

			lastCollectedRewardIndex[tokenID] = totalRewardsIndex;

			reservedSupply -= 1;

		}

        nextVMAirdrop = _lastToken + 1;
	}


	function flipPausedState() public onlyOwner {
		paused = !paused;
	}

	function flipAllowListingsState() public onlyOwner {
		allowListings = !allowListings;
	}

	function flipCollectSalesRewardsFromThirdParty() public onlyOwner {
		collectSalesRewardsFromThirdParty = !collectSalesRewardsFromThirdParty;
	}

	function reveal(string memory _initBaseURI) public onlyOwner {
		revealed = true;

		setBaseURI(_initBaseURI);
	}

	function claimRewards() public payable nonReentrant {
		uint256 reward = getRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");

        uint256 numTokens = balanceOf(_msgSender());

		for (uint256 i = 0; i < numTokens; i++) {
			uint256 tokenID = tokenOfOwnerByIndex(_msgSender(), i);

			lastCollectedRewardIndex[tokenID] = totalRewardsIndex;
		}

		totalRewardsVault -= reward;

		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward);
	}

	function claimRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalRewardsVault -= reward;
		lastCollectedRewardIndex[tokenID] = totalRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward);
	}

	function withdraw() public onlyOwner {
		uint256 balance_10percent = (address(this).balance - totalRewardsVault) * 10 / 100;

		(bool success1, ) = payable(communityAddress).call{ value: balance_10percent * 4 }("");
		require(success1, "AVAX Transaction: Failed to transfer funds to community wallet!");

		(bool success2, ) = payable(artistAddress).call{ value: balance_10percent }("");
		require(success2, "AVAX Transaction: Failed to transfer funds to artist wallet!");

		(bool success3, ) = payable(owner()).call{ value: address(this).balance - (totalRewardsVault + dust) }("");
		require(success3, "AVAX Transaction: Failed to transfer funds to the owner wallet!");
	}

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

		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function disburseRewards() public payable onlyOwner {
		uint256 currentSupply = supply.current();

		uint256 individualRewardValue = msg.value / currentSupply;
		uint256 rewardValue = individualRewardValue * currentSupply;

		totalRewardsIndex += individualRewardValue;
		totalRewardsVault += rewardValue;

		emit DisbursedRewards(msg.value);
	}

	function royaltyInfo(uint256, uint256 value) external view returns(address receiver, uint256 royaltyAmount) {
		receiver = address(this);

		royaltyAmount = value * (royalties + salesRewards) / PERCENTAGE_MULTIPLIER;
	}

	function createListing(uint256 tokenID, uint256 price) public nonReentrant {
		require(allowListings, "ERC721 Marketplace: Listings are currently disabled");
		require(price > 0, "ERC721 Marketplace: Invalid listing price");
		require(ownerOf(tokenID) == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Token is already listed");

		Listing memory sale = Listing(tokenID, price, _msgSender(), block.timestamp);

		listings.push(sale);

		emit NewListing(tokenID, _msgSender(), price);
	}

	function withdrawListing(uint256 tokenID) public nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);

		require(isListed, "ERC721 Marketplace: Token is not listed");
		require(listings[listingIndex].seller == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();

		emit WithdrawnListing(tokenID);
	}

	function fulfillListing(uint256 tokenID) public payable nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		Listing memory listing = listings[listingIndex];

		require(listing.seller != _msgSender(), "ERC721 Marketplace: Buyer and seller must be be different addresses");
		require(msg.value >= listing.price, "ERC721 Marketplace: Insufficient funds");

		uint256 royaltiesValue = msg.value * royalties / PERCENTAGE_MULTIPLIER;
		uint256 individualSalesRewardValue = msg.value * salesRewards / PERCENTAGE_MULTIPLIER / (supply.current() - 1);
		uint256 salesRewardValue = individualSalesRewardValue * (supply.current() - 1);


		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();


		totalRewardsIndex += individualSalesRewardValue;
		lastCollectedRewardIndex[tokenID] += individualSalesRewardValue;

		totalRewardsVault += salesRewardValue;


		emit TokenSold(tokenID, listing.seller, _msgSender(), msg.value);


		_safeTransfer(listing.seller, _msgSender(), tokenID, "");

		(bool success, ) = payable(listing.seller).call{ value: msg.value - (royaltiesValue + salesRewardValue) }("");
		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function isTokenListed(uint256 tokenID) public view returns(bool isListed, uint256 index) {
		for (uint256 i = 0; i < listings.length; i++) {
			if (listings[i].tokenID != tokenID) continue;

			isListed = true;
			index = i;

			break;
		}
	}

	function getListings() public view returns(Listing[] memory) {
		return listings;
	}

	function getListingByTokenID(uint256 tokenID) public view returns(Listing memory) {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		return listings[listingIndex];
	}

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

		if (!revealed) return unrevealedURI;

		string memory currentBaseURI = _baseURI();

		return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked(currentBaseURI, tokenID.toString(), uriSuffix) ) : "";
	}

	function getRewardsOfAddress(address _address) public view returns(uint256) {
        uint256 numTokens = balanceOf(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < numTokens; i++) {
            uint256 tokenID = tokenOfOwnerByIndex(_address, i);
			total += getRewardsOfToken(tokenID);
		}

		return total;
	}

	function getRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return totalRewardsIndex - lastCollectedRewardIndex[tokenID];
	}

	function setBaseURI(string memory newBaseURI) public onlyOwner {
		baseURI = newBaseURI;
	}

	function setUnrevealedURI(string memory newUnrevealedURI) public onlyOwner {
		unrevealedURI = newUnrevealedURI;
	}

	function setURIsuffix(string memory newSuffix) public onlyOwner {
		uriSuffix = newSuffix;
	}

	function setMaxSupply(uint256 newAmount) public onlyOwner {
		maxSupply = newAmount;
	}

	function setReservedSupply(uint256 newAmount) public onlyOwner {
		reservedSupply = newAmount;
	}

	function setMaxMintAmountPerTX(uint256 newAmount) public onlyOwner {
		maxMintAmountPerTX = newAmount;
	}

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

	function setMintRewards(uint256 newValue) public onlyOwner {
		mintRewards = newValue;
	}

	function setSalesRewards(uint256 newValue) public onlyOwner {
		salesRewards = newValue;
	}

	function setRoyalties(uint256 newValue) public onlyOwner {
		royalties = newValue;
	}

	function setDust(uint256 newValue) public onlyOwner {
		dust = newValue;
	}

	function setTotalRewardsIndex(uint256 newAmount) public onlyOwner {
		totalRewardsIndex = newAmount;
	}

    function setNextVMAirDrop(uint256 newAmount) public onlyOwner {
		nextVMAirdrop = newAmount;
	}

	function setWithdrawAddresses(address newCommunityAddress, address newartistAddress) public onlyOwner {
		communityAddress = newCommunityAddress;
		artistAddress = newartistAddress;
	}

    function setVMAddr (address _contract) public onlyOwner {
		VMAddr = _contract;
	}


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

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal override (ERC721Enumerable){
		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Unable to transfer a listed token");


		super._beforeTokenTransfer(from, to, tokenID);
	}

	function _mintLoop(address to, uint256 amount) internal {
		for (uint256 i = 0; i < amount; i++) {
			supply.increment();

			_safeMint(to, supply.current());
		}
	}

	receive() external payable {
		uint256 currentSupply = supply.current();

		if (collectSalesRewardsFromThirdParty == true && currentSupply > 0) {
			uint256 individualSalesRewardValue = msg.value / (salesRewards + royalties) * salesRewards / currentSupply;
			uint256 salesRewardValue = individualSalesRewardValue * currentSupply;

			totalRewardsIndex += individualSalesRewardValue;

			totalRewardsVault += salesRewardValue;
		}
	}
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initUnrevealedURI","type":"string"},{"internalType":"address","name":"_initCommunityAddress","type":"address"},{"internalType":"address","name":"_initartistAddress","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":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DisbursedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NewListing","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":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenSold","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"WithdrawnListing","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"amounts","type":"uint8[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastToken","type":"uint256"}],"name":"airDropVMOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowListings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"tokenID","type":"uint256"}],"name":"claimRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"collectSalesRewardsFromThirdParty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"createListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disburseRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"flipAllowListingsState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipCollectSalesRewardsFromThirdParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"fulfillListing","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getListingByTokenID","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VMHats.Listing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListings","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VMHats.Listing[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokenID","type":"uint256"}],"name":"isTokenListed","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextVMAirdrop","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":[],"name":"salesRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxMintAmountPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setNextVMAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setReservedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSalesRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setTotalRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSuffix","type":"string"}],"name":"setURIsuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setVMAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCommunityAddress","type":"address"},{"internalType":"address","name":"newartistAddress","type":"address"}],"name":"setWithdrawAddresses","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":"totalRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"withdrawListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004caf38038062004caf833981016040819052620000349162000379565b6040805180820182526007815266564d204861747360c81b6020808301918252835180850190945260038452620ac9a960eb1b9084015281519192916200007e91600091620002a0565b50805162000094906001906020840190620002a0565b50506001600a5550620000a7336200018b565b600b8054630101000160a01b63ffffffff60a01b19909116179055670de0b6b3a7640000600f556122b860105561115c601155600a60135560016012819055609660148190556103e8601655601755633b9aca00601555601855601b80546001600160a01b038085166001600160a01b031992831617909255601c805492841692821692909217909155601d805490911673bbd9786f178e2aebb4b4329c41a821921ca05339179055604080518082019091526005815264173539b7b760d91b60208201526200017790620001dd565b620001828362000245565b505050620004b9565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600b546001600160a01b031633146200022c5760405162461bcd60e51b8152602060048201819052602482015260008051602062004c8f83398151915260448201526064015b60405180910390fd5b80516200024190600e906020840190620002a0565b5050565b600b546001600160a01b03163314620002905760405162461bcd60e51b8152602060048201819052602482015260008051602062004c8f833981519152604482015260640162000223565b80516200024190600c9060208401905b828054620002ae906200047c565b90600052602060002090601f016020900481019282620002d257600085556200031d565b82601f10620002ed57805160ff19168380011785556200031d565b828001600101855582156200031d579182015b828111156200031d57825182559160200191906001019062000300565b506200032b9291506200032f565b5090565b5b808211156200032b576000815560010162000330565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200037457600080fd5b919050565b6000806000606084860312156200038f57600080fd5b83516001600160401b0380821115620003a757600080fd5b818601915086601f830112620003bc57600080fd5b815181811115620003d157620003d162000346565b604051601f8201601f19908116603f01168101908382118183101715620003fc57620003fc62000346565b816040528281526020935089848487010111156200041957600080fd5b600091505b828210156200043d57848201840151818301850152908301906200041e565b828211156200044f5760008484830101525b9650620004619150508682016200035c565b9350505062000473604085016200035c565b90509250925092565b600181811c908216806200049157607f821691505b60208210811415620004b357634e487b7160e01b600052602260045260246000fd5b50919050565b6147c680620004c96000396000f3fe6080604052600436106103fe5760003560e01c80636352211e11610213578063aff7214111610123578063e8365027116100ab578063f1b2d6a31161007a578063f1b2d6a314610c4b578063f2fde38b14610c6d578063f9daade414610c8d578063fad9aba314610cad578063fe2c7fee14610cc357600080fd5b8063e836502714610bb6578063e985e9c514610bcc578063ef0c016f14610c15578063f053dc5c14610c3557600080fd5b8063d3dc1bd1116100f2578063d3dc1bd114610b42578063d5abeb0114610b62578063d6fb650c14610b78578063db2e21bc14610b98578063e02f399314610ba057600080fd5b8063aff7214114610ada578063b5350ebf14610afa578063b88d4fde14610b02578063c87b56dd14610b2257600080fd5b806395d89b41116101a6578063a17bd78311610175578063a17bd78314610a52578063a22cb46514610a67578063a79123a914610a87578063aec6e27314610aa7578063aeccec8c14610ac757600080fd5b806395d89b41146109d25780639b83cddc146109e7578063a0712d6814610a1e578063a0ba1bbf14610a3157600080fd5b806384917f4a116101e257806384917f4a146109525780638da5cb5b1461097f5780638e6fe1a31461099d57806393eff851146109bd57600080fd5b80636352211e146108d25780636f8b44b0146108f257806370a08231146109125780637ef6f6561461093257600080fd5b80633912fc851161030e5780634c261247116102a15780635183022711610270578063518302271461083057806355f804b31461085157806356fcf95b146108715780635c975abb146108915780635f4966f7146108b257600080fd5b80634c261247146107af5780634e9be749146107cf5780634f6ccce7146107ef5780634f8a1db51461080f57600080fd5b806344a0d68a116102dd57806344a0d68a1461073957806344d19d2b146107595780634501b5581461076f5780634bbedc291461078f57600080fd5b80633912fc85146106d15780633ccfd60b146106e457806342842e0e146106f9578063437552c01461071957600080fd5b80631e13f86b116103915780632b80183f116103605780632b80183f1461065d5780632dfa9d001461067d5780632f745c59146106935780632f98ea73146106b3578063372500ab146106c957600080fd5b80631e13f86b146105c8578063234cb051146105e857806323b872dd146105fe5780632a55205a1461061e57600080fd5b8063095ea7b3116103cd578063095ea7b31461055957806313faede614610579578063176b48ee1461059d57806318160ddd146105b357600080fd5b806301ffc9a7146104b357806306fdde03146104e85780630798e5c91461050a578063081812fc1461052157600080fd5b366104ae57600061040e601f5490565b600b54909150600160b81b900460ff161515600114801561042f5750600081115b156104ab5760008160175460145460175461044a9190613e7b565b6104549034613ea9565b61045e9190613ebd565b6104689190613ea9565b905060006104768383613ebd565b9050816018600082825461048a9190613e7b565b9250508190555080601960008282546104a39190613e7b565b909155505050505b50005b600080fd5b3480156104bf57600080fd5b506104d36104ce366004613ef2565b610ce3565b60405190151581526020015b60405180910390f35b3480156104f457600080fd5b506104fd610d0e565b6040516104df9190613f67565b34801561051657600080fd5b5061051f610da0565b005b34801561052d57600080fd5b5061054161053c366004613f7a565b610df4565b6040516001600160a01b0390911681526020016104df565b34801561056557600080fd5b5061051f610574366004613fa8565b610e89565b34801561058557600080fd5b5061058f600f5481565b6040519081526020016104df565b3480156105a957600080fd5b5061058f60185481565b3480156105bf57600080fd5b5060085461058f565b3480156105d457600080fd5b5061051f6105e3366004613f7a565b610f9f565b3480156105f457600080fd5b5061058f60165481565b34801561060a57600080fd5b5061051f610619366004613fd4565b610fce565b34801561062a57600080fd5b5061063e610639366004614015565b610fff565b604080516001600160a01b0390931683526020830191909152016104df565b34801561066957600080fd5b5061051f610678366004613f7a565b611034565b34801561068957600080fd5b5061058f60135481565b34801561069f57600080fd5b5061058f6106ae366004613fa8565b611063565b3480156106bf57600080fd5b5061058f60125481565b61051f6110f9565b61051f6106df366004613f7a565b611287565b3480156106f057600080fd5b5061051f6116fa565b34801561070557600080fd5b5061051f610714366004613fd4565b6119a8565b34801561072557600080fd5b5061051f610734366004613f7a565b6119c3565b34801561074557600080fd5b5061051f610754366004613f7a565b6119f2565b34801561076557600080fd5b5061058f60115481565b34801561077b57600080fd5b5061051f61078a366004614037565b611a21565b34801561079b57600080fd5b5061051f6107aa366004613f7a565b611a6d565b3480156107bb57600080fd5b5061051f6107ca3660046140e0565b611c39565b3480156107db57600080fd5b5061051f6107ea366004613f7a565b611c82565b3480156107fb57600080fd5b5061058f61080a366004613f7a565b611cb1565b34801561081b57600080fd5b50600b546104d390600160b81b900460ff1681565b34801561083c57600080fd5b50600b546104d390600160a81b900460ff1681565b34801561085d57600080fd5b5061051f61086c3660046140e0565b611d44565b34801561087d57600080fd5b5061051f61088c366004613f7a565b611d85565b34801561089d57600080fd5b50600b546104d390600160a01b900460ff1681565b3480156108be57600080fd5b5061058f6108cd366004613f7a565b611db4565b3480156108de57600080fd5b506105416108ed366004613f7a565b611e2a565b3480156108fe57600080fd5b5061051f61090d366004613f7a565b611ea1565b34801561091e57600080fd5b5061058f61092d366004614037565b611ed0565b34801561093e57600080fd5b5061051f61094d366004614129565b611f57565b34801561095e57600080fd5b5061097261096d366004613f7a565b611faf565b6040516104df9190614162565b34801561098b57600080fd5b50600b546001600160a01b0316610541565b3480156109a957600080fd5b5061051f6109b8366004613f7a565b612075565b3480156109c957600080fd5b5061051f6120a4565b3480156109de57600080fd5b506104fd6120ef565b3480156109f357600080fd5b50610a07610a02366004613f7a565b6120fe565b6040805192151583526020830191909152016104df565b61051f610a2c366004613f7a565b612162565b348015610a3d57600080fd5b50600b546104d390600160b01b900460ff1681565b348015610a5e57600080fd5b5061051f612424565b348015610a7357600080fd5b5061051f610a82366004614196565b61246f565b348015610a9357600080fd5b5061051f610aa2366004614015565b61247a565b348015610ab357600080fd5b5061051f610ac2366004613f7a565b612767565b61051f610ad5366004613f7a565b61291e565b348015610ae657600080fd5b5061051f610af53660046140e0565b612b04565b61051f612b41565b348015610b0e57600080fd5b5061051f610b1d3660046141c9565b612bfc565b348015610b2e57600080fd5b506104fd610b3d366004613f7a565b612c2e565b348015610b4e57600080fd5b5061051f610b5d366004613f7a565b612daf565b348015610b6e57600080fd5b5061058f60105481565b348015610b8457600080fd5b5061051f610b93366004613f7a565b612dde565b61051f612e0d565b348015610bac57600080fd5b5061058f60175481565b348015610bc257600080fd5b5061058f60195481565b348015610bd857600080fd5b506104d3610be7366004614129565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610c2157600080fd5b5061058f610c30366004614037565b612ebb565b348015610c4157600080fd5b5061058f60145481565b348015610c5757600080fd5b50610c60612f14565b6040516104df9190614249565b348015610c7957600080fd5b5061051f610c88366004614037565b612f9e565b348015610c9957600080fd5b5061051f610ca836600461430a565b613036565b348015610cb957600080fd5b5061058f60155481565b348015610ccf57600080fd5b5061051f610cde3660046140e0565b61320a565b60006001600160e01b0319821663152a902d60e11b1480610d085750610d0882613247565b92915050565b606060008054610d1d90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4990614376565b8015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b5050505050905090565b600b546001600160a01b03163314610dd35760405162461bcd60e51b8152600401610dca906143b1565b60405180910390fd5b600b805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610e6d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b506000908152600460205260409020546001600160a01b031690565b6000610e9482611e2a565b9050806001600160a01b0316836001600160a01b03161415610f025760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dca565b336001600160a01b0382161480610f1e5750610f1e8133610be7565b610f905760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dca565b610f9a838361326c565b505050565b600b546001600160a01b03163314610fc95760405162461bcd60e51b8152600401610dca906143b1565b601155565b610fd833826132da565b610ff45760405162461bcd60e51b8152600401610dca906143e6565b610f9a8383836133d1565b60175460145430916000916127109161101791613e7b565b6110219085613ebd565b61102b9190613ea9565b90509250929050565b600b546001600160a01b0316331461105e5760405162461bcd60e51b8152600401610dca906143b1565b601455565b600061106e83611ed0565b82106110d05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610dca565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600a54141561111c5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061112c33612ebb565b90506000811161117e5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b600061118933611ed0565b905060005b818110156111c85760006111a23383611063565b6018546000918252601a60205260409091205550806111c08161446e565b91505061118e565b5081601960008282546111db9190614489565b9091555050604051600090339084908381818185875af1925050503d8060008114611222576040519150601f19603f3d011682016040523d82523d6000602084013e611227565b606091505b50509050806112485760405162461bcd60e51b8152600401610dca906144a0565b60405183815233907f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c9060200160405180910390a250506001600a5550565b6002600a5414156112aa5760405162461bcd60e51b8152600401610dca90614437565b6002600a556000806112bb836120fe565b91509150816112dc5760405162461bcd60e51b8152600401610dca906144d8565b6000601e82815481106112f1576112f161451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506113443390565b6001600160a01b031681604001516001600160a01b031614156113db5760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dca565b806020015134101561143e5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dca565b6000612710601454346114519190613ebd565b61145b9190613ea9565b90506000600161146a601f5490565b6114749190614489565b612710601754346114859190613ebd565b61148f9190613ea9565b6114999190613ea9565b9050600060016114a8601f5490565b6114b29190614489565b6114bc9083613ebd565b601e8054919250906114d090600190614489565b815481106114e0576114e061451f565b9060005260206000209060040201601e86815481106115015761150161451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e80548061156057611560614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b03191690556003018190559155601880548492906115ab908490613e7b565b90915550506000878152601a6020526040812080548492906115ce908490613e7b565b9250508190555080601960008282546115e79190613e7b565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161163791815260200190565b60405180910390a4611664846040015161164e3390565b8960405180602001604052806000815250613578565b60408401516000906001600160a01b031661167f8386613e7b565b6116899034614489565b604051600081818185875af1925050503d80600081146116c5576040519150601f19603f3d011682016040523d82523d6000602084013e6116ca565b606091505b50509050806116eb5760405162461bcd60e51b8152600401610dca906144a0565b50506001600a55505050505050565b600b546001600160a01b031633146117245760405162461bcd60e51b8152600401610dca906143b1565b60006064601954476117369190614489565b61174190600a613ebd565b61174b9190613ea9565b601b549091506000906001600160a01b0316611768836004613ebd565b604051600081818185875af1925050503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b505090508061180e5760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dca565b601c546040516000916001600160a01b03169084908381818185875af1925050503d806000811461185b576040519150601f19603f3d011682016040523d82523d6000602084013e611860565b606091505b50509050806118c55760405162461bcd60e51b815260206004820152603c602482015260008051602061477183398151915260448201527f736665722066756e647320746f206172746973742077616c6c657421000000006064820152608401610dca565b60006118d9600b546001600160a01b031690565b6001600160a01b03166015546019546118f29190613e7b565b6118fc9047614489565b604051600081818185875af1925050503d8060008114611938576040519150601f19603f3d011682016040523d82523d6000602084013e61193d565b606091505b50509050806119a25760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dca565b50505050565b610f9a83838360405180602001604052806000815250612bfc565b600b546001600160a01b031633146119ed5760405162461bcd60e51b8152600401610dca906143b1565b601555565b600b546001600160a01b03163314611a1c5760405162461bcd60e51b8152600401610dca906143b1565b600f55565b600b546001600160a01b03163314611a4b5760405162461bcd60e51b8152600401610dca906143b1565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611a975760405162461bcd60e51b8152600401610dca906143b1565b806012541115611ae95760405162461bcd60e51b815260206004820152601960248201527f546f6b656e20616c72656164792061697264726f7070656421000000000000006044820152606401610dca565b61115c811115611b3b5760405162461bcd60e51b815260206004820181905260248201527f4c61737420746f6b656e206d7573742062652034343434206f72206c6573732e6044820152606401610dca565b601d546012546001600160a01b03909116905b828111611c2657611b63601f80546001019055565b6000611b6e601f5490565b6040516331a9108f60e11b815260048101849052909150611be4906001600160a01b03851690636352211e90602401602060405180830381865afa158015611bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bde919061454b565b826135ab565b6018546000828152601a60205260408120919091556011805460019290611c0c908490614489565b90915550829150611c1e90508161446e565b915050611b4e565b50611c32826001613e7b565b6012555050565b600b546001600160a01b03163314611c635760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a81b1916600160a81b179055611c7f81611d44565b50565b600b546001600160a01b03163314611cac5760405162461bcd60e51b8152600401610dca906143b1565b601255565b6000611cbc60085490565b8210611d1f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610dca565b60088281548110611d3257611d3261451f565b90600052602060002001549050919050565b600b546001600160a01b03163314611d6e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600d906020840190613dcc565b5050565b600b546001600160a01b03163314611daf5760405162461bcd60e51b8152600401610dca906143b1565b601755565b600081611dc0601f5490565b1015611e0e5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dca565b6000828152601a6020526040902054601854610d089190614489565b6000818152600260205260408120546001600160a01b031680610d085760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dca565b600b546001600160a01b03163314611ecb5760405162461bcd60e51b8152600401610dca906143b1565b601055565b60006001600160a01b038216611f3b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dca565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314611f815760405162461bcd60e51b8152600401610dca906143b1565b601b80546001600160a01b039384166001600160a01b031991821617909155601c8054929093169116179055565b611fe36040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611fef846120fe565b91509150816120105760405162461bcd60e51b8152600401610dca906144d8565b601e81815481106120235761202361451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600b546001600160a01b0316331461209f5760405162461bcd60e51b8152600401610dca906143b1565b601355565b600b546001600160a01b031633146120ce5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610d1d90614376565b60008060005b601e5481101561215c5783601e82815481106121225761212261451f565b9060005260206000209060040201600001541461213e5761214a565b6001925080915061215c565b806121548161446e565b915050612104565b50915091565b6002600a5414156121855760405162461bcd60e51b8152600401610dca90614437565b6002600a55801580159061219b57506013548111155b6121dd5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dca565b6000816121e9601f5490565b6121f39190613e7b565b90506010548111156122435760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b6011546010546122539190614489565b8111156122a25760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dca565b600b54600160a01b900460ff16156122f05760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dca565b81600f546122fe9190613ebd565b3410156123425760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dca565b60008061234e601f5490565b905061235a33856135c5565b60005b848110156124015781156123cf5760008286612710601654346123809190613ebd565b61238a9190613ea9565b6123949190613ea9565b61239e9190613ea9565b90506123aa8382613ebd565b6123b49085613e7b565b935080601860008282546123c89190613e7b565b9091555050505b816123d98161446e565b6018546000828152601a602052604090205592508190506123f98161446e565b91505061235d565b5081601960008282546124149190613e7b565b90915550506001600a5550505050565b600b546001600160a01b0316331461244e5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d81338383613602565b6002600a54141561249d5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600b54600160b01b900460ff166125175760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dca565b600081116125795760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dca565b3361258383611e2a565b6001600160a01b0316146125a95760405162461bcd60e51b8152600401610dca90614568565b60006125b4836120fe565b50905080156126195760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dca565b600060405180608001604052808581526020018481526020016126393390565b6001600160a01b03908116825242602092830152601e805460018101825560009190915283517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350600490920291820155918301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35183015560408301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e352830180546001600160a01b0319169190921617905560608201517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e353909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa8560405161275491815260200190565b60405180910390a350506001600a555050565b6002600a54141561278a5760405162461bcd60e51b8152600401610dca90614437565b6002600a5560008061279b836120fe565b91509150816127bc5760405162461bcd60e51b8152600401610dca906144d8565b336001600160a01b0316601e82815481106127d9576127d961451f565b60009182526020909120600260049092020101546001600160a01b0316146128135760405162461bcd60e51b8152600401610dca90614568565b601e805461282390600190614489565b815481106128335761283361451f565b9060005260206000209060040201601e82815481106128545761285461451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e8054806128b3576128b3614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a250506001600a5550565b6002600a5414156129415760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061295182611e2a565b9050336001600160a01b038216146129bf5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60448201526a61696d207265776172647360a81b6064820152608401610dca565b60006129ca83611db4565b905060008111612a1c5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b8060196000828254612a2e9190614489565b90915550506018546000848152601a60205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612a90576040519150601f19603f3d011682016040523d82523d6000602084013e612a95565b606091505b5050905080612ab65760405162461bcd60e51b8152600401610dca906144a0565b826001600160a01b03167f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c83604051612af191815260200190565b60405180910390a250506001600a555050565b600b546001600160a01b03163314612b2e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600e906020840190613dcc565b600b546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610dca906143b1565b6000612b76601f5490565b90506000612b848234613ea9565b90506000612b928383613ebd565b90508160186000828254612ba69190613e7b565b925050819055508060196000828254612bbf9190613e7b565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612c0633836132da565b612c225760405162461bcd60e51b8152600401610dca906143e6565b6119a284848484613578565b6000818152600260205260409020546060906001600160a01b0316612cad5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dca565b600b54600160a81b900460ff16612d5057600c8054612ccb90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054612cf790614376565b8015612d445780601f10612d1957610100808354040283529160200191612d44565b820191906000526020600020905b815481529060010190602001808311612d2757829003601f168201915b50505050509050919050565b6000612d5a6136d1565b90506000815111612d7a5760405180602001604052806000815250612da8565b80612d84846136e0565b600e604051602001612d98939291906145b3565b6040516020818303038152906040525b9392505050565b600b546001600160a01b03163314612dd95760405162461bcd60e51b8152600401610dca906143b1565b601855565b600b546001600160a01b03163314612e085760405162461bcd60e51b8152600401610dca906143b1565b601655565b600b546001600160a01b03163314612e375760405162461bcd60e51b8152600401610dca906143b1565b6000612e4b600b546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e95576040519150601f19603f3d011682016040523d82523d6000602084013e612e9a565b606091505b5050905080611c7f5760405162461bcd60e51b8152600401610dca906144a0565b600080612ec783611ed0565b90506000805b82811015612f0c576000612ee18683611063565b9050612eec81611db4565b612ef69084613e7b565b9250508080612f049061446e565b915050612ecd565b509392505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015612f955760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101612f38565b50505050905090565b600b546001600160a01b03163314612fc85760405162461bcd60e51b8152600401610dca906143b1565b6001600160a01b03811661302d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dca565b611c7f816137de565b600b546001600160a01b031633146130605760405162461bcd60e51b8152600401610dca906143b1565b82811461306f5761306f614677565b821580159061307d57508015155b61308957613089614677565b6000805b828110156130dd578383828181106130a7576130a761451f565b90506020020160208101906130bc919061468d565b6130c99060ff1683613e7b565b9150806130d58161446e565b91505061308d565b50601054816130eb601f5490565b6130f59190613e7b565b111561313f5760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b60005b8481101561320257600084848381811061315e5761315e61451f565b9050602002016020810190613173919061468d565b905060005b8160ff168110156131ed57613191601f80546001019055565b600061319c601f5490565b90506131c88989868181106131b3576131b361451f565b9050602002016020810190611bde9190614037565b6018546000918252601a602052604090912055806131e58161446e565b915050613178565b505080806131fa9061446e565b915050613142565b505050505050565b600b546001600160a01b031633146132345760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600c906020840190613dcc565b60006001600160e01b0319821663780e9d6360e01b1480610d085750610d0882613830565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132a182611e2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166133535760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b600061335e83611e2a565b9050806001600160a01b0316846001600160a01b031614806133995750836001600160a01b031661338e84610df4565b6001600160a01b0316145b806133c957506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166133e482611e2a565b6001600160a01b0316146134485760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dca565b6001600160a01b0382166134aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dca565b6134b5838383613880565b6134c060008261326c565b6001600160a01b03831660009081526003602052604081208054600192906134e9908490614489565b90915550506001600160a01b0382166000908152600360205260408120805460019290613517908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6135838484846133d1565b61358f84848484613905565b6119a25760405162461bcd60e51b8152600401610dca906146b0565b611d81828260405180602001604052806000815250613a03565b60005b81811015610f9a576135de601f80546001019055565b6135f0836135eb601f5490565b6135ab565b806135fa8161446e565b9150506135c8565b816001600160a01b0316836001600160a01b031614156136645760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600d8054610d1d90614376565b6060816137045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561372e57806137188161446e565b91506137279050600a83613ea9565b9150613708565b60008167ffffffffffffffff81111561374957613749614054565b6040519080825280601f01601f191660200182016040528015613773576020820181803683370190505b5090505b84156133c957613788600183614489565b9150613795600a86614702565b6137a0906030613e7b565b60f81b8183815181106137b5576137b561451f565b60200101906001600160f81b031916908160001a9053506137d7600a86613ea9565b9450613777565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b031982166380ac58cd60e01b148061386157506001600160e01b03198216635b5e139f60e01b145b80610d0857506301ffc9a760e01b6001600160e01b0319831614610d08565b600061388b826120fe565b50905080156138fa5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dca565b6119a2848484613a36565b60006001600160a01b0384163b156139f857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613949903390899088908890600401614716565b6020604051808303816000875af1925050508015613984575060408051601f3d908101601f1916820190925261398191810190614753565b60015b6139de573d8080156139b2576040519150601f19603f3d011682016040523d82523d6000602084013e6139b7565b606091505b5080516139d65760405162461bcd60e51b8152600401610dca906146b0565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506133c9565b506001949350505050565b613a0d8383613aee565b613a1a6000848484613905565b610f9a5760405162461bcd60e51b8152600401610dca906146b0565b6001600160a01b038316613a9157613a8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613ab4565b816001600160a01b0316836001600160a01b031614613ab457613ab48382613c3c565b6001600160a01b038216613acb57610f9a81613cd9565b826001600160a01b0316826001600160a01b031614610f9a57610f9a8282613d88565b6001600160a01b038216613b445760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dca565b6000818152600260205260409020546001600160a01b031615613ba95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dca565b613bb560008383613880565b6001600160a01b0382166000908152600360205260408120805460019290613bde908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001613c4984611ed0565b613c539190614489565b600083815260076020526040902054909150808214613ca6576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090613ceb90600190614489565b60008381526009602052604081205460088054939450909284908110613d1357613d1361451f565b906000526020600020015490508060088381548110613d3457613d3461451f565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480613d6c57613d6c614535565b6001900381819060005260206000200160009055905550505050565b6000613d9383611ed0565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054613dd890614376565b90600052602060002090601f016020900481019282613dfa5760008555613e40565b82601f10613e1357805160ff1916838001178555613e40565b82800160010185558215613e40579182015b82811115613e40578251825591602001919060010190613e25565b50613e4c929150613e50565b5090565b5b80821115613e4c5760008155600101613e51565b634e487b7160e01b600052601160045260246000fd5b60008219821115613e8e57613e8e613e65565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613eb857613eb8613e93565b500490565b6000816000190483118215151615613ed757613ed7613e65565b500290565b6001600160e01b031981168114611c7f57600080fd5b600060208284031215613f0457600080fd5b8135612da881613edc565b60005b83811015613f2a578181015183820152602001613f12565b838111156119a25750506000910152565b60008151808452613f53816020860160208601613f0f565b601f01601f19169290920160200192915050565b602081526000612da86020830184613f3b565b600060208284031215613f8c57600080fd5b5035919050565b6001600160a01b0381168114611c7f57600080fd5b60008060408385031215613fbb57600080fd5b8235613fc681613f93565b946020939093013593505050565b600080600060608486031215613fe957600080fd5b8335613ff481613f93565b9250602084013561400481613f93565b929592945050506040919091013590565b6000806040838503121561402857600080fd5b50508035926020909101359150565b60006020828403121561404957600080fd5b8135612da881613f93565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561408557614085614054565b604051601f8501601f19908116603f011681019082821181831017156140ad576140ad614054565b816040528093508581528686860111156140c657600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156140f257600080fd5b813567ffffffffffffffff81111561410957600080fd5b8201601f8101841361411a57600080fd5b6133c98482356020840161406a565b6000806040838503121561413c57600080fd5b823561414781613f93565b9150602083013561415781613f93565b809150509250929050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d08565b600080604083850312156141a957600080fd5b82356141b481613f93565b91506020830135801515811461415757600080fd5b600080600080608085870312156141df57600080fd5b84356141ea81613f93565b935060208501356141fa81613f93565b925060408501359150606085013567ffffffffffffffff81111561421d57600080fd5b8501601f8101871361422e57600080fd5b61423d8782356020840161406a565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156142b25761429f83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b9284019260809290920191600101614265565b50909695505050505050565b60008083601f8401126142d057600080fd5b50813567ffffffffffffffff8111156142e857600080fd5b6020830191508360208260051b850101111561430357600080fd5b9250929050565b6000806000806040858703121561432057600080fd5b843567ffffffffffffffff8082111561433857600080fd5b614344888389016142be565b9096509450602087013591508082111561435d57600080fd5b5061436a878288016142be565b95989497509550505050565b600181811c9082168061438a57607f821691505b602082108114156143ab57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060001982141561448257614482613e65565b5060010190565b60008282101561449b5761449b613e65565b500390565b6020808252602a90820152600080516020614771833981519152604082015269736665722066756e647360b01b606082015260800190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561455d57600080fd5b8151612da881613f93565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206145c68285838a01613f0f565b8551918401916145d98184848a01613f0f565b8554920191600090600181811c90808316806145f657607f831692505b85831081141561461457634e487b7160e01b85526022600452602485fd5b808015614628576001811461463957614666565b60ff19851688528388019550614666565b60008b81526020902060005b8581101561465e5781548a820152908401908801614645565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561469f57600080fd5b813560ff81168114612da857600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261471157614711613e93565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061474990830184613f3b565b9695505050505050565b60006020828403121561476557600080fd5b8151612da881613edc56fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea264697066735822122002e4a430994ee50dcfdd31ae357b6011be3eb1bff243fa9ecda533cc02d0875d64736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de000000000000000000000000e56e66a91881a873e8e7bb4c6aafa26a7ce91c8b000000000000000000000000000000000000000000000000000000000000002e516d61354d327a6132336a6d773258444d6e614e32683759596f5233764a46753859726d336f735634476650676b000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de000000000000000000000000e56e66a91881a873e8e7bb4c6aafa26a7ce91c8b000000000000000000000000000000000000000000000000000000000000002e516d61354d327a6132336a6d773258444d6e614e32683759596f5233764a46753859726d336f735634476650676b000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string): Qma5M2za23jmw2XDMnaN2h7YYoR3vJFu8Yrm3osV4GfPgk
Arg [1] : _initCommunityAddress (address): 0x4057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : _initartistAddress (address): 0xe56e66a91881a873e8e7bb4c6aafa26a7ce91c8b

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : 000000000000000000000000e56e66a91881a873e8e7bb4c6aafa26a7ce91c8b
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 516d61354d327a6132336a6d773258444d6e614e32683759596f5233764a4675
Arg [5] : 3859726d336f735634476650676b000000000000000000000000000000000000


Deployed ByteCode Sourcemap

19511:14262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33358:21;33382:16;:6;836:14;;751:104;33382:16;33409:33;;33358:40;;-1:-1:-1;;;;33409:33:0;;;;:41;;33446:4;33409:41;:62;;;;;33470:1;33454:13;:17;33409:62;33405:361;;;33479:34;33572:13;33557:12;;33544:9;;33529:12;;:24;;;;:::i;:::-;33516:38;;:9;:38;:::i;:::-;:53;;;;:::i;:::-;:69;;;;:::i;:::-;33479:106;-1:-1:-1;33591:24:0;33618:42;33647:13;33479:106;33618:42;:::i;:::-;33591:69;;33689:26;33668:17;;:47;;;;;;;:::i;:::-;;;;;;;;33744:16;33723:17;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;33405:361:0;33353:417;19511:14262;;;;;21653:189;;;;;;;;;;-1:-1:-1;21653:189:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;21653:189:0;;;;;;;;5737:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24310:146::-;;;;;;;;;;;;;:::i;:::-;;6691:205;;;;;;;;;;-1:-1:-1;6691:205:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2387:32:1;;;2369:51;;2357:2;2342:18;6691:205:0;2223:203:1;6339:347:0;;;;;;;;;;-1:-1:-1;6339:347:0;;;;;:::i;:::-;;:::i;19861:19::-;;;;;;;;;;;;;;;;;;;3033:25:1;;;3021:2;3006:18;19861:19:0;2887:177:1;20132:32:0;;;;;;;;;;;;;;;;14001:113;;;;;;;;;;-1:-1:-1;14089:10:0;:17;14001:113;;31590:99;;;;;;;;;;-1:-1:-1;31590:99:0;;;;;:::i;:::-;;:::i;20071:26::-;;;;;;;;;;;;;;;;7211:284;;;;;;;;;;-1:-1:-1;7211:284:0;;;;;:::i;:::-;;:::i;27049:223::-;;;;;;;;;;-1:-1:-1;27049:223:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3975:32:1;;;3957:51;;4039:2;4024:18;;4017:34;;;;3930:18;27049:223:0;3783:274:1;32080:87:0;;;;;;;;;;-1:-1:-1;32080:87:0;;;;;:::i;:::-;;:::i;19979:33::-;;;;;;;;;;;;;;;;13669:256;;;;;;;;;;-1:-1:-1;13669:256:0;;;;;:::i;:::-;;:::i;19945:28::-;;;;;;;;;;;;;;;;24583:619;;;:::i;28314:1305::-;;;;;;:::i;:::-;;:::i;25785:685::-;;;;;;;;;;;;;:::i;7500:142::-;;;;;;;;;;-1:-1:-1;7500:142:0;;;;;:::i;:::-;;:::i;32172:77::-;;;;;;;;;;-1:-1:-1;32172:77:0;;;;;:::i;:::-;;:::i;31806:75::-;;;;;;;;;;-1:-1:-1;31806:75:0;;;;;:::i;:::-;;:::i;19912:29::-;;;;;;;;;;;;;;;;32664:84;;;;;;;;;;-1:-1:-1;32664:84:0;;;;;:::i;:::-;;:::i;23569:563::-;;;;;;;;;;-1:-1:-1;23569:563:0;;;;;:::i;:::-;;:::i;24461:117::-;;;;;;;;;;-1:-1:-1;24461:117:0;;;;;:::i;:::-;;:::i;32367:97::-;;;;;;;;;;-1:-1:-1;32367:97:0;;;;;:::i;:::-;;:::i;14191:233::-;;;;;;;;;;-1:-1:-1;14191:233:0;;;;;:::i;:::-;;:::i;19722:45::-;;;;;;;;;;-1:-1:-1;19722:45:0;;;;-1:-1:-1;;;19722:45:0;;;;;;19669:20;;;;;;;;;;-1:-1:-1;19669:20:0;;;;-1:-1:-1;;;19669:20:0;;;;;;31176:93;;;;;;;;;;-1:-1:-1;31176:93:0;;;;;:::i;:::-;;:::i;31982:::-;;;;;;;;;;-1:-1:-1;31982:93:0;;;;;:::i;:::-;;:::i;19647:18::-;;;;;;;;;;-1:-1:-1;19647:18:0;;;;-1:-1:-1;;;19647:18:0;;;;;;30954:217;;;;;;;;;;-1:-1:-1;30954:217:0;;;;;:::i;:::-;;:::i;5511:221::-;;;;;;;;;;-1:-1:-1;5511:221:0;;;;;:::i;:::-;;:::i;31496:89::-;;;;;;;;;;-1:-1:-1;31496:89:0;;;;;:::i;:::-;;:::i;5312:194::-;;;;;;;;;;-1:-1:-1;5312:194:0;;;;;:::i;:::-;;:::i;32469:187::-;;;;;;;;;;-1:-1:-1;32469:187:0;;;;;:::i;:::-;;:::i;29972:255::-;;;;;;;;;;-1:-1:-1;29972:255:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3393:77::-;;;;;;;;;;-1:-1:-1;3459:6:0;;-1:-1:-1;;;;;3459:6:0;3393:77;;31694:107;;;;;;;;;;-1:-1:-1;31694:107:0;;;;;:::i;:::-;;:::i;24139:70::-;;;;;;;;;;;;;:::i;5832:94::-;;;;;;;;;;;;;:::i;29624:252::-;;;;;;;;;;-1:-1:-1;29624:252:0;;;;;:::i;:::-;;:::i;:::-;;;;6668:14:1;;6661:22;6643:41;;6715:2;6700:18;;6693:34;;;;6616:18;29624:252:0;6475:258:1;21849:1008:0;;;;;;:::i;:::-;;:::i;19693:25::-;;;;;;;;;;-1:-1:-1;19693:25:0;;;;-1:-1:-1;;;19693:25:0;;;;;;24214:91;;;;;;;;;;;;;:::i;6901:146::-;;;;;;;;;;-1:-1:-1;6901:146:0;;;;;:::i;:::-;;:::i;27277:603::-;;;;;;;;;;-1:-1:-1;27277:603:0;;;;;:::i;:::-;;:::i;27885:424::-;;;;;;;;;;-1:-1:-1;27885:424:0;;;;;:::i;:::-;;:::i;25207:573::-;;;;;;:::i;:::-;;:::i;31396:95::-;;;;;;;;;;-1:-1:-1;31396:95:0;;;;;:::i;:::-;;:::i;26689:355::-;;;:::i;7647:272::-;;;;;;;;;;-1:-1:-1;7647:272:0;;;;;:::i;:::-;;:::i;30232:382::-;;;;;;;;;;-1:-1:-1;30232:382:0;;;;;:::i;:::-;;:::i;32254:105::-;;;;;;;;;;-1:-1:-1;32254:105:0;;;;;:::i;:::-;;:::i;19884:24::-;;;;;;;;;;;;;;;;31886:91;;;;;;;;;;-1:-1:-1;31886:91:0;;;;;:::i;:::-;;:::i;26475:209::-;;;:::i;20101:27::-;;;;;;;;;;;;;;;;20168:32;;;;;;;;;;;;;;;;7052:154;;;;;;;;;;-1:-1:-1;7052:154:0;;;;;:::i;:::-;-1:-1:-1;;;;;7166:25:0;;;7148:4;7166:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7052:154;30619:330;;;;;;;;;;-1:-1:-1;30619:330:0;;;;;:::i;:::-;;:::i;20018:24::-;;;;;;;;;;;;;;;;29881:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3587:188::-;;;;;;;;;;-1:-1:-1;3587:188:0;;;;;:::i;:::-;;:::i;22862:702::-;;;;;;;;;;-1:-1:-1;22862:702:0;;;;;:::i;:::-;;:::i;20046:19::-;;;;;;;;;;;;;;;;31274:117;;;;;;;;;;-1:-1:-1;31274:117:0;;;;;:::i;:::-;;:::i;21653:189::-;21729:4;-1:-1:-1;;;;;;21747:50:0;;-1:-1:-1;;;21747:50:0;;:90;;;21801:36;21825:11;21801:23;:36::i;:::-;21740:97;21653:189;-1:-1:-1;;21653:189:0:o;5737:90::-;5790:13;5817:5;5810:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5737:90;:::o;24310:146::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;;;;;;;;;24418:33:::1;::::0;;-1:-1:-1;;;;24381:70:0;::::1;-1:-1:-1::0;;;24418:33:0;;;::::1;;;24417:34;24381:70:::0;;::::1;;::::0;;24310:146::o;6691:205::-;6766:7;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;6780:73;;;;-1:-1:-1;;;6780:73:0;;10763:2:1;6780:73:0;;;10745:21:1;10802:2;10782:18;;;10775:30;10841:34;10821:18;;;10814:62;-1:-1:-1;;;10892:18:1;;;10885:42;10944:19;;6780:73:0;10561:408:1;6780:73:0;-1:-1:-1;6867:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;6867:24:0;;6691:205::o;6339:347::-;6414:13;6430:23;6445:7;6430:14;:23::i;:::-;6414:39;;6472:5;-1:-1:-1;;;;;6466:11:0;:2;-1:-1:-1;;;;;6466:11:0;;;6458:57;;;;-1:-1:-1;;;6458:57:0;;11176:2:1;6458:57:0;;;11158:21:1;11215:2;11195:18;;;11188:30;11254:34;11234:18;;;11227:62;-1:-1:-1;;;11305:18:1;;;11298:31;11346:19;;6458:57:0;10974:397:1;6458:57:0;3052:10;-1:-1:-1;;;;;6530:21:0;;;;:62;;-1:-1:-1;6555:37:0;6572:5;3052:10;7052:154;:::i;6555:37::-;6522:131;;;;-1:-1:-1;;;6522:131:0;;11578:2:1;6522:131:0;;;11560:21:1;11617:2;11597:18;;;11590:30;11656:34;11636:18;;;11629:62;11727:26;11707:18;;;11700:54;11771:19;;6522:131:0;11376:420:1;6522:131:0;6660:21;6669:2;6673:7;6660:8;:21::i;:::-;6409:277;6339:347;;:::o;31590:99::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31658:14:::1;:26:::0;31590:99::o;7211:284::-;7360:41;3052:10;7393:7;7360:18;:41::i;:::-;7352:103;;;;-1:-1:-1;;;7352:103:0;;;;;;;:::i;:::-;7462:28;7472:4;7478:2;7482:7;7462:9;:28::i;27049:223::-;27230:12;;27218:9;;27181:4;;27116:16;;20594:5;;27218:24;;;:::i;:::-;27209:34;;:5;:34;:::i;:::-;:58;;;;:::i;:::-;27193:74;;27049:223;;;;;:::o;32080:87::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32142:9:::1;:20:::0;32080:87::o;13669:256::-;13766:7;13802:23;13819:5;13802:16;:23::i;:::-;13794:5;:31;13786:87;;;;-1:-1:-1;;;13786:87:0;;12421:2:1;13786:87:0;;;12403:21:1;12460:2;12440:18;;;12433:30;12499:34;12479:18;;;12472:62;-1:-1:-1;;;12550:18:1;;;12543:41;12601:19;;13786:87:0;12219:407:1;13786:87:0;-1:-1:-1;;;;;;13891:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;13669:256::o;24583:619::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;24640:14:::1;24657:33;3052:10:::0;30619:330;:::i;24657:33::-:1;24640:50;;24712:1;24703:6;:10;24695:49;;;::::0;-1:-1:-1;;;24695:49:0;;13193:2:1;24695:49:0::1;::::0;::::1;13175:21:1::0;13232:2;13212:18;;;13205:30;13271:28;13251:18;;;13244:56;13317:18;;24695:49:0::1;12991:350:1::0;24695:49:0::1;24757:17;24777:23;3052:10:::0;5312:194;:::i;24777:23::-:1;24757:43;;24812:9;24807:167;24831:9;24827:1;:13;24807:167;;;24853:15;24871:36;3052:10:::0;24905:1:::1;24871:19;:36::i;:::-;24951:17;::::0;24915:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;-1:-1:-1;24842:3:0;::::1;::::0;::::1;:::i;:::-;;;;24807:167;;;;25001:6;24980:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25033:47:0::1;::::0;25015:12:::1;::::0;3052:10;;25068:6;;25015:12;25033:47;25015:12;25033:47;25068:6;3052:10;25033:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25014:66;;;25093:7;25085:62;;;;-1:-1:-1::0;;;25085:62:0::1;;;;;;;:::i;:::-;25161:36;::::0;3033:25:1;;;3052:10:0;;25161:36:::1;::::0;3021:2:1;3006:18;25161:36:0::1;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;24583:619:0:o;28314:1305::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;28389:13:::1;::::0;28428:22:::1;28442:7:::0;28428:13:::1;:22::i;:::-;28388:62;;;;28463:8;28455:60;;;;-1:-1:-1::0;;;28455:60:0::1;;;;;;;:::i;:::-;28522:22;28547:8;28556:12;28547:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;28522:47:::1;::::0;;::::1;::::0;::::1;::::0;;28547:22:::1;::::0;;::::1;::::0;;::::1;28522:47:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;28522:47:0::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;28602:12:0::1;3052:10:::0;;2979:88;28602:12:::1;-1:-1:-1::0;;;;;28584:30:0::1;:7;:14;;;-1:-1:-1::0;;;;;28584:30:0::1;;;28576:110;;;::::0;-1:-1:-1;;;28576:110:0;;14979:2:1;28576:110:0::1;::::0;::::1;14961:21:1::0;15018:2;14998:18;;;14991:30;15057:34;15037:18;;;15030:62;15128:34;15108:18;;;15101:62;-1:-1:-1;;;15179:19:1;;;15172:34;15223:19;;28576:110:0::1;14777:471:1::0;28576:110:0::1;28712:7;:13;;;28699:9;:26;;28691:77;;;::::0;-1:-1:-1;;;28691:77:0;;15455:2:1;28691:77:0::1;::::0;::::1;15437:21:1::0;15494:2;15474:18;;;15467:30;15533:34;15513:18;;;15506:62;-1:-1:-1;;;15584:18:1;;;15577:36;15630:19;;28691:77:0::1;15253:402:1::0;28691:77:0::1;28775:22;20594:5;28812:9;;28800;:21;;;;:::i;:::-;:45;;;;:::i;:::-;28775:70;;28850:34;28958:1;28939:16;:6;836:14:::0;;751:104;28939:16:::1;:20;;;;:::i;:::-;20594:5;28899:12;;28887:9;:24;;;;:::i;:::-;:48;;;;:::i;:::-;:73;;;;:::i;:::-;28850:110;;28965:24;29041:1;29022:16;:6;836:14:::0;;751:104;29022:16:::1;:20;;;;:::i;:::-;28992:51;::::0;:26;:51:::1;:::i;:::-;29077:8;29086:15:::0;;28965:78;;-1:-1:-1;29077:8:0;29086:19:::1;::::0;29104:1:::1;::::0;29086:19:::1;:::i;:::-;29077:29;;;;;;;;:::i;:::-;;;;;;;;;;;29052:8;29061:12;29052:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;29052:54:0::1;-1:-1:-1::0;;;;;29052:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;29111:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;29111:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;29111:14:0::1;::::0;;::::1;;::::0;;;;;29134:17:::1;:47:::0;;29155:26;;29111:14;29134:47:::1;::::0;29155:26;;29134:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;29186:33:0::1;::::0;;;:24:::1;:33;::::0;;;;:63;;29223:26;;29186:33;:63:::1;::::0;29223:26;;29186:63:::1;:::i;:::-;;;;;;;;29277:16;29256:17;;:37;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3052:10:0;;-1:-1:-1;;;;;;29307:59:0::1;29326:7;:14;;;-1:-1:-1::0;;;;;29307:59:0::1;29317:7;29307:59;29356:9;29307:59;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;29307:59:0::1;;;;;;;;29375:56;29389:7;:14;;;29405:12;3052:10:::0;;2979:88;29405:12:::1;29419:7;29375:56;;;;;;;;;;;::::0;:13:::1;:56::i;:::-;29465:14;::::0;::::1;::::0;29439:12:::1;::::0;-1:-1:-1;;;;;29457:28:0::1;29507:33;29524:16:::0;29507:14;:33:::1;:::i;:::-;29494:47;::::0;:9:::1;:47;:::i;:::-;29457:90;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29438:109;;;29560:7;29552:62;;;;-1:-1:-1::0;;;29552:62:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;;;;;28314:1305:0:o;25785:685::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;25827:25:::1;25906:3;25880:17;;25856:21;:41;;;;:::i;:::-;25855:48;::::0;25901:2:::1;25855:48;:::i;:::-;:54;;;;:::i;:::-;25944:16;::::0;25827:82;;-1:-1:-1;25917:13:0::1;::::0;-1:-1:-1;;;;;25944:16:0::1;25975:21;25827:82:::0;25995:1:::1;25975:21;:::i;:::-;25936:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25916:86;;;26015:8;26007:84;;;::::0;-1:-1:-1;;;26007:84:0;;15994:2:1;26007:84:0::1;::::0;::::1;15976:21:1::0;16033:2;16013:18;;;16006:30;-1:-1:-1;;;;;;;;;;;16052:18:1;;;16045:62;16143:33;16123:18;;;16116:61;16194:19;;26007:84:0::1;15792:427:1::0;26007:84:0::1;26126:13;::::0;26118:59:::1;::::0;26099:13:::1;::::0;-1:-1:-1;;;;;26126:13:0::1;::::0;26154:17;;26099:13;26118:59;26099:13;26118:59;26154:17;26126:13;26118:59:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26098:79;;;26190:8;26182:81;;;::::0;-1:-1:-1;;;26182:81:0;;16426:2:1;26182:81:0::1;::::0;::::1;16408:21:1::0;16465:2;16445:18;;;16438:30;-1:-1:-1;;;;;;;;;;;16484:18:1;;;16477:62;16575:30;16555:18;;;16548:58;16623:19;;26182:81:0::1;16224:424:1::0;26182:81:0::1;26271:13;26298:7;3459:6:::0;;-1:-1:-1;;;;;3459:6:0;;3393:77;26298:7:::1;-1:-1:-1::0;;;;;26290:21:0::1;26365:4;;26345:17;;:24;;;;:::i;:::-;26320:50;::::0;:21:::1;:50;:::i;:::-;26290:86;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26270:106;;;26389:8;26381:84;;;::::0;-1:-1:-1;;;26381:84:0;;16855:2:1;26381:84:0::1;::::0;::::1;16837:21:1::0;16894:2;16874:18;;;16867:30;-1:-1:-1;;;;;;;;;;;16913:18:1;;;16906:62;17004:33;16984:18;;;16977:61;17055:19;;26381:84:0::1;16653:427:1::0;26381:84:0::1;25822:648;;;;25785:685::o:0;7500:142::-;7598:39;7615:4;7621:2;7625:7;7598:39;;;;;;;;;;;;:16;:39::i;32172:77::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32229:4:::1;:15:::0;32172:77::o;31806:75::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31862:4:::1;:14:::0;31806:75::o;32664:84::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32725:6:::1;:18:::0;;-1:-1:-1;;;;;;32725:18:0::1;-1:-1:-1::0;;;;;32725:18:0;;;::::1;::::0;;;::::1;::::0;;32664:84::o;23569:563::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;23660:10:::1;23643:13;;:27;;23635:65;;;::::0;-1:-1:-1;;;23635:65:0;;17287:2:1;23635:65:0::1;::::0;::::1;17269:21:1::0;17326:2;17306:18;;;17299:30;17365:27;17345:18;;;17338:55;17410:18;;23635:65:0::1;17085:349:1::0;23635:65:0::1;23727:4;23713:10;:18;;23705:63;;;::::0;-1:-1:-1;;;23705:63:0;;17641:2:1;23705:63:0::1;::::0;::::1;17623:21:1::0;;;17660:18;;;17653:30;17719:34;17699:18;;;17692:62;17771:18;;23705:63:0::1;17439:356:1::0;23705:63:0::1;23804:6;::::0;23835:13:::1;::::0;-1:-1:-1;;;;;23804:6:0;;::::1;::::0;23818:267:::1;23855:10;23850:1;:15;23818:267;;23880:18;:6;934:19:::0;;952:1;934:19;;;860:103;23880:18:::1;23906:15;23924:16;:6;836:14:::0;;751:104;23924:16:::1;23958:21;::::0;-1:-1:-1;;;23958:21:0;;::::1;::::0;::::1;3033:25:1::0;;;23906:34:0;;-1:-1:-1;23948:41:0::1;::::0;-1:-1:-1;;;;;23958:18:0;::::1;::::0;::::1;::::0;3006::1;;23958:21:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23981:7;23948:9;:41::i;:::-;24033:17;::::0;23997:33:::1;::::0;;;:24:::1;:33;::::0;;;;:53;;;;24058:14:::1;:19:::0;;24076:1:::1;::::0;23997:33;24058:19:::1;::::0;24076:1;;24058:19:::1;:::i;:::-;::::0;;;-1:-1:-1;23867:3:0;;-1:-1:-1;23867:3:0::1;::::0;-1:-1:-1;23867:3:0;::::1;:::i;:::-;;;;23818:267;;;-1:-1:-1::0;24113:14:0::1;:10:::0;24126:1:::1;24113:14;:::i;:::-;24097:13;:30:::0;-1:-1:-1;;23569:563:0:o;24461:117::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24527:8:::1;:15:::0;;-1:-1:-1;;;;24527:15:0::1;-1:-1:-1::0;;;24527:15:0::1;::::0;;24549:24:::1;24560:12:::0;24549:10:::1;:24::i;:::-;24461:117:::0;:::o;32367:97::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32434:13:::1;:25:::0;32367:97::o;14191:233::-;14266:7;14302:30;14089:10;:17;;14001:113;14302:30;14294:5;:38;14286:95;;;;-1:-1:-1;;;14286:95:0;;18258:2:1;14286:95:0;;;18240:21:1;18297:2;18277:18;;;18270:30;18336:34;18316:18;;;18309:62;-1:-1:-1;;;18387:18:1;;;18380:42;18439:19;;14286:95:0;18056:408:1;14286:95:0;14399:10;14410:5;14399:17;;;;;;;;:::i;:::-;;;;;;;;;14392:24;;14191:233;;;:::o;31176:93::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31244:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;31176:93:::0;:::o;31982:::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32047:12:::1;:23:::0;31982:93::o;30954:217::-;31018:7;31060;31040:16;:6;836:14;;751:104;31040:16;:27;;31032:67;;;;-1:-1:-1;;;31032:67:0;;18671:2:1;31032:67:0;;;18653:21:1;18710:2;18690:18;;;18683:30;18749:29;18729:18;;;18722:57;18796:18;;31032:67:0;18469:351:1;31032:67:0;31133:33;;;;:24;:33;;;;;;31113:17;;:53;;31133:33;31113:53;:::i;5511:221::-;5582:7;5612:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5612:16:0;5643:19;5635:73;;;;-1:-1:-1;;;5635:73:0;;19027:2:1;5635:73:0;;;19009:21:1;19066:2;19046:18;;;19039:30;19105:34;19085:18;;;19078:62;-1:-1:-1;;;19156:18:1;;;19149:39;19205:19;;5635:73:0;18825:405:1;31496:89:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31559:9:::1;:21:::0;31496:89::o;5312:194::-;5383:7;-1:-1:-1;;;;;5405:19:0;;5397:74;;;;-1:-1:-1;;;5397:74:0;;19437:2:1;5397:74:0;;;19419:21:1;19476:2;19456:18;;;19449:30;19515:34;19495:18;;;19488:62;-1:-1:-1;;;19566:18:1;;;19559:40;19616:19;;5397:74:0;19235:406:1;5397:74:0;-1:-1:-1;;;;;;5485:16:0;;;;;:9;:16;;;;;;;5312:194::o;32469:187::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32576:16:::1;:38:::0;;-1:-1:-1;;;;;32576:38:0;;::::1;-1:-1:-1::0;;;;;;32576:38:0;;::::1;;::::0;;;32619:13:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;32469:187::o;29972:255::-;30038:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30038:14:0;30060:13;30075:20;30099:22;30113:7;30099:13;:22::i;:::-;30059:62;;;;30134:8;30126:60;;;;-1:-1:-1;;;30126:60:0;;;;;;;:::i;:::-;30200:8;30209:12;30200:22;;;;;;;;:::i;:::-;;;;;;;;;;30193:29;;;;;;;;30200:22;;;;;;;30193:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30193:29:0;;;;;;;;;;;;;;;29972:255;-1:-1:-1;;;;29972:255:0:o;31694:107::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31766:18:::1;:30:::0;31694:107::o;24139:70::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24198:6:::1;::::0;;-1:-1:-1;;;;24188:16:0;::::1;-1:-1:-1::0;;;24198:6:0;;;::::1;;;24197:7;24188:16:::0;;::::1;;::::0;;24139:70::o;5832:94::-;5887:13;5914:7;5907:14;;;;;:::i;29624:252::-;29684:13;29699;29724:9;29719:153;29743:8;:15;29739:19;;29719:153;;;29798:7;29775:8;29784:1;29775:11;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:30;29771:44;;29807:8;;29771:44;29834:4;29823:15;;29852:1;29844:9;;29861:5;;29719:153;29760:3;;;;:::i;:::-;;;;29719:153;;;;29624:252;;;:::o;21849:1008::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;21920:10;;;;;:42:::1;;;21944:18;;21934:6;:28;;21920:42;21912:74;;;::::0;-1:-1:-1;;;21912:74:0;;19848:2:1;21912:74:0::1;::::0;::::1;19830:21:1::0;19887:2;19867:18;;;19860:30;-1:-1:-1;;;19906:18:1;;;19899:49;19965:18;;21912:74:0::1;19646:343:1::0;21912:74:0::1;21993:17;22032:6;22013:16;:6;836:14:::0;;751:104;22013:16:::1;:25;;;;:::i;:::-;21993:45;;22066:9;;22053;:22;;22045:60;;;::::0;-1:-1:-1;;;22045:60:0;;20196:2:1;22045:60:0::1;::::0;::::1;20178:21:1::0;20235:2;20215:18;;;20208:30;-1:-1:-1;;;20254:18:1;;;20247:55;20319:18;;22045:60:0::1;19994:349:1::0;22045:60:0::1;22143:14;;22131:9;;:26;;;;:::i;:::-;22118:9;:39;;22110:81;;;::::0;-1:-1:-1;;;22110:81:0;;20550:2:1;22110:81:0::1;::::0;::::1;20532:21:1::0;20589:2;20569:18;;;20562:30;20628:31;20608:18;;;20601:59;20677:18;;22110:81:0::1;20348:353:1::0;22110:81:0::1;22207:6;::::0;-1:-1:-1;;;22207:6:0;::::1;;;22206:7;22198:37;;;::::0;-1:-1:-1;;;22198:37:0;;20908:2:1;22198:37:0::1;::::0;::::1;20890:21:1::0;20947:2;20927:18;;;20920:30;-1:-1:-1;;;20966:18:1;;;20959:47;21023:18;;22198:37:0::1;20706:341:1::0;22198:37:0::1;22268:6;22261:4;;:13;;;;:::i;:::-;22248:9;:26;;22240:57;;;::::0;-1:-1:-1;;;22240:57:0;;21254:2:1;22240:57:0::1;::::0;::::1;21236:21:1::0;21293:2;21273:18;;;21266:30;-1:-1:-1;;;21312:18:1;;;21305:48;21370:18;;22240:57:0::1;21052:342:1::0;22240:57:0::1;22306:23;22338:18:::0;22359:16:::1;:6;836:14:::0;;751:104;22359:16:::1;22338:37:::0;-1:-1:-1;22382:31:0::1;3052:10:::0;22406:6:::1;22382:9;:31::i;:::-;22427:9;22422:388;22446:6;22442:1;:10;22422:388;;;22469:14:::0;;22465:258:::1;;22492:33;22587:10;22578:6;20594:5;22540:11;;22528:9;:23;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;:69;;;;:::i;:::-;22492:105:::0;-1:-1:-1;22625:38:0::1;22653:10:::0;22492:105;22625:38:::1;:::i;:::-;22606:57;::::0;;::::1;:::i;:::-;;;22691:25;22670:17;;:46;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;22465:258:0::1;22730:12:::0;::::1;::::0;::::1;:::i;:::-;22787:17;::::0;22748:36:::1;::::0;;;:24:::1;:36;::::0;;;;:56;22730:12;-1:-1:-1;22454:3:0;;-1:-1:-1;22454:3:0::1;::::0;::::1;:::i;:::-;;;;22422:388;;;;22837:15;22816:17;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4039:1:0;4301:7;:22;-1:-1:-1;;;;21849:1008:0:o;24214:91::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24287:13:::1;::::0;;-1:-1:-1;;;;24270:30:0;::::1;-1:-1:-1::0;;;24287:13:0;;;::::1;;;24286:14;24270:30:::0;;::::1;;::::0;;24214:91::o;6901:146::-;6990:52;3052:10;7023:8;7033;6990:18;:52::i;27277:603::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;27365:13:::1;::::0;-1:-1:-1;;;27365:13:0;::::1;;;27357:77;;;::::0;-1:-1:-1;;;27357:77:0;;21601:2:1;27357:77:0::1;::::0;::::1;21583:21:1::0;21640:2;21620:18;;;21613:30;21679:34;21659:18;;;21652:62;-1:-1:-1;;;21730:18:1;;;21723:49;21789:19;;27357:77:0::1;21399:415:1::0;27357:77:0::1;27455:1;27447:5;:9;27439:63;;;::::0;-1:-1:-1;;;27439:63:0;;22021:2:1;27439:63:0::1;::::0;::::1;22003:21:1::0;22060:2;22040:18;;;22033:30;22099:34;22079:18;;;22072:62;-1:-1:-1;;;22150:18:1;;;22143:39;22199:19;;27439:63:0::1;21819:405:1::0;27439:63:0::1;3052:10:::0;27515:16:::1;27523:7:::0;27515::::1;:16::i;:::-;-1:-1:-1::0;;;;;27515:32:0::1;;27507:88;;;;-1:-1:-1::0;;;27507:88:0::1;;;;;;;:::i;:::-;27603:13;27622:22;27636:7;27622:13;:22::i;:::-;27602:42;;;27658:8;27657:9;27649:65;;;::::0;-1:-1:-1;;;27649:65:0;;22843:2:1;27649:65:0::1;::::0;::::1;22825:21:1::0;22882:2;22862:18;;;22855:30;22921:34;22901:18;;;22894:62;-1:-1:-1;;;22972:18:1;;;22965:41;23023:19;;27649:65:0::1;22641:407:1::0;27649:65:0::1;27721:19;27743:54;;;;;;;;27751:7;27743:54;;;;27760:5;27743:54;;;;27767:12;3052:10:::0;;2979:88;27767:12:::1;-1:-1:-1::0;;;;;27743:54:0;;::::1;::::0;;27781:15:::1;27743:54;::::0;;::::1;::::0;27804:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;27804:19:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;;27804:19:0::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;3052:10:0;-1:-1:-1;;;;;27835:40:0::1;27846:7;27835:40;27869:5;27835:40;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;27835:40:0::1;;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;27277:603:0:o;27885:424::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;27953:13:::1;::::0;27992:22:::1;28006:7:::0;27992:13:::1;:22::i;:::-;27952:62;;;;28029:8;28021:60;;;;-1:-1:-1::0;;;28021:60:0::1;;;;;;;:::i;:::-;3052:10:::0;-1:-1:-1;;;;;28094:45:0::1;:8;28103:12;28094:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:22;::::0;;::::1;;:29;::::0;-1:-1:-1;;;;;28094:29:0::1;:45;28086:101;;;;-1:-1:-1::0;;;28086:101:0::1;;;;;;;:::i;:::-;28219:8;28228:15:::0;;:19:::1;::::0;28246:1:::1;::::0;28228:19:::1;:::i;:::-;28219:29;;;;;;;;:::i;:::-;;;;;;;;;;;28194:8;28203:12;28194:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;28194:54:0::1;-1:-1:-1::0;;;;;28194:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;28253:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;28253:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;28253:14:0::1;::::0;;::::1;;::::0;;;;;28279:25:::1;::::0;28296:7;;28279:25:::1;::::0;::::1;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;27885:424:0:o;25207:573::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;25285:13:::1;25301:16;25309:7:::0;25301::::1;:16::i;:::-;25285:32:::0;-1:-1:-1;3052:10:0;-1:-1:-1;;;;;25330:21:0;::::1;;25322:77;;;::::0;-1:-1:-1;;;25322:77:0;;23255:2:1;25322:77:0::1;::::0;::::1;23237:21:1::0;23294:2;23274:18;;;23267:30;23333:34;23313:18;;;23306:62;-1:-1:-1;;;23384:18:1;;;23377:41;23435:19;;25322:77:0::1;23053:407:1::0;25322:77:0::1;25406:14;25423:26;25441:7;25423:17;:26::i;:::-;25406:43;;25471:1;25462:6;:10;25454:49;;;::::0;-1:-1:-1;;;25454:49:0;;13193:2:1;25454:49:0::1;::::0;::::1;13175:21:1::0;13232:2;13212:18;;;13205:30;13271:28;13251:18;;;13244:56;13317:18;;25454:49:0::1;12991:350:1::0;25454:49:0::1;25533:6;25512:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25580:17:0::1;::::0;25544:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;;;;25625:40;;-1:-1:-1;;;;;25625:19:0;::::1;::::0;25653:6;;25544:33;25625:40;25544:33;25625:40;25653:6;25625:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25606:59;;;25678:7;25670:62;;;;-1:-1:-1::0;;;25670:62:0::1;;;;;;;:::i;:::-;25761:5;-1:-1:-1::0;;;;;25746:29:0::1;;25768:6;25746:29;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;25746:29:0::1;;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;25207:573:0:o;31396:95::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31465:21;;::::1;::::0;:9:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;26689:355::-:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;26746:21:::1;26770:16;:6;836:14:::0;;751:104;26770:16:::1;26746:40:::0;-1:-1:-1;26793:29:0::1;26825:25;26746:40:::0;26825:9:::1;:25;:::i;:::-;26793:57:::0;-1:-1:-1;26855:19:0::1;26877:37;26901:13:::0;26793:57;26877:37:::1;:::i;:::-;26855:59;;26942:21;26921:17;;:42;;;;;;;:::i;:::-;;;;;;;;26989:11;26968:17;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27012:27:0::1;::::0;27029:9:::1;3033:25:1::0;;27012:27:0::1;::::0;3021:2:1;3006:18;27012:27:0::1;;;;;;;26741:303;;;26689:355::o:0;7647:272::-;7773:41;3052:10;7806:7;7773:18;:41::i;:::-;7765:103;;;;-1:-1:-1;;;7765:103:0;;;;;;;:::i;:::-;7875:39;7889:4;7895:2;7899:7;7908:5;7875:13;:39::i;30232:382::-;8252:4;8270:16;;;:7;:16;;;;;;30296:13;;-1:-1:-1;;;;;8270:16:0;30316:76;;;;-1:-1:-1;;;30316:76:0;;23667:2:1;30316:76:0;;;23649:21:1;23706:2;23686:18;;;23679:30;23745:34;23725:18;;;23718:62;-1:-1:-1;;;23796:18:1;;;23789:45;23851:19;;30316:76:0;23465:411:1;30316:76:0;30404:8;;-1:-1:-1;;;30404:8:0;;;;30399:35;;30421:13;30414:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30232:382;;;:::o;30399:35::-;30441:28;30472:10;:8;:10::i;:::-;30441:41;;30527:1;30502:14;30496:28;:32;:113;;;;;;;;;;;;;;;;;30556:14;30572:18;:7;:16;:18::i;:::-;30592:9;30539:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;30496:113;30489:120;30232:382;-1:-1:-1;;;30232:382:0:o;32254:105::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32325:17:::1;:29:::0;32254:105::o;31886:91::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31950:11:::1;:22:::0;31886:91::o;26475:209::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;26535:12:::1;26561:7;3459:6:::0;;-1:-1:-1;;;;;3459:6:0;;3393:77;26561:7:::1;-1:-1:-1::0;;;;;26553:21:0::1;26583;26553:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26534:76;;;26625:7;26617:62;;;;-1:-1:-1::0;;;26617:62:0::1;;;;;;;:::i;30619:330::-:0;30686:7;30706:17;30726:19;30736:8;30726:9;:19::i;:::-;30706:39;;30750:13;30779:9;30774:152;30798:9;30794:1;:13;30774:152;;;30829:15;30847:32;30867:8;30877:1;30847:19;:32::i;:::-;30829:50;;30894:26;30912:7;30894:17;:26::i;:::-;30885:35;;;;:::i;:::-;;;30814:112;30809:3;;;;;:::i;:::-;;;;30774:152;;;-1:-1:-1;30939:5:0;30619:330;-1:-1:-1;;;30619:330:0:o;29881:86::-;29924:16;29954:8;29947:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29947:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29881:86;:::o;3587:188::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3670:22:0;::::1;3662:73;;;::::0;-1:-1:-1;;;3662:73:0;;25741:2:1;3662:73:0::1;::::0;::::1;25723:21:1::0;25780:2;25760:18;;;25753:30;25819:34;25799:18;;;25792:62;-1:-1:-1;;;25870:18:1;;;25863:36;25916:19;;3662:73:0::1;25539:402:1::0;3662:73:0::1;3742:28;3761:8;3742:18;:28::i;22862:702::-:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;22964:34;;::::1;22957:42;;;;:::i;:::-;23011:20:::0;;;;;:42:::1;;-1:-1:-1::0;23035:18:0;;;23011:42:::1;23004:50;;;;:::i;:::-;23063:19;::::0;23087:70:::1;23107:18:::0;;::::1;23087:70;;;23147:7;;23155:1;23147:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23132:25;::::0;::::1;;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;23127:3:0;::::1;::::0;::::1;:::i;:::-;;;;23087:70;;;;23206:9;;23191:11;23172:16;:6;836:14:::0;;751:104;23172:16:::1;:30;;;;:::i;:::-;:43;;23164:81;;;::::0;-1:-1:-1;;;23164:81:0;;20196:2:1;23164:81:0::1;::::0;::::1;20178:21:1::0;20235:2;20215:18;;;20208:30;-1:-1:-1;;;20254:18:1;;;20247:55;20319:18;;23164:81:0::1;19994:349:1::0;23164:81:0::1;23259:9;23254:306;23274:20:::0;;::::1;23254:306;;;23307:12;23322:7;;23330:1;23322:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23307:25;;23345:9;23340:215;23364:6;23360:10;;:1;:10;23340:215;;;23384:18;:6;934:19:::0;;952:1;934:19;;;860:103;23384:18:::1;23411:15;23429:16;:6;836:14:::0;;751:104;23429:16:::1;23411:34;;23454:32;23464:9;;23474:1;23464:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;23454:32::-;23531:17;::::0;23495:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;23372:3;::::1;::::0;::::1;:::i;:::-;;;;23340:215;;;;23301:259;23296:3;;;;;:::i;:::-;;;;23254:306;;;;22952:612;22862:702:::0;;;;:::o;31274:117::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31354:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;13361:224::-:0;13463:4;-1:-1:-1;;;;;;13487:50:0;;-1:-1:-1;;;13487:50:0;;:90;;;13541:36;13565:11;13541:23;:36::i;10227:161::-;10296:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;10296:29:0;-1:-1:-1;;;;;10296:29:0;;;;;;;;:24;;10346:23;10296:24;10346:14;:23::i;:::-;-1:-1:-1;;;;;10337:46:0;;;;;;;;;;;10227:161;;:::o;8310:330::-;8402:4;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;8413:73;;;;-1:-1:-1;;;8413:73:0;;26554:2:1;8413:73:0;;;26536:21:1;26593:2;26573:18;;;26566:30;26632:34;26612:18;;;26605:62;-1:-1:-1;;;26683:18:1;;;26676:42;26735:19;;8413:73:0;26352:408:1;8413:73:0;8493:13;8509:23;8524:7;8509:14;:23::i;:::-;8493:39;;8558:5;-1:-1:-1;;;;;8547:16:0;:7;-1:-1:-1;;;;;8547:16:0;;:51;;;;8591:7;-1:-1:-1;;;;;8567:31:0;:20;8579:7;8567:11;:20::i;:::-;-1:-1:-1;;;;;8567:31:0;;8547:51;:87;;;-1:-1:-1;;;;;;7166:25:0;;;7148:4;7166:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;8602:32;8539:96;8310:330;-1:-1:-1;;;;8310:330:0:o;9742:480::-;9861:4;-1:-1:-1;;;;;9834:31:0;:23;9849:7;9834:14;:23::i;:::-;-1:-1:-1;;;;;9834:31:0;;9826:81;;;;-1:-1:-1;;;9826:81:0;;26967:2:1;9826:81:0;;;26949:21:1;27006:2;26986:18;;;26979:30;27045:34;27025:18;;;27018:62;-1:-1:-1;;;27096:18:1;;;27089:35;27141:19;;9826:81:0;26765:401:1;9826:81:0;-1:-1:-1;;;;;9920:16:0;;9912:65;;;;-1:-1:-1;;;9912:65:0;;27373:2:1;9912:65:0;;;27355:21:1;27412:2;27392:18;;;27385:30;27451:34;27431:18;;;27424:62;-1:-1:-1;;;27502:18:1;;;27495:34;27546:19;;9912:65:0;27171:400:1;9912:65:0;9984:39;10005:4;10011:2;10015:7;9984:20;:39::i;:::-;10028:29;10045:1;10049:7;10028:8;:29::i;:::-;-1:-1:-1;;;;;10064:15:0;;;;;;:9;:15;;;;;:20;;10083:1;;10064:15;:20;;10083:1;;10064:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10089:13:0;;;;;;:9;:13;;;;;:18;;10106:1;;10089:13;:18;;10106:1;;10089:18;:::i;:::-;;;;-1:-1:-1;;10112:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10112:21:0;-1:-1:-1;;;;;10112:21:0;;;;;;;;;10145:27;;10112:16;;10145:27;;;;;;;6409:277;6339:347;;:::o;7924:259::-;8032:28;8042:4;8048:2;8052:7;8032:9;:28::i;:::-;8075:48;8098:4;8104:2;8108:7;8117:5;8075:22;:48::i;:::-;8067:111;;;;-1:-1:-1;;;8067:111:0;;;;;;;:::i;8645:101::-;8715:26;8725:2;8729:7;8715:26;;;;;;;;;;;;:9;:26::i;33150:171::-;33216:9;33211:106;33235:6;33231:1;:10;33211:106;;;33254:18;:6;934:19;;952:1;934:19;;;860:103;33254:18;33280:31;33290:2;33294:16;:6;836:14;;751:104;33294:16;33280:9;:31::i;:::-;33243:3;;;;:::i;:::-;;;;33211:106;;10393:264;10508:8;-1:-1:-1;;;;;10499:17:0;:5;-1:-1:-1;;;;;10499:17:0;;;10491:55;;;;-1:-1:-1;;;10491:55:0;;28197:2:1;10491:55:0;;;28179:21:1;28236:2;28216:18;;;28209:30;28275:27;28255:18;;;28248:55;28320:18;;10491:55:0;27995:349:1;10491:55:0;-1:-1:-1;;;;;10553:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;10553:46:0;;;;;;;;;;10611:41;;1235::1;;;10611::0;;1208:18:1;10611:41:0;;;;;;;10393:264;;;:::o;32755:90::-;32806:13;32833:7;32826:14;;;;;:::i;132:413::-;187:13;211:10;207:26;;-1:-1:-1;;223:10:0;;;;;;;;;;;;-1:-1:-1;;;223:10:0;;;;;132:413::o;207:26::-;255:5;240:12;286:54;293:9;;286:54;;310:8;;;;:::i;:::-;;-1:-1:-1;324:10:0;;-1:-1:-1;332:2:0;324:10;;:::i;:::-;;;286:54;;;346:19;378:6;368:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;368:17:0;;346:39;;392:121;399:10;;392:121;;417:11;427:1;417:11;;:::i;:::-;;-1:-1:-1;477:10:0;485:2;477:5;:10;:::i;:::-;464:24;;:2;:24;:::i;:::-;451:39;;434:6;441;434:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;434:56:0;;;;;;;;-1:-1:-1;496:11:0;505:2;496:11;;:::i;:::-;;;392:121;;3780:174;3867:6;;;-1:-1:-1;;;;;3880:17:0;;;-1:-1:-1;;;;;;3880:17:0;;;;;;;3909:40;;3867:6;;;3880:17;3867:6;;3909:40;;3848:16;;3909:40;3843:111;3780:174;:::o;5051:256::-;5152:4;-1:-1:-1;;;;;;5170:40:0;;-1:-1:-1;;;5170:40:0;;:92;;-1:-1:-1;;;;;;;5214:48:0;;-1:-1:-1;;;5214:48:0;5170:92;:132;;;-1:-1:-1;;;;;;;;;;4479:40:0;;;5266:36;4377:147;32850:295;32965:13;32984:22;32998:7;32984:13;:22::i;:::-;32964:42;;;33020:8;33019:9;33011:75;;;;-1:-1:-1;;;33011:75:0;;28668:2:1;33011:75:0;;;28650:21:1;28707:2;28687:18;;;28680:30;28746:34;28726:18;;;28719:62;-1:-1:-1;;;28797:18:1;;;28790:51;28858:19;;33011:75:0;28466:417:1;33011:75:0;33095:45;33122:4;33128:2;33132:7;33095:26;:45::i;10662:572::-;10773:4;-1:-1:-1;;;;;10788:13:0;;649:19;:23;10784:445;;10815:72;;-1:-1:-1;;;10815:72:0;;-1:-1:-1;;;;;10815:36:0;;;;;:72;;3052:10;;10866:4;;10872:7;;10881:5;;10815:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10815:72:0;;;;;;;;-1:-1:-1;;10815:72:0;;;;;;;;;;;;:::i;:::-;;;10811:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11023:13:0;;11019:177;;11043:60;;-1:-1:-1;;;11043:60:0;;;;;;;:::i;11019:177::-;11173:6;11167:13;11158:6;11154:2;11150:15;11143:38;10811:391;-1:-1:-1;;;;;;10925:51:0;-1:-1:-1;;;10925:51:0;;-1:-1:-1;10918:58:0;;10784:445;-1:-1:-1;11225:4:0;10662:572;;;;;;:::o;8751:237::-;8841:18;8847:2;8851:7;8841:5;:18::i;:::-;8874:54;8905:1;8909:2;8913:7;8922:5;8874:22;:54::i;:::-;8866:117;;;;-1:-1:-1;;;8866:117:0;;;;;;;:::i;15037:589::-;-1:-1:-1;;;;;15243:18:0;;15239:187;;15278:40;15310:7;16453:10;:17;;16426:24;;;;:15;:24;;;;;:44;;;16481:24;;;;;;;;;;;;16349:164;15278:40;15239:187;;;15348:2;-1:-1:-1;;;;;15340:10:0;:4;-1:-1:-1;;;;;15340:10:0;;15336:90;;15367:47;15400:4;15406:7;15367:32;:47::i;:::-;-1:-1:-1;;;;;15440:16:0;;15436:183;;15473:45;15510:7;15473:36;:45::i;15436:183::-;15546:4;-1:-1:-1;;;;;15540:10:0;:2;-1:-1:-1;;;;;15540:10:0;;15536:83;;15567:40;15595:2;15599:7;15567:27;:40::i;8993:394::-;-1:-1:-1;;;;;9067:16:0;;9059:61;;;;-1:-1:-1;;;9059:61:0;;29838:2:1;9059:61:0;;;29820:21:1;;;29857:18;;;29850:30;29916:34;29896:18;;;29889:62;29968:18;;9059:61:0;29636:356:1;9059:61:0;8252:4;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;:30;9125:58;;;;-1:-1:-1;;;9125:58:0;;30199:2:1;9125:58:0;;;30181:21:1;30238:2;30218:18;;;30211:30;30277;30257:18;;;30250:58;30325:18;;9125:58:0;29997:352:1;9125:58:0;9190:45;9219:1;9223:2;9227:7;9190:20;:45::i;:::-;-1:-1:-1;;;;;9242:13:0;;;;;;:9;:13;;;;;:18;;9259:1;;9242:13;:18;;9259:1;;9242:18;:::i;:::-;;;;-1:-1:-1;;9265:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9265:21:0;-1:-1:-1;;;;;9265:21:0;;;;;;;;9298:33;;9265:16;;;9298:33;;9265:16;;9298:33;31244:20:::1;31176:93:::0;:::o;17140:988::-;17406:22;17456:1;17431:22;17448:4;17431:16;:22::i;:::-;:26;;;;:::i;:::-;17468:18;17489:26;;;:17;:26;;;;;;17406:51;;-1:-1:-1;17622:28:0;;;17618:328;;-1:-1:-1;;;;;17689:18:0;;17667:19;17689:18;;;:12;:18;;;;;;;;:34;;;;;;;;;17740:30;;;;;;:44;;;17857:30;;:17;:30;;;;;:43;;;17618:328;-1:-1:-1;18042:26:0;;;;:17;:26;;;;;;;;18035:33;;;-1:-1:-1;;;;;18086:18:0;;;;;:12;:18;;;;;:34;;;;;;;18079:41;17140:988::o;18423:1079::-;18701:10;:17;18676:22;;18701:21;;18721:1;;18701:21;:::i;:::-;18733:18;18754:24;;;:15;:24;;;;;;19127:10;:26;;18676:46;;-1:-1:-1;18754:24:0;;18676:46;;19127:26;;;;;;:::i;:::-;;;;;;;;;19105:48;;19191:11;19166:10;19177;19166:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;19271:28;;;:15;:28;;;;;;;:41;;;19443:24;;;;;19436:31;19478:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18494:1008;;;18423:1079;:::o;15927:221::-;16012:14;16029:20;16046:2;16029:16;:20::i;:::-;-1:-1:-1;;;;;16060:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;16105:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;15927:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:1;;146:128::o;279:127::-;340:10;335:3;331:20;328:1;321:31;371:4;368:1;361:15;395:4;392:1;385:15;411:120;451:1;477;467:35;;482:18;;:::i;:::-;-1:-1:-1;516:9:1;;411:120::o;536:168::-;576:7;642:1;638;634:6;630:14;627:1;624:21;619:1;612:9;605:17;601:45;598:71;;;649:18;;:::i;:::-;-1:-1:-1;689:9:1;;536:168::o;709:131::-;-1:-1:-1;;;;;;783:32:1;;773:43;;763:71;;830:1;827;820:12;845:245;903:6;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;1011:9;998:23;1030:30;1054:5;1030:30;:::i;1287:258::-;1359:1;1369:113;1383:6;1380:1;1377:13;1369:113;;;1459:11;;;1453:18;1440:11;;;1433:39;1405:2;1398:10;1369:113;;;1500:6;1497:1;1494:13;1491:48;;;-1:-1:-1;;1535:1:1;1517:16;;1510:27;1287:258::o;1550:::-;1592:3;1630:5;1624:12;1657:6;1652:3;1645:19;1673:63;1729:6;1722:4;1717:3;1713:14;1706:4;1699:5;1695:16;1673:63;:::i;:::-;1790:2;1769:15;-1:-1:-1;;1765:29:1;1756:39;;;;1797:4;1752:50;;1550:258;-1:-1:-1;;1550:258:1:o;1813:220::-;1962:2;1951:9;1944:21;1925:4;1982:45;2023:2;2012:9;2008:18;2000:6;1982:45;:::i;2038:180::-;2097:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:52;;;2166:1;2163;2156:12;2118:52;-1:-1:-1;2189:23:1;;2038:180;-1:-1:-1;2038:180:1:o;2431:131::-;-1:-1:-1;;;;;2506:31:1;;2496:42;;2486:70;;2552:1;2549;2542:12;2567:315;2635:6;2643;2696:2;2684:9;2675:7;2671:23;2667:32;2664:52;;;2712:1;2709;2702:12;2664:52;2751:9;2738:23;2770:31;2795:5;2770:31;:::i;:::-;2820:5;2872:2;2857:18;;;;2844:32;;-1:-1:-1;;;2567:315:1:o;3069:456::-;3146:6;3154;3162;3215:2;3203:9;3194:7;3190:23;3186:32;3183:52;;;3231:1;3228;3221:12;3183:52;3270:9;3257:23;3289:31;3314:5;3289:31;:::i;:::-;3339:5;-1:-1:-1;3396:2:1;3381:18;;3368:32;3409:33;3368:32;3409:33;:::i;:::-;3069:456;;3461:7;;-1:-1:-1;;;3515:2:1;3500:18;;;;3487:32;;3069:456::o;3530:248::-;3598:6;3606;3659:2;3647:9;3638:7;3634:23;3630:32;3627:52;;;3675:1;3672;3665:12;3627:52;-1:-1:-1;;3698:23:1;;;3768:2;3753:18;;;3740:32;;-1:-1:-1;3530:248:1:o;4062:247::-;4121:6;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4248:31;4273:5;4248:31;:::i;4314:127::-;4375:10;4370:3;4366:20;4363:1;4356:31;4406:4;4403:1;4396:15;4430:4;4427:1;4420:15;4446:632;4511:5;4541:18;4582:2;4574:6;4571:14;4568:40;;;4588:18;;:::i;:::-;4663:2;4657:9;4631:2;4717:15;;-1:-1:-1;;4713:24:1;;;4739:2;4709:33;4705:42;4693:55;;;4763:18;;;4783:22;;;4760:46;4757:72;;;4809:18;;:::i;:::-;4849:10;4845:2;4838:22;4878:6;4869:15;;4908:6;4900;4893:22;4948:3;4939:6;4934:3;4930:16;4927:25;4924:45;;;4965:1;4962;4955:12;4924:45;5015:6;5010:3;5003:4;4995:6;4991:17;4978:44;5070:1;5063:4;5054:6;5046;5042:19;5038:30;5031:41;;;;4446:632;;;;;:::o;5083:451::-;5152:6;5205:2;5193:9;5184:7;5180:23;5176:32;5173:52;;;5221:1;5218;5211:12;5173:52;5261:9;5248:23;5294:18;5286:6;5283:30;5280:50;;;5326:1;5323;5316:12;5280:50;5349:22;;5402:4;5394:13;;5390:27;-1:-1:-1;5380:55:1;;5431:1;5428;5421:12;5380:55;5454:74;5520:7;5515:2;5502:16;5497:2;5493;5489:11;5454:74;:::i;5539:388::-;5607:6;5615;5668:2;5656:9;5647:7;5643:23;5639:32;5636:52;;;5684:1;5681;5674:12;5636:52;5723:9;5710:23;5742:31;5767:5;5742:31;:::i;:::-;5792:5;-1:-1:-1;5849:2:1;5834:18;;5821:32;5862:33;5821:32;5862:33;:::i;:::-;5914:7;5904:17;;;5539:388;;;;;:::o;6223:247::-;6005:12;;5993:25;;6067:4;6056:16;;;6050:23;6034:14;;;6027:47;6127:4;6116:16;;;6110:23;-1:-1:-1;;;;;6106:49:1;6090:14;;;6083:73;6205:4;6194:16;;;6188:23;6172:14;;;6165:47;6407:3;6392:19;;6420:44;5932:286;6738:416;6803:6;6811;6864:2;6852:9;6843:7;6839:23;6835:32;6832:52;;;6880:1;6877;6870:12;6832:52;6919:9;6906:23;6938:31;6963:5;6938:31;:::i;:::-;6988:5;-1:-1:-1;7045:2:1;7030:18;;7017:32;7087:15;;7080:23;7068:36;;7058:64;;7118:1;7115;7108:12;7159:795;7254:6;7262;7270;7278;7331:3;7319:9;7310:7;7306:23;7302:33;7299:53;;;7348:1;7345;7338:12;7299:53;7387:9;7374:23;7406:31;7431:5;7406:31;:::i;:::-;7456:5;-1:-1:-1;7513:2:1;7498:18;;7485:32;7526:33;7485:32;7526:33;:::i;:::-;7578:7;-1:-1:-1;7632:2:1;7617:18;;7604:32;;-1:-1:-1;7687:2:1;7672:18;;7659:32;7714:18;7703:30;;7700:50;;;7746:1;7743;7736:12;7700:50;7769:22;;7822:4;7814:13;;7810:27;-1:-1:-1;7800:55:1;;7851:1;7848;7841:12;7800:55;7874:74;7940:7;7935:2;7922:16;7917:2;7913;7909:11;7874:74;:::i;:::-;7864:84;;;7159:795;;;;;;;:::o;7959:703::-;8180:2;8232:21;;;8302:13;;8205:18;;;8324:22;;;8151:4;;8180:2;8403:15;;;;8377:2;8362:18;;;8151:4;8446:190;8460:6;8457:1;8454:13;8446:190;;;8509:45;8550:3;8541:6;8535:13;6005:12;;5993:25;;6067:4;6056:16;;;6050:23;6034:14;;;6027:47;6127:4;6116:16;;;6110:23;-1:-1:-1;;;;;6106:49:1;6090:14;;;6083:73;6205:4;6194:16;;;6188:23;6172:14;;6165:47;5932:286;8509:45;8611:15;;;;8583:4;8574:14;;;;;8482:1;8475:9;8446:190;;;-1:-1:-1;8653:3:1;;7959:703;-1:-1:-1;;;;;;7959:703:1:o;8667:367::-;8730:8;8740:6;8794:3;8787:4;8779:6;8775:17;8771:27;8761:55;;8812:1;8809;8802:12;8761:55;-1:-1:-1;8835:20:1;;8878:18;8867:30;;8864:50;;;8910:1;8907;8900:12;8864:50;8947:4;8939:6;8935:17;8923:29;;9007:3;9000:4;8990:6;8987:1;8983:14;8975:6;8971:27;8967:38;8964:47;8961:67;;;9024:1;9021;9014:12;8961:67;8667:367;;;;;:::o;9039:771::-;9159:6;9167;9175;9183;9236:2;9224:9;9215:7;9211:23;9207:32;9204:52;;;9252:1;9249;9242:12;9204:52;9292:9;9279:23;9321:18;9362:2;9354:6;9351:14;9348:34;;;9378:1;9375;9368:12;9348:34;9417:70;9479:7;9470:6;9459:9;9455:22;9417:70;:::i;:::-;9506:8;;-1:-1:-1;9391:96:1;-1:-1:-1;9594:2:1;9579:18;;9566:32;;-1:-1:-1;9610:16:1;;;9607:36;;;9639:1;9636;9629:12;9607:36;;9678:72;9742:7;9731:8;9720:9;9716:24;9678:72;:::i;:::-;9039:771;;;;-1:-1:-1;9769:8:1;-1:-1:-1;;;;9039:771:1:o;9815:380::-;9894:1;9890:12;;;;9937;;;9958:61;;10012:4;10004:6;10000:17;9990:27;;9958:61;10065:2;10057:6;10054:14;10034:18;10031:38;10028:161;;;10111:10;10106:3;10102:20;10099:1;10092:31;10146:4;10143:1;10136:15;10174:4;10171:1;10164:15;10028:161;;9815:380;;;:::o;10200:356::-;10402:2;10384:21;;;10421:18;;;10414:30;10480:34;10475:2;10460:18;;10453:62;10547:2;10532:18;;10200:356::o;11801:413::-;12003:2;11985:21;;;12042:2;12022:18;;;12015:30;12081:34;12076:2;12061:18;;12054:62;-1:-1:-1;;;12147:2:1;12132:18;;12125:47;12204:3;12189:19;;11801:413::o;12631:355::-;12833:2;12815:21;;;12872:2;12852:18;;;12845:30;12911:33;12906:2;12891:18;;12884:61;12977:2;12962:18;;12631:355::o;13346:135::-;13385:3;-1:-1:-1;;13406:17:1;;13403:43;;;13426:18;;:::i;:::-;-1:-1:-1;13473:1:1;13462:13;;13346:135::o;13486:125::-;13526:4;13554:1;13551;13548:8;13545:34;;;13559:18;;:::i;:::-;-1:-1:-1;13596:9:1;;13486:125::o;13826:406::-;14028:2;14010:21;;;14067:2;14047:18;;;14040:30;-1:-1:-1;;;;;;;;;;;14101:2:1;14086:18;;14079:62;-1:-1:-1;;;14172:2:1;14157:18;;14150:40;14222:3;14207:19;;13826:406::o;14237:403::-;14439:2;14421:21;;;14478:2;14458:18;;;14451:30;14517:34;14512:2;14497:18;;14490:62;-1:-1:-1;;;14583:2:1;14568:18;;14561:37;14630:3;14615:19;;14237:403::o;14645:127::-;14706:10;14701:3;14697:20;14694:1;14687:31;14737:4;14734:1;14727:15;14761:4;14758:1;14751:15;15660:127;15721:10;15716:3;15712:20;15709:1;15702:31;15752:4;15749:1;15742:15;15776:4;15773:1;15766:15;17800:251;17870:6;17923:2;17911:9;17902:7;17898:23;17894:32;17891:52;;;17939:1;17936;17929:12;17891:52;17971:9;17965:16;17990:31;18015:5;17990:31;:::i;22229:407::-;22431:2;22413:21;;;22470:2;22450:18;;;22443:30;22509:34;22504:2;22489:18;;22482:62;-1:-1:-1;;;22575:2:1;22560:18;;22553:41;22626:3;22611:19;;22229:407::o;24007:1527::-;24231:3;24269:6;24263:13;24295:4;24308:51;24352:6;24347:3;24342:2;24334:6;24330:15;24308:51;:::i;:::-;24422:13;;24381:16;;;;24444:55;24422:13;24381:16;24466:15;;;24444:55;:::i;:::-;24588:13;;24521:20;;;24561:1;;24648;24670:18;;;;24723;;;;24750:93;;24828:4;24818:8;24814:19;24802:31;;24750:93;24891:2;24881:8;24878:16;24858:18;24855:40;24852:167;;;-1:-1:-1;;;24918:33:1;;24974:4;24971:1;24964:15;25004:4;24925:3;24992:17;24852:167;25035:18;25062:110;;;;25186:1;25181:328;;;;25028:481;;25062:110;-1:-1:-1;;25097:24:1;;25083:39;;25142:20;;;;-1:-1:-1;25062:110:1;;25181:328;23954:1;23947:14;;;23991:4;23978:18;;25276:1;25290:169;25304:8;25301:1;25298:15;25290:169;;;25386:14;;25371:13;;;25364:37;25429:16;;;;25321:10;;25290:169;;;25294:3;;25490:8;25483:5;25479:20;25472:27;;25028:481;-1:-1:-1;25525:3:1;;24007:1527;-1:-1:-1;;;;;;;;;;;24007:1527:1:o;25946:127::-;26007:10;26002:3;25998:20;25995:1;25988:31;26038:4;26035:1;26028:15;26062:4;26059:1;26052:15;26078:269;26135:6;26188:2;26176:9;26167:7;26163:23;26159:32;26156:52;;;26204:1;26201;26194:12;26156:52;26243:9;26230:23;26293:4;26286:5;26282:16;26275:5;26272:27;26262:55;;26313:1;26310;26303:12;27576:414;27778:2;27760:21;;;27817:2;27797:18;;;27790:30;27856:34;27851:2;27836:18;;27829:62;-1:-1:-1;;;27922:2:1;27907:18;;27900:48;27980:3;27965:19;;27576:414::o;28349:112::-;28381:1;28407;28397:35;;28412:18;;:::i;:::-;-1:-1:-1;28446:9:1;;28349:112::o;28888:489::-;-1:-1:-1;;;;;29157:15:1;;;29139:34;;29209:15;;29204:2;29189:18;;29182:43;29256:2;29241:18;;29234:34;;;29304:3;29299:2;29284:18;;29277:31;;;29082:4;;29325:46;;29351:19;;29343:6;29325:46;:::i;:::-;29317:54;28888:489;-1:-1:-1;;;;;;28888:489:1:o;29382:249::-;29451:6;29504:2;29492:9;29483:7;29479:23;29475:32;29472:52;;;29520:1;29517;29510:12;29472:52;29552:9;29546:16;29571:30;29595:5;29571:30;:::i

Swarm Source

ipfs://02e4a430994ee50dcfdd31ae357b6011be3eb1bff243fa9ecda533cc02d0875d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.