ERC-721
Overview
Max Total Supply
1 LGBT+
Holders
1
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 LGBT+Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LGBTNFT
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
pragma solidity <=8.7.0; pragma experimental ABIEncoderV2; //SPDX-License-Identifier: MIT import "./ERC721.sol"; contract LGBTNFT is ERC721, ReentrancyGuard, Ownable { uint256 public price = 100000000000000000; uint256 public maxSupply = 4869; uint256 public currentSupply = 0; address public LGBTokenContract; uint256 public LGBTokenDropPerMint = 1000000000000; uint256 public openAt = 1638554400; constructor() ERC721("LGBT NFT", "LGBT+") { _setBaseURI(string("https://lgbt-nft.online/meta/")); } function isOpen() public view returns (bool) { if (block.timestamp >= openAt) { return true; } return false; } function mint() public payable nonReentrant { require(isOpen(), "Minting is not yet enabled"); require(price <= msg.value, "Not enough Ether sent"); uint256 Count = msg.value/price; require(currentSupply < maxSupply, "Minting closed"); uint256 remaining = maxSupply-currentSupply; require(Count <= remaining, "Not enough NFT remaining for this Ether amount"); for (uint256 i=0; i<Count; i++) { _safeMint(msg.sender, currentSupply); if (currentSupply < maxSupply/2) { ERC20(LGBTokenContract).transfer(msg.sender, LGBTokenDropPerMint); } currentSupply += 1; } } function withdraw() public onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } function setLGBTokenContract(address contractAddress) external onlyOwner { LGBTokenContract = contractAddress; } receive() external payable {} } interface ERC20 { function transfer(address, uint256) external returns (bool); function approve(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); }
pragma solidity <=8.7.0; pragma experimental ABIEncoderV2; //SPDX-License-Identifier: MIT abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } library Base64 { bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; function encode(bytes memory data) internal pure returns (string memory) { uint256 len = data.length; if (len == 0) return ""; uint256 encodedLen = 4 * ((len + 2) / 3); bytes memory result = new bytes(encodedLen + 32); bytes memory table = TABLE; assembly { let tablePtr := add(table, 1) let resultPtr := add(result, 32) for { let i := 0 } lt(i, len) { } { i := add(i, 3) let input := and(mload(add(data, i)), 0xffffff) let out := mload(add(tablePtr, and(shr(18, input), 0x3F))) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)) out := shl(224, out) mstore(resultPtr, out) resultPtr := add(resultPtr, 4) } switch mod(len, 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } mstore(result, encodedLen) } return string(result); } } abstract contract Ownable is Context { address payable private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address payable msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address payable) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /* function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = 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; } } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } library Strings { function toString(uint256 value) internal pure returns (string memory) { unchecked { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); uint256 index = digits - 1; temp = value; while (temp != 0) { buffer[index--] = bytes1(uint8(48 + temp % 10)); temp /= 10; } return string(buffer); } } } library EnumerableMap { struct MapEntry { bytes32 _key; bytes32 _value; } struct Map { MapEntry[] _entries; mapping (bytes32 => uint256) _indexes; } function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) { uint256 keyIndex = map._indexes[key]; if (keyIndex == 0) { map._entries.push(MapEntry({ _key: key, _value: value })); map._indexes[key] = map._entries.length; return true; } else { map._entries[keyIndex - 1]._value = value; return false; } } function _remove(Map storage map, bytes32 key) private returns (bool) { uint256 keyIndex = map._indexes[key]; if (keyIndex != 0) { uint256 toDeleteIndex = keyIndex - 1; uint256 lastIndex = map._entries.length - 1; MapEntry storage lastEntry = map._entries[lastIndex]; map._entries[toDeleteIndex] = lastEntry; map._indexes[lastEntry._key] = toDeleteIndex + 1; map._entries.pop(); delete map._indexes[key]; return true; } else { return false; } } function _contains(Map storage map, bytes32 key) private view returns (bool) { return map._indexes[key] != 0; } function _length(Map storage map) private view returns (uint256) { return map._entries.length; } function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) { require(map._entries.length > index, "EnumerableMap: index out of bounds"); MapEntry storage entry = map._entries[index]; return (entry._key, entry._value); } function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) { uint256 keyIndex = map._indexes[key]; if (keyIndex == 0) return (false, 0); return (true, map._entries[keyIndex - 1]._value); } function _get(Map storage map, bytes32 key) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, "EnumerableMap: nonexistent key"); return map._entries[keyIndex - 1]._value; } function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, errorMessage); return map._entries[keyIndex - 1]._value; } struct UintToAddressMap { Map _inner; } function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) { return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value)))); } function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) { return _remove(map._inner, bytes32(key)); } function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) { return _contains(map._inner, bytes32(key)); } function length(UintToAddressMap storage map) internal view returns (uint256) { return _length(map._inner); } function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) { (bytes32 key, bytes32 value) = _at(map._inner, index); return (uint256(key), address(uint160(uint256(value)))); } function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) { (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key)); return (success, address(uint160(uint256(value)))); } function get(UintToAddressMap storage map, uint256 key) internal view returns (address) { return address(uint160(uint256(_get(map._inner, bytes32(key))))); } function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) { return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage)))); } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = toDeleteIndex + 1; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; mapping(bytes4 => bool) private _supportedInterfaces; constructor() { _registerInterface(_INTERFACE_ID_ERC165); } function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal virtual { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } 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 IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } 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); } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using SafeMath for uint256; using Address for address; using EnumerableSet for EnumerableSet.UintSet; using EnumerableMap for EnumerableMap.UintToAddressMap; using Strings for uint256; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; mapping (address => EnumerableSet.UintSet) private _holderTokens; EnumerableMap.UintToAddressMap private _tokenOwners; mapping (uint256 => address) private _tokenApprovals; mapping (address => mapping (address => bool)) private _operatorApprovals; string private _name; string private _symbol; mapping (uint256 => string) private _tokenURIs; string private _baseURI; bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _registerInterface(_INTERFACE_ID_ERC721); _registerInterface(_INTERFACE_ID_ERC721_METADATA); _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _holderTokens[owner].length(); } function ownerOf(uint256 tokenId) public view virtual override returns (address) { return _tokenOwners.get(tokenId, "ERC721: owner query for nonexistent token"); } 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 _tokenURI = _tokenURIs[tokenId]; string memory base = baseURI(); if (bytes(base).length == 0) { return _tokenURI; } if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return string(abi.encodePacked(base, tokenId.toString(), string(".json"))); } function baseURI() public view virtual returns (string memory) { return _baseURI; } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { return _holderTokens[owner].at(index); } function totalSupply() public view virtual override returns (uint256) { return _tokenOwners.length(); } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { (uint256 tokenId, ) = _tokenOwners.at(index); return tokenId; } 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 || ERC721.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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom(address from, address to, uint256 tokenId) public virtual override { 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 _tokenOwners.contains(tokenId); } 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 || ERC721.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); _holderTokens[to].add(tokenId); _tokenOwners.set(tokenId, to); emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); _approve(address(0), tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } _holderTokens[owner].remove(tokenId); _tokenOwners.remove(tokenId); emit Transfer(owner, address(0), tokenId); } function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _holderTokens[from].remove(tokenId); _holderTokens[to].add(tokenId); _tokenOwners.set(tokenId, to); emit Transfer(from, to, tokenId); } function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function _setBaseURI(string memory baseURI_) internal virtual { _baseURI = baseURI_; } function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (!to.isContract()) { return true; } bytes memory returndata = to.functionCall(abi.encodeWithSelector( IERC721Receiver(to).onERC721Received.selector, _msgSender(), from, tokenId, _data ), "ERC721: transfer to non ERC721Receiver implementer"); bytes4 retval = abi.decode(returndata, (bytes4)); return (retval == _ERC721_RECEIVED); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LGBTokenContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LGBTokenDropPerMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setLGBTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267016345785d8a0000600c55611305600d556000600e5564e8d4a510006010556361aa5b206011553480156200003957600080fd5b5060408051808201825260088152671311d0950813919560c21b602080830191909152825180840190935260058352644c4742542b60d81b9083015290620000886301ffc9a760e01b62000179565b81516200009d90600690602085019062000216565b508051620000b390600790602084019062000216565b50620000c66380ac58cd60e01b62000179565b620000d8635b5e139f60e01b62000179565b620000ea63780e9d6360e01b62000179565b50506001600a55600b80546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152601d81527f68747470733a2f2f6c6762742d6e66742e6f6e6c696e652f6d6574612f00000060208201526200017390620001fd565b620002f9565b6001600160e01b03198082161415620001d85760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b80516200021290600990602084019062000216565b5050565b8280546200022490620002bc565b90600052602060002090601f01602090048101928262000248576000855562000293565b82601f106200026357805160ff191683800117855562000293565b8280016001018555821562000293579182015b828111156200029357825182559160200191906001019062000276565b50620002a1929150620002a5565b5090565b5b80821115620002a15760008155600101620002a6565b600181811c90821680620002d157607f821691505b60208210811415620002f357634e487b7160e01b600052602260045260246000fd5b50919050565b61206a80620003096000396000f3fe6080604052600436106101bb5760003560e01c80636c0360eb116100ec578063a0e23ebd1161008a578063c87b56dd11610064578063c87b56dd146104a7578063d5abeb01146104c7578063e985e9c5146104dd578063fa5047f61461052657600080fd5b8063a0e23ebd14610451578063a22cb46514610467578063b88d4fde1461048757600080fd5b80637c2aa621116100c65780637c2aa621146103e85780638da5cb5b1461040857806395d89b4114610426578063a035b1fe1461043b57600080fd5b80636c0360eb1461039d57806370a08231146103b2578063771282f6146103d257600080fd5b80632f745c591161015957806347535d7b1161013357806347535d7b1461033257806347f992bc146103475780634f6ccce71461035d5780636352211e1461037d57600080fd5b80632f745c59146102dd5780633ccfd60b146102fd57806342842e0e1461031257600080fd5b8063095ea7b311610195578063095ea7b3146102705780631249c58b1461029257806318160ddd1461029a57806323b872dd146102bd57600080fd5b806301ffc9a7146101c757806306fdde0314610216578063081812fc1461023857600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506102016101e2366004611c87565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561022257600080fd5b5061022b610546565b60405161020d9190611dd1565b34801561024457600080fd5b50610258610253366004611cc1565b6105d8565b6040516001600160a01b03909116815260200161020d565b34801561027c57600080fd5b5061029061028b366004611c40565b610665565b005b61029061077b565b3480156102a657600080fd5b506102af610a30565b60405190815260200161020d565b3480156102c957600080fd5b506102906102d8366004611af1565b610a41565b3480156102e957600080fd5b506102af6102f8366004611c40565b610a72565b34801561030957600080fd5b50610290610a9d565b34801561031e57600080fd5b5061029061032d366004611af1565b610b2a565b34801561033e57600080fd5b50610201610b45565b34801561035357600080fd5b506102af60105481565b34801561036957600080fd5b506102af610378366004611cc1565b610b5c565b34801561038957600080fd5b50610258610398366004611cc1565b610b72565b3480156103a957600080fd5b5061022b610b9a565b3480156103be57600080fd5b506102af6103cd366004611aa3565b610ba9565b3480156103de57600080fd5b506102af600e5481565b3480156103f457600080fd5b50610290610403366004611aa3565b610c35565b34801561041457600080fd5b50600b546001600160a01b0316610258565b34801561043257600080fd5b5061022b610cb1565b34801561044757600080fd5b506102af600c5481565b34801561045d57600080fd5b506102af60115481565b34801561047357600080fd5b50610290610482366004611c09565b610cc0565b34801561049357600080fd5b506102906104a2366004611b2d565b610d85565b3480156104b357600080fd5b5061022b6104c2366004611cc1565b610dbd565b3480156104d357600080fd5b506102af600d5481565b3480156104e957600080fd5b506102016104f8366004611abe565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561053257600080fd5b50600f54610258906001600160a01b031681565b60606006805461055590611f04565b80601f016020809104026020016040519081016040528092919081815260200182805461058190611f04565b80156105ce5780601f106105a3576101008083540402835291602001916105ce565b820191906000526020600020905b8154815290600101906020018083116105b157829003601f168201915b5050505050905090565b60006105e382610f4e565b6106495760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061067082610b72565b9050806001600160a01b0316836001600160a01b031614156106de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610640565b336001600160a01b03821614806106fa57506106fa81336104f8565b61076c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610640565b6107768383610f5b565b505050565b6002600a5414156107ce5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610640565b6002600a556107db610b45565b6108275760405162461bcd60e51b815260206004820152601a60248201527f4d696e74696e67206973206e6f742079657420656e61626c65640000000000006044820152606401610640565b34600c5411156108715760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da08115d1a195c881cd95b9d605a1b6044820152606401610640565b6000600c54346108819190611e9f565b9050600d54600e54106108c75760405162461bcd60e51b815260206004820152600e60248201526d135a5b9d1a5b99c818db1bdcd95960921b6044820152606401610640565b6000600e54600d546108d99190611ec1565b9050808211156109425760405162461bcd60e51b815260206004820152602e60248201527f4e6f7420656e6f756768204e46542072656d61696e696e6720666f722074686960448201526d1cc8115d1a195c88185b5bdd5b9d60921b6064820152608401610640565b60005b82811015610a265761095933600e54610fc9565b6002600d546109689190611e9f565b600e5410156109fb57600f5460105460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190611c6a565b505b6001600e6000828254610a0e9190611e87565b90915550819050610a1e81611f3f565b915050610945565b50506001600a5550565b6000610a3c6002610fe3565b905090565b610a4b3382610fed565b610a675760405162461bcd60e51b815260040161064090611e36565b6107768383836110d7565b6001600160a01b0382166000908152600160205260408120610a949083611258565b90505b92915050565b600b546001600160a01b03163314610af75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610640565b6040514790339082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b5050565b61077683838360405180602001604052806000815250610d85565b60006011544210610b565750600190565b50600090565b600080610b6a600284611264565b509392505050565b6000610a978260405180606001604052806029815260200161200c6029913960029190611280565b60606009805461055590611f04565b60006001600160a01b038216610c145760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610640565b6001600160a01b0382166000908152600160205260409020610a9790610fe3565b600b546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610640565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60606007805461055590611f04565b6001600160a01b038216331415610d195760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610640565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d8f3383610fed565b610dab5760405162461bcd60e51b815260040161064090611e36565b610db784848484611297565b50505050565b6060610dc882610f4e565b610e2c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610640565b60008281526008602052604081208054610e4590611f04565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7190611f04565b8015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090506000610ecf610b9a565b9050805160001415610ee2575092915050565b815115610f14578082604051602001610efc929190611d22565b60405160208183030381529060405292505050919050565b80610f1e856112ca565b60405180604001604052806005815260200164173539b7b760d91b815250604051602001610efc93929190611d51565b6000610a976002836113ab565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f9082610b72565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610b268282604051806020016040528060008152506113c3565b6000610a97825490565b6000610ff882610f4e565b6110595760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610640565b600061106483610b72565b9050806001600160a01b0316846001600160a01b0316148061109f5750836001600160a01b0316611094846105d8565b6001600160a01b0316145b806110cf57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166110ea82610b72565b6001600160a01b0316146111525760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610640565b6001600160a01b0382166111b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610640565b6111bf600082610f5b565b6001600160a01b03831660009081526001602052604090206111e190826113f6565b506001600160a01b03821660009081526001602052604090206112049082611402565b506112116002828461140e565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610a948383611424565b600080808061127386866114aa565b9097909650945050505050565b600061128d848484611547565b90505b9392505050565b6112a28484846110d7565b6112ae848484846115b0565b610db75760405162461bcd60e51b815260040161064090611de4565b6060816112ee5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130657600101600a820491506112f2565b60008167ffffffffffffffff81111561132157611321611f9c565b6040519080825280601f01601f19166020018201604052801561134b576020820181803683370190505b50859350905060001982015b83156113a257600a840660300160f81b8282806001900393508151811061138057611380611f86565b60200101906001600160f81b031916908160001a905350600a84049350611357565b50949350505050565b60008181526001830160205260408120541515610a94565b6113cd8383611681565b6113da60008484846115b0565b6107765760405162461bcd60e51b815260040161064090611de4565b6000610a948383611799565b6000610a94838361188c565b600061128d84846001600160a01b0385166118db565b815460009082106114825760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610640565b82600001828154811061149757611497611f86565b9060005260206000200154905092915050565b81546000908190831061150a5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610640565b600084600001848154811061152157611521611f86565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816115775760405162461bcd60e51b81526004016106409190611dd1565b5084611584600183611ec1565b8154811061159457611594611f86565b9060005260206000209060020201600101549150509392505050565b60006001600160a01b0384163b6115c9575060016110cf565b600061164a630a85bd0160e11b338887876040516024016115ed9493929190611d94565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611fda603291396001600160a01b038816919061197c565b90506000818060200190518101906116629190611ca4565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b6001600160a01b0382166116d75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610640565b6116e081610f4e565b1561172d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610640565b6001600160a01b038216600090815260016020526040902061174f9082611402565b5061175c6002828461140e565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260018301602052604081205480156118825760006117bd600183611ec1565b85549091506000906117d190600190611ec1565b905060008660000182815481106117ea576117ea611f86565b906000526020600020015490508087600001848154811061180d5761180d611f86565b600091825260209091200155611824836001611e87565b6000828152600189016020526040902055865487908061184657611846611f70565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610a97565b6000915050610a97565b60008181526001830160205260408120546118d357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a97565b506000610a97565b600082815260018401602052604081205480611940575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611290565b828561194d600184611ec1565b8154811061195d5761195d611f86565b9060005260206000209060020201600101819055506000915050611290565b606061128d848460008585843b6119d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610640565b600080866001600160a01b031685876040516119f19190611d06565b60006040518083038185875af1925050503d8060008114611a2e576040519150601f19603f3d011682016040523d82523d6000602084013e611a33565b606091505b5091509150611a43828286611a4e565b979650505050505050565b60608315611a5d575081611290565b825115611a6d5782518084602001fd5b8160405162461bcd60e51b81526004016106409190611dd1565b80356001600160a01b0381168114611a9e57600080fd5b919050565b600060208284031215611ab557600080fd5b610a9482611a87565b60008060408385031215611ad157600080fd5b611ada83611a87565b9150611ae860208401611a87565b90509250929050565b600080600060608486031215611b0657600080fd5b611b0f84611a87565b9250611b1d60208501611a87565b9150604084013590509250925092565b60008060008060808587031215611b4357600080fd5b611b4c85611a87565b9350611b5a60208601611a87565b925060408501359150606085013567ffffffffffffffff80821115611b7e57600080fd5b818701915087601f830112611b9257600080fd5b813581811115611ba457611ba4611f9c565b604051601f8201601f19908116603f01168101908382118183101715611bcc57611bcc611f9c565b816040528281528a6020848701011115611be557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611c1c57600080fd5b611c2583611a87565b91506020830135611c3581611fb2565b809150509250929050565b60008060408385031215611c5357600080fd5b611c5c83611a87565b946020939093013593505050565b600060208284031215611c7c57600080fd5b815161129081611fb2565b600060208284031215611c9957600080fd5b813561129081611fc3565b600060208284031215611cb657600080fd5b815161129081611fc3565b600060208284031215611cd357600080fd5b5035919050565b60008151808452611cf2816020860160208601611ed8565b601f01601f19169290920160200192915050565b60008251611d18818460208701611ed8565b9190910192915050565b60008351611d34818460208801611ed8565b835190830190611d48818360208801611ed8565b01949350505050565b60008451611d63818460208901611ed8565b845190830190611d77818360208901611ed8565b8451910190611d8a818360208801611ed8565b0195945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611dc790830184611cda565b9695505050505050565b602081526000610a946020830184611cda565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611e9a57611e9a611f5a565b500190565b600082611ebc57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ed357611ed3611f5a565b500390565b60005b83811015611ef3578181015183820152602001611edb565b83811115610db75750506000910152565b600181811c90821680611f1857607f821691505b60208210811415611f3957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f5357611f53611f5a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611fc057600080fd5b50565b6001600160e01b031981168114611fc057600080fdfe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea264697066735822122091f6c2a1212b28bf2453d1d5489c403918f4efab8a3b9bf3859115ecd245c7bd64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80636c0360eb116100ec578063a0e23ebd1161008a578063c87b56dd11610064578063c87b56dd146104a7578063d5abeb01146104c7578063e985e9c5146104dd578063fa5047f61461052657600080fd5b8063a0e23ebd14610451578063a22cb46514610467578063b88d4fde1461048757600080fd5b80637c2aa621116100c65780637c2aa621146103e85780638da5cb5b1461040857806395d89b4114610426578063a035b1fe1461043b57600080fd5b80636c0360eb1461039d57806370a08231146103b2578063771282f6146103d257600080fd5b80632f745c591161015957806347535d7b1161013357806347535d7b1461033257806347f992bc146103475780634f6ccce71461035d5780636352211e1461037d57600080fd5b80632f745c59146102dd5780633ccfd60b146102fd57806342842e0e1461031257600080fd5b8063095ea7b311610195578063095ea7b3146102705780631249c58b1461029257806318160ddd1461029a57806323b872dd146102bd57600080fd5b806301ffc9a7146101c757806306fdde0314610216578063081812fc1461023857600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506102016101e2366004611c87565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561022257600080fd5b5061022b610546565b60405161020d9190611dd1565b34801561024457600080fd5b50610258610253366004611cc1565b6105d8565b6040516001600160a01b03909116815260200161020d565b34801561027c57600080fd5b5061029061028b366004611c40565b610665565b005b61029061077b565b3480156102a657600080fd5b506102af610a30565b60405190815260200161020d565b3480156102c957600080fd5b506102906102d8366004611af1565b610a41565b3480156102e957600080fd5b506102af6102f8366004611c40565b610a72565b34801561030957600080fd5b50610290610a9d565b34801561031e57600080fd5b5061029061032d366004611af1565b610b2a565b34801561033e57600080fd5b50610201610b45565b34801561035357600080fd5b506102af60105481565b34801561036957600080fd5b506102af610378366004611cc1565b610b5c565b34801561038957600080fd5b50610258610398366004611cc1565b610b72565b3480156103a957600080fd5b5061022b610b9a565b3480156103be57600080fd5b506102af6103cd366004611aa3565b610ba9565b3480156103de57600080fd5b506102af600e5481565b3480156103f457600080fd5b50610290610403366004611aa3565b610c35565b34801561041457600080fd5b50600b546001600160a01b0316610258565b34801561043257600080fd5b5061022b610cb1565b34801561044757600080fd5b506102af600c5481565b34801561045d57600080fd5b506102af60115481565b34801561047357600080fd5b50610290610482366004611c09565b610cc0565b34801561049357600080fd5b506102906104a2366004611b2d565b610d85565b3480156104b357600080fd5b5061022b6104c2366004611cc1565b610dbd565b3480156104d357600080fd5b506102af600d5481565b3480156104e957600080fd5b506102016104f8366004611abe565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561053257600080fd5b50600f54610258906001600160a01b031681565b60606006805461055590611f04565b80601f016020809104026020016040519081016040528092919081815260200182805461058190611f04565b80156105ce5780601f106105a3576101008083540402835291602001916105ce565b820191906000526020600020905b8154815290600101906020018083116105b157829003601f168201915b5050505050905090565b60006105e382610f4e565b6106495760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061067082610b72565b9050806001600160a01b0316836001600160a01b031614156106de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610640565b336001600160a01b03821614806106fa57506106fa81336104f8565b61076c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610640565b6107768383610f5b565b505050565b6002600a5414156107ce5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610640565b6002600a556107db610b45565b6108275760405162461bcd60e51b815260206004820152601a60248201527f4d696e74696e67206973206e6f742079657420656e61626c65640000000000006044820152606401610640565b34600c5411156108715760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da08115d1a195c881cd95b9d605a1b6044820152606401610640565b6000600c54346108819190611e9f565b9050600d54600e54106108c75760405162461bcd60e51b815260206004820152600e60248201526d135a5b9d1a5b99c818db1bdcd95960921b6044820152606401610640565b6000600e54600d546108d99190611ec1565b9050808211156109425760405162461bcd60e51b815260206004820152602e60248201527f4e6f7420656e6f756768204e46542072656d61696e696e6720666f722074686960448201526d1cc8115d1a195c88185b5bdd5b9d60921b6064820152608401610640565b60005b82811015610a265761095933600e54610fc9565b6002600d546109689190611e9f565b600e5410156109fb57600f5460105460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190611c6a565b505b6001600e6000828254610a0e9190611e87565b90915550819050610a1e81611f3f565b915050610945565b50506001600a5550565b6000610a3c6002610fe3565b905090565b610a4b3382610fed565b610a675760405162461bcd60e51b815260040161064090611e36565b6107768383836110d7565b6001600160a01b0382166000908152600160205260408120610a949083611258565b90505b92915050565b600b546001600160a01b03163314610af75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610640565b6040514790339082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b5050565b61077683838360405180602001604052806000815250610d85565b60006011544210610b565750600190565b50600090565b600080610b6a600284611264565b509392505050565b6000610a978260405180606001604052806029815260200161200c6029913960029190611280565b60606009805461055590611f04565b60006001600160a01b038216610c145760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610640565b6001600160a01b0382166000908152600160205260409020610a9790610fe3565b600b546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610640565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60606007805461055590611f04565b6001600160a01b038216331415610d195760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610640565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d8f3383610fed565b610dab5760405162461bcd60e51b815260040161064090611e36565b610db784848484611297565b50505050565b6060610dc882610f4e565b610e2c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610640565b60008281526008602052604081208054610e4590611f04565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7190611f04565b8015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090506000610ecf610b9a565b9050805160001415610ee2575092915050565b815115610f14578082604051602001610efc929190611d22565b60405160208183030381529060405292505050919050565b80610f1e856112ca565b60405180604001604052806005815260200164173539b7b760d91b815250604051602001610efc93929190611d51565b6000610a976002836113ab565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f9082610b72565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610b268282604051806020016040528060008152506113c3565b6000610a97825490565b6000610ff882610f4e565b6110595760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610640565b600061106483610b72565b9050806001600160a01b0316846001600160a01b0316148061109f5750836001600160a01b0316611094846105d8565b6001600160a01b0316145b806110cf57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166110ea82610b72565b6001600160a01b0316146111525760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610640565b6001600160a01b0382166111b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610640565b6111bf600082610f5b565b6001600160a01b03831660009081526001602052604090206111e190826113f6565b506001600160a01b03821660009081526001602052604090206112049082611402565b506112116002828461140e565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610a948383611424565b600080808061127386866114aa565b9097909650945050505050565b600061128d848484611547565b90505b9392505050565b6112a28484846110d7565b6112ae848484846115b0565b610db75760405162461bcd60e51b815260040161064090611de4565b6060816112ee5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130657600101600a820491506112f2565b60008167ffffffffffffffff81111561132157611321611f9c565b6040519080825280601f01601f19166020018201604052801561134b576020820181803683370190505b50859350905060001982015b83156113a257600a840660300160f81b8282806001900393508151811061138057611380611f86565b60200101906001600160f81b031916908160001a905350600a84049350611357565b50949350505050565b60008181526001830160205260408120541515610a94565b6113cd8383611681565b6113da60008484846115b0565b6107765760405162461bcd60e51b815260040161064090611de4565b6000610a948383611799565b6000610a94838361188c565b600061128d84846001600160a01b0385166118db565b815460009082106114825760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610640565b82600001828154811061149757611497611f86565b9060005260206000200154905092915050565b81546000908190831061150a5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610640565b600084600001848154811061152157611521611f86565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816115775760405162461bcd60e51b81526004016106409190611dd1565b5084611584600183611ec1565b8154811061159457611594611f86565b9060005260206000209060020201600101549150509392505050565b60006001600160a01b0384163b6115c9575060016110cf565b600061164a630a85bd0160e11b338887876040516024016115ed9493929190611d94565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611fda603291396001600160a01b038816919061197c565b90506000818060200190518101906116629190611ca4565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b6001600160a01b0382166116d75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610640565b6116e081610f4e565b1561172d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610640565b6001600160a01b038216600090815260016020526040902061174f9082611402565b5061175c6002828461140e565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260018301602052604081205480156118825760006117bd600183611ec1565b85549091506000906117d190600190611ec1565b905060008660000182815481106117ea576117ea611f86565b906000526020600020015490508087600001848154811061180d5761180d611f86565b600091825260209091200155611824836001611e87565b6000828152600189016020526040902055865487908061184657611846611f70565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610a97565b6000915050610a97565b60008181526001830160205260408120546118d357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a97565b506000610a97565b600082815260018401602052604081205480611940575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611290565b828561194d600184611ec1565b8154811061195d5761195d611f86565b9060005260206000209060020201600101819055506000915050611290565b606061128d848460008585843b6119d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610640565b600080866001600160a01b031685876040516119f19190611d06565b60006040518083038185875af1925050503d8060008114611a2e576040519150601f19603f3d011682016040523d82523d6000602084013e611a33565b606091505b5091509150611a43828286611a4e565b979650505050505050565b60608315611a5d575081611290565b825115611a6d5782518084602001fd5b8160405162461bcd60e51b81526004016106409190611dd1565b80356001600160a01b0381168114611a9e57600080fd5b919050565b600060208284031215611ab557600080fd5b610a9482611a87565b60008060408385031215611ad157600080fd5b611ada83611a87565b9150611ae860208401611a87565b90509250929050565b600080600060608486031215611b0657600080fd5b611b0f84611a87565b9250611b1d60208501611a87565b9150604084013590509250925092565b60008060008060808587031215611b4357600080fd5b611b4c85611a87565b9350611b5a60208601611a87565b925060408501359150606085013567ffffffffffffffff80821115611b7e57600080fd5b818701915087601f830112611b9257600080fd5b813581811115611ba457611ba4611f9c565b604051601f8201601f19908116603f01168101908382118183101715611bcc57611bcc611f9c565b816040528281528a6020848701011115611be557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611c1c57600080fd5b611c2583611a87565b91506020830135611c3581611fb2565b809150509250929050565b60008060408385031215611c5357600080fd5b611c5c83611a87565b946020939093013593505050565b600060208284031215611c7c57600080fd5b815161129081611fb2565b600060208284031215611c9957600080fd5b813561129081611fc3565b600060208284031215611cb657600080fd5b815161129081611fc3565b600060208284031215611cd357600080fd5b5035919050565b60008151808452611cf2816020860160208601611ed8565b601f01601f19169290920160200192915050565b60008251611d18818460208701611ed8565b9190910192915050565b60008351611d34818460208801611ed8565b835190830190611d48818360208801611ed8565b01949350505050565b60008451611d63818460208901611ed8565b845190830190611d77818360208901611ed8565b8451910190611d8a818360208801611ed8565b0195945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611dc790830184611cda565b9695505050505050565b602081526000610a946020830184611cda565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611e9a57611e9a611f5a565b500190565b600082611ebc57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ed357611ed3611f5a565b500390565b60005b83811015611ef3578181015183820152602001611edb565b83811115610db75750506000910152565b600181811c90821680611f1857607f821691505b60208210811415611f3957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f5357611f53611f5a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611fc057600080fd5b50565b6001600160e01b031981168114611fc057600080fdfe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea264697066735822122091f6c2a1212b28bf2453d1d5489c403918f4efab8a3b9bf3859115ecd245c7bd64736f6c63430008070033
Deployed Bytecode Sourcemap
115:1394:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15527:139:0;;;;;;;;;;-1:-1:-1;15527:139:0;;;;;:::i;:::-;-1:-1:-1;;;;;;15629:33:0;15612:4;15629:33;;;;;;;;;;;;;;15527:139;;;;6712:14:2;;6705:22;6687:41;;6675:2;6660:18;15527:139:0;;;;;;;;18899:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20438:201::-;;;;;;;;;;-1:-1:-1;20438:201:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5491:32:2;;;5473:51;;5461:2;5446:18;20438:201:0;5327:203:2;20084:351:0;;;;;;;;;;-1:-1:-1;20084:351:0;;;;;:::i;:::-;;:::i;:::-;;637:592:1;;;:::i;19818:106:0:-;;;;;;;;;;;;;:::i;:::-;;;16068:25:2;;;16056:2;16041:18;19818:106:0;15922:177:2;21069:232:0;;;;;;;;;;-1:-1:-1;21069:232:0;;;;;:::i;:::-;;:::i;19664:151::-;;;;;;;;;;-1:-1:-1;19664:151:0;;;;;:::i;:::-;;:::i;1232:125:1:-;;;;;;;;;;;;;:::i;21304:140:0:-;;;;;;;;;;-1:-1:-1;21304:140:0;;;;;:::i;:::-;;:::i;514:120:1:-;;;;;;;;;;;;;:::i;318:50::-;;;;;;;;;;;;;;;;19927:154:0;;;;;;;;;;-1:-1:-1;19927:154:0;;;;;:::i;:::-;;:::i;18730:166::-;;;;;;;;;;-1:-1:-1;18730:166:0;;;;;:::i;:::-;;:::i;19575:86::-;;;;;;;;;;;;;:::i;18524:203::-;;;;;;;;;;-1:-1:-1;18524:203:0;;;;;:::i;:::-;;:::i;249:32:1:-;;;;;;;;;;;;;;;;1360:115;;;;;;;;;;-1:-1:-1;1360:115:1;;;;;:::i;:::-;;:::i;1885:84:0:-;;;;;;;;;;-1:-1:-1;1959:6:0;;-1:-1:-1;;;;;1959:6:0;1885:84;;18991:93;;;;;;;;;;;;;:::i;171:41:1:-;;;;;;;;;;;;;;;;371:34;;;;;;;;;;;;;;;;20642:268:0;;;;;;;;;;-1:-1:-1;20642:268:0;;;;;:::i;:::-;;:::i;21447:267::-;;;;;;;;;;-1:-1:-1;21447:267:0;;;;;:::i;:::-;;:::i;19087:485::-;;;;;;;;;;-1:-1:-1;19087:485:0;;;;;:::i;:::-;;:::i;215:31:1:-;;;;;;;;;;;;;;;;20913:153:0;;;;;;;;;;-1:-1:-1;20913:153:0;;;;;:::i;:::-;-1:-1:-1;;;;;21027:25:0;;;21010:4;21027:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;20913:153;284:31:1;;;;;;;;;;-1:-1:-1;284:31:1;;;;-1:-1:-1;;;;;284:31:1;;;18899:89:0;18953:13;18979:5;18972:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18899:89;:::o;20438:201::-;20514:7;20535:16;20543:7;20535;:16::i;:::-;20527:73;;;;-1:-1:-1;;;20527:73:0;;12986:2:2;20527:73:0;;;12968:21:2;13025:2;13005:18;;;12998:30;13064:34;13044:18;;;13037:62;-1:-1:-1;;;13115:18:2;;;13108:42;13167:19;;20527:73:0;;;;;;;;;-1:-1:-1;20611:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;20611:24:0;;20438:201::o;20084:351::-;20158:13;20174:23;20189:7;20174:14;:23::i;:::-;20158:39;;20215:5;-1:-1:-1;;;;;20209:11:0;:2;-1:-1:-1;;;;;20209:11:0;;;20201:57;;;;-1:-1:-1;;;20201:57:0;;14586:2:2;20201:57:0;;;14568:21:2;14625:2;14605:18;;;14598:30;14664:34;14644:18;;;14637:62;-1:-1:-1;;;14715:18:2;;;14708:31;14756:19;;20201:57:0;14384:397:2;20201:57:0;209:10;-1:-1:-1;;;;;20270:21:0;;;;:69;;-1:-1:-1;20295:44:0;20319:5;209:10;20913:153;:::i;20295:44::-;20262:144;;;;-1:-1:-1;;;20262:144:0;;11386:2:2;20262:144:0;;;11368:21:2;11425:2;11405:18;;;11398:30;11464:34;11444:18;;;11437:62;11535:26;11515:18;;;11508:54;11579:19;;20262:144:0;11184:420:2;20262:144:0;20410:21;20419:2;20423:7;20410:8;:21::i;:::-;20154:281;20084:351;;:::o;637:592:1:-;2554:1:0;2668:7;;:19;;2660:63;;;;-1:-1:-1;;;2660:63:0;;15764:2:2;2660:63:0;;;15746:21:2;15803:2;15783:18;;;15776:30;15842:33;15822:18;;;15815:61;15893:18;;2660:63:0;15562:355:2;2660:63:0;2554:1;2727:7;:18;693:8:1::1;:6;:8::i;:::-;685:47;;;::::0;-1:-1:-1;;;685:47:1;;9452:2:2;685:47:1::1;::::0;::::1;9434:21:2::0;9491:2;9471:18;;;9464:30;9530:28;9510:18;;;9503:56;9576:18;;685:47:1::1;9250:350:2::0;685:47:1::1;753:9;744:5;;:18;;736:52;;;::::0;-1:-1:-1;;;736:52:1;;8326:2:2;736:52:1::1;::::0;::::1;8308:21:2::0;8365:2;8345:18;;;8338:30;-1:-1:-1;;;8384:18:2;;;8377:51;8445:18;;736:52:1::1;8124:345:2::0;736:52:1::1;792:13;818:5;;808:9;:15;;;;:::i;:::-;792:31;;851:9;;835:13;;:25;827:52;;;::::0;-1:-1:-1;;;827:52:1;;7983:2:2;827:52:1::1;::::0;::::1;7965:21:2::0;8022:2;8002:18;;;7995:30;-1:-1:-1;;;8041:18:2;;;8034:44;8095:18;;827:52:1::1;7781:338:2::0;827:52:1::1;883:17;913:13;;903:9;;:23;;;;:::i;:::-;883:43;;947:9;938:5;:18;;930:77;;;::::0;-1:-1:-1;;;930:77:1;;7568:2:2;930:77:1::1;::::0;::::1;7550:21:2::0;7607:2;7587:18;;;7580:30;7646:34;7626:18;;;7619:62;-1:-1:-1;;;7697:18:2;;;7690:44;7751:19;;930:77:1::1;7366:410:2::0;930:77:1::1;1016:9;1011:215;1031:5;1029:1;:7;1011:215;;;1048:36;1058:10;1070:13;;1048:9;:36::i;:::-;1119:1;1109:9;;:11;;;;:::i;:::-;1093:13;;:27;1089:110;;;1134:16;::::0;1173:19:::1;::::0;1128:65:::1;::::0;-1:-1:-1;;;1128:65:1;;1161:10:::1;1128:65;::::0;::::1;6442:51:2::0;6509:18;;;6502:34;;;;-1:-1:-1;;;;;1134:16:1;;::::1;::::0;1128:32:::1;::::0;6415:18:2;;1128:65:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1089:110;1220:1;1203:13;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;1038:3:1;;-1:-1:-1;1038:3:1::1;::::0;::::1;:::i;:::-;;;;1011:215;;;-1:-1:-1::0;;2514:1:0;2754:7;:22;-1:-1:-1;637:592:1:o;19818:106:0:-;19879:7;19899:21;:12;:19;:21::i;:::-;19892:28;;19818:106;:::o;21069:232::-;21170:41;209:10;21203:7;21170:18;:41::i;:::-;21162:103;;;;-1:-1:-1;;;21162:103:0;;;;;;;:::i;:::-;21269:28;21279:4;21285:2;21289:7;21269:9;:28::i;19664:151::-;-1:-1:-1;;;;;19781:20:0;;19761:7;19781:20;;;:13;:20;;;;;:30;;19805:5;19781:23;:30::i;:::-;19774:37;;19664:151;;;;;:::o;1232:125:1:-;1959:6:0;;-1:-1:-1;;;;;1959:6:0;209:10;2005:23;1997:68;;;;-1:-1:-1;;;1997:68:0;;13399:2:2;1997:68:0;;;13381:21:2;;;13418:18;;;13411:30;13477:34;13457:18;;;13450:62;13529:18;;1997:68:0;13197:356:2;1997:68:0;1316:37:1::1;::::0;1291:21:::1;::::0;1324:10:::1;::::0;1316:37;::::1;;;::::0;1291:21;;1273:15:::1;1316:37:::0;1273:15;1316:37;1291:21;1324:10;1316:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1269:88;1232:125::o:0;21304:140:0:-;21401:39;21418:4;21424:2;21428:7;21401:39;;;;;;;;;;;;:16;:39::i;514:120:1:-;553:4;586:6;;567:15;:25;563:52;;-1:-1:-1;606:4:1;;514:120::o;563:52::-;-1:-1:-1;625:5:1;;514:120::o;19927:154:0:-;20002:7;;20037:22;:12;20053:5;20037:15;:22::i;:::-;-1:-1:-1;20015:44:0;19927:154;-1:-1:-1;;;19927:154:0:o;18730:166::-;18802:7;18822:70;18839:7;18822:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;19575:86::-;19623:13;19649:8;19642:15;;;;;:::i;18524:203::-;18596:7;-1:-1:-1;;;;;18617:19:0;;18609:74;;;;-1:-1:-1;;;18609:74:0;;11811:2:2;18609:74:0;;;11793:21:2;11850:2;11830:18;;;11823:30;11889:34;11869:18;;;11862:62;-1:-1:-1;;;11940:18:2;;;11933:40;11990:19;;18609:74:0;11609:406:2;18609:74:0;-1:-1:-1;;;;;18694:20:0;;;;;;:13;:20;;;;;:29;;:27;:29::i;1360:115:1:-;1959:6:0;;-1:-1:-1;;;;;1959:6:0;209:10;2005:23;1997:68;;;;-1:-1:-1;;;1997:68:0;;13399:2:2;1997:68:0;;;13381:21:2;;;13418:18;;;13411:30;13477:34;13457:18;;;13450:62;13529:18;;1997:68:0;13197:356:2;1997:68:0;1437:16:1::1;:34:::0;;-1:-1:-1;;;;;;1437:34:1::1;-1:-1:-1::0;;;;;1437:34:1;;;::::1;::::0;;;::::1;::::0;;1360:115::o;18991:93:0:-;19047:13;19073:7;19066:14;;;;;:::i;20642:268::-;-1:-1:-1;;;;;20738:24:0;;209:10;20738:24;;20730:62;;;;-1:-1:-1;;;20730:62:0;;10212:2:2;20730:62:0;;;10194:21:2;10251:2;10231:18;;;10224:30;10290:27;10270:18;;;10263:55;10335:18;;20730:62:0;10010:349:2;20730:62:0;209:10;20796:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;20796:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;20796:53:0;;;;;;;;;;20858:48;;6687:41:2;;;20796:42:0;;209:10;20858:48;;6660:18:2;20858:48:0;;;;;;;20642:268;;:::o;21447:267::-;21572:41;209:10;21605:7;21572:18;:41::i;:::-;21564:103;;;;-1:-1:-1;;;21564:103:0;;;;;;;:::i;:::-;21671:39;21685:4;21691:2;21695:7;21704:5;21671:13;:39::i;:::-;21447:267;;;;:::o;19087:485::-;19160:13;19187:16;19195:7;19187;:16::i;:::-;19179:76;;;;-1:-1:-1;;;19179:76:0;;14170:2:2;19179:76:0;;;14152:21:2;14209:2;14189:18;;;14182:30;14248:34;14228:18;;;14221:62;-1:-1:-1;;;14299:18:2;;;14292:45;14354:19;;19179:76:0;13968:411:2;19179:76:0;19259:23;19285:19;;;:10;:19;;;;;19259:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19308:18;19329:9;:7;:9::i;:::-;19308:30;;19352:4;19346:18;19368:1;19346:23;19342:55;;;-1:-1:-1;19383:9:0;19087:485;-1:-1:-1;;19087:485:0:o;19342:55::-;19404:23;;:27;19400:91;;19469:4;19475:9;19452:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19438:48;;;;19087:485;;;:::o;19400:91::-;19525:4;19531:18;:7;:16;:18::i;:::-;19551:15;;;;;;;;;;;;;-1:-1:-1;;;19551:15:0;;;19508:59;;;;;;;;;;:::i;21974:116::-;22039:4;22056:30;:12;22078:7;22056:21;:30::i;24749:156::-;24817:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;24817:29:0;-1:-1:-1;;;;;24817:29:0;;;;;;;;:24;;24864:23;24817:24;24864:14;:23::i;:::-;-1:-1:-1;;;;;24855:46:0;;;;;;;;;;;24749:156;;:::o;22426:99::-;22495:26;22505:2;22509:7;22495:26;;;;;;;;;;;;:9;:26::i;6070:112::-;6139:7;6159:19;6167:3;4606:19;;4530:99;22093:330;22186:4;22204:16;22212:7;22204;:16::i;:::-;22196:73;;;;-1:-1:-1;;;22196:73:0;;10973:2:2;22196:73:0;;;10955:21:2;11012:2;10992:18;;;10985:30;11051:34;11031:18;;;11024:62;-1:-1:-1;;;11102:18:2;;;11095:42;11154:19;;22196:73:0;10771:408:2;22196:73:0;22273:13;22289:23;22304:7;22289:14;:23::i;:::-;22273:39;;22335:5;-1:-1:-1;;;;;22324:16:0;:7;-1:-1:-1;;;;;22324:16:0;;:51;;;;22368:7;-1:-1:-1;;;;;22344:31:0;:20;22356:7;22344:11;:20::i;:::-;-1:-1:-1;;;;;22344:31:0;;22324:51;:94;;;-1:-1:-1;;;;;;21027:25:0;;;21010:4;21027:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;22379:39;22316:103;22093:330;-1:-1:-1;;;;22093:330:0:o;23500:459::-;23618:4;-1:-1:-1;;;;;23591:31:0;:23;23606:7;23591:14;:23::i;:::-;-1:-1:-1;;;;;23591:31:0;;23583:85;;;;-1:-1:-1;;;23583:85:0;;13760:2:2;23583:85:0;;;13742:21:2;13799:2;13779:18;;;13772:30;13838:34;13818:18;;;13811:62;-1:-1:-1;;;13889:18:2;;;13882:39;13938:19;;23583:85:0;13558:405:2;23583:85:0;-1:-1:-1;;;;;23680:16:0;;23672:65;;;;-1:-1:-1;;;23672:65:0;;9807:2:2;23672:65:0;;;9789:21:2;9846:2;9826:18;;;9819:30;9885:34;9865:18;;;9858:62;-1:-1:-1;;;9936:18:2;;;9929:34;9980:19;;23672:65:0;9605:400:2;23672:65:0;23784:29;23801:1;23805:7;23784:8;:29::i;:::-;-1:-1:-1;;;;;23817:19:0;;;;;;:13;:19;;;;;:35;;23844:7;23817:26;:35::i;:::-;-1:-1:-1;;;;;;23856:17:0;;;;;;:13;:17;;;;;:30;;23878:7;23856:21;:30::i;:::-;-1:-1:-1;23890:29:0;:12;23907:7;23916:2;23890:16;:29::i;:::-;;23947:7;23943:2;-1:-1:-1;;;;;23928:27:0;23937:4;-1:-1:-1;;;;;23928:27:0;;;;;;;;;;;23500:459;;;:::o;10150:126::-;10221:7;10249:22;10253:3;10265:5;10249:3;:22::i;6185:218::-;6265:7;;;;6318:22;6322:3;6334:5;6318:3;:22::i;:::-;6287:53;;;;-1:-1:-1;6185:218:0;-1:-1:-1;;;;;6185:218:0:o;6796:202::-;6903:7;6947:44;6952:3;6972;6978:12;6947:4;:44::i;:::-;6939:53;-1:-1:-1;6796:202:0;;;;;;:::o;21717:254::-;21824:28;21834:4;21840:2;21844:7;21824:9;:28::i;:::-;21864:48;21887:4;21893:2;21897:7;21906:5;21864:22;:48::i;:::-;21856:111;;;;-1:-1:-1;;;21856:111:0;;;;;;;:::i;2958:452::-;3014:13;3052:10;3048:38;;-1:-1:-1;;3070:10:0;;;;;;;;;;;;-1:-1:-1;;;3070:10:0;;;;;2958:452::o;3048:38::-;3105:5;3090:12;3134:54;3141:9;;3134:54;;3158:8;;3180:2;3172:10;;;;3134:54;;;3192:19;3224:6;3214:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3214:17:0;-1:-1:-1;3274:5:0;;-1:-1:-1;3192:39:0;-1:-1:-1;;;3252:10:0;;3284:93;3291:9;;3284:93;;3351:2;3344:4;:9;3339:2;:14;3326:29;;3308:6;3315:7;;;;;;;3308:15;;;;;;;;:::i;:::-;;;;:47;-1:-1:-1;;;;;3308:47:0;;;;;;;;-1:-1:-1;3369:2:0;3361:10;;;;3284:93;;;-1:-1:-1;3395:6:0;2958:452;-1:-1:-1;;;;2958:452:0:o;5927:140::-;6011:4;4501:17;;;:12;;;:17;;;;;;:22;;6028:35;4413:114;22528:232;22617:18;22623:2;22627:7;22617:5;:18::i;:::-;22647:54;22678:1;22682:2;22686:7;22695:5;22647:22;:54::i;:::-;22639:117;;;;-1:-1:-1;;;22639:117:0;;;;;;;:::i;9777:126::-;9847:4;9864:35;9872:3;9892:5;9864:7;:35::i;9654:120::-;9721:4;9738:32;9743:3;9763:5;9738:4;:32::i;5616:174::-;5705:4;5722:64;5727:3;5747;-1:-1:-1;;;;;5761:23:0;;5722:4;:64::i;8035:186::-;8123:18;;8102:7;;8123:26;-1:-1:-1;8115:73:0;;;;-1:-1:-1;;;8115:73:0;;7165:2:2;8115:73:0;;;7147:21:2;7204:2;7184:18;;;7177:30;7243:34;7223:18;;;7216:62;-1:-1:-1;;;7294:18:2;;;7287:32;7336:19;;8115:73:0;6963:398:2;8115:73:0;8199:3;:11;;8211:5;8199:18;;;;;;;;:::i;:::-;;;;;;;;;8192:25;;8035:186;;;;:::o;4632:253::-;4729:19;;4699:7;;;;4729:27;-1:-1:-1;4721:74:0;;;;-1:-1:-1;;;4721:74:0;;12222:2:2;4721:74:0;;;12204:21:2;12261:2;12241:18;;;12234:30;12300:34;12280:18;;;12273:62;-1:-1:-1;;;12351:18:2;;;12344:32;12393:19;;4721:74:0;12020:398:2;4721:74:0;4800:22;4825:3;:12;;4838:5;4825:19;;;;;;;;:::i;:::-;;;;;;;;;;;4800:44;;4856:5;:10;;;4868:5;:12;;;4848:33;;;;;4632:253;;;;;:::o;5337:231::-;5431:7;5463:17;;;:12;;;:17;;;;;;5507:12;5492:13;5484:36;;;;-1:-1:-1;;;5484:36:0;;;;;;;;:::i;:::-;-1:-1:-1;5531:3:0;5544:12;5555:1;5544:8;:12;:::i;:::-;5531:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;5524:40;;;5337:231;;;;;:::o;24254:492::-;24367:4;-1:-1:-1;;;;;24383:13:0;;10405:20;24378:43;;-1:-1:-1;24412:4:0;24405:11;;24378:43;24424:23;24450:201;-1:-1:-1;;;209:10:0;24563:4;24573:7;24586:5;24466:130;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;24466:130:0;;;;;;;-1:-1:-1;;;;;24466:130:0;;;;;;;;;;;24450:201;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24450:15:0;;;:201;:15;:201::i;:::-;24424:227;;24655:13;24682:10;24671:32;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;24715:26:0;-1:-1:-1;;;24715:26:0;;-1:-1:-1;;;24254:492:0;;;;;;:::o;22763:350::-;-1:-1:-1;;;;;22836:16:0;;22828:61;;;;-1:-1:-1;;;22828:61:0;;12625:2:2;22828:61:0;;;12607:21:2;;;12644:18;;;12637:30;12703:34;12683:18;;;12676:62;12755:18;;22828:61:0;12423:356:2;22828:61:0;22902:16;22910:7;22902;:16::i;:::-;22901:17;22893:58;;;;-1:-1:-1;;;22893:58:0;;9095:2:2;22893:58:0;;;9077:21:2;9134:2;9114:18;;;9107:30;9173;9153:18;;;9146:58;9221:18;;22893:58:0;8893:352:2;22893:58:0;-1:-1:-1;;;;;23004:17:0;;;;;;:13;:17;;;;;:30;;23026:7;23004:21;:30::i;:::-;-1:-1:-1;23038:29:0;:12;23055:7;23064:2;23038:16;:29::i;:::-;-1:-1:-1;23076:33:0;;23101:7;;-1:-1:-1;;;;;23076:33:0;;;23093:1;;23076:33;;23093:1;;23076:33;22763:350;;:::o;7336:474::-;7402:4;7433:19;;;:12;;;:19;;;;;;7460:15;;7456:351;;7482:21;7506:14;7519:1;7506:10;:14;:::i;:::-;7545:18;;7482:38;;-1:-1:-1;7525:17:0;;7545:22;;7566:1;;7545:22;:::i;:::-;7525:42;;7572:17;7592:3;:11;;7604:9;7592:22;;;;;;;;:::i;:::-;;;;;;;;;7572:42;;7648:9;7619:3;:11;;7631:13;7619:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;7688:17;:13;7704:1;7688:17;:::i;:::-;7662:23;;;;:12;;;:23;;;;;:43;7710:17;;7662:3;;7710:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7739:3;:12;;:19;7752:5;7739:19;;;;;;;;;;;7732:26;;;7770:4;7763:11;;;;;;;;7456:351;7797:5;7790:12;;;;;7107:226;7170:4;4501:17;;;:12;;;:17;;;;;;7180:150;;-1:-1:-1;7213:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;7263:18;;7241:19;;;:12;;;:19;;;;;;:40;;;;7286:11;;7180:150;-1:-1:-1;7320:5:0;7313:12;;3578:349;3654:4;3683:17;;;:12;;;:17;;;;;;3708:13;3704:220;;-1:-1:-1;;3746:38:0;;;;;;;;;;;;;;;;;;3728:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;3810:19;;3790:17;;;:12;;;:17;;;;;;;:39;3834:11;;3704:220;3897:5;3861:3;3874:12;3885:1;3874:8;:12;:::i;:::-;3861:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;:41;;;;3914:5;3907:12;;;;;10914:184;11017:12;11042:52;11064:6;11072:4;11078:1;11081:12;11017;10405:20;;11549:60;;;;-1:-1:-1;;;11549:60:0;;15406:2:2;11549:60:0;;;15388:21:2;15445:2;15425:18;;;15418:30;15484:31;15464:18;;;15457:59;15533:18;;11549:60:0;15204:353:2;11549:60:0;11614:12;11628:23;11655:6;-1:-1:-1;;;;;11655:11:0;11675:5;11683:4;11655:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:75;;;;11699:52;11717:7;11726:10;11738:12;11699:17;:52::i;:::-;11692:59;11319:436;-1:-1:-1;;;;;;;11319:436:0:o;12818:379::-;12933:12;12955:7;12951:243;;;-1:-1:-1;12976:10:0;12969:17;;12951:243;13006:17;;:21;13002:188;;13080:10;13074:17;13125:15;13112:10;13108:2;13104:19;13097:44;13002:188;13171:12;13164:20;;-1:-1:-1;;;13164:20:0;;;;;;;;:::i;14:173:2:-;82:20;;-1:-1:-1;;;;;131:31:2;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:1138::-;1076:6;1084;1092;1100;1153:3;1141:9;1132:7;1128:23;1124:33;1121:53;;;1170:1;1167;1160:12;1121:53;1193:29;1212:9;1193:29;:::i;:::-;1183:39;;1241:38;1275:2;1264:9;1260:18;1241:38;:::i;:::-;1231:48;;1326:2;1315:9;1311:18;1298:32;1288:42;;1381:2;1370:9;1366:18;1353:32;1404:18;1445:2;1437:6;1434:14;1431:34;;;1461:1;1458;1451:12;1431:34;1499:6;1488:9;1484:22;1474:32;;1544:7;1537:4;1533:2;1529:13;1525:27;1515:55;;1566:1;1563;1556:12;1515:55;1602:2;1589:16;1624:2;1620;1617:10;1614:36;;;1630:18;;:::i;:::-;1705:2;1699:9;1673:2;1759:13;;-1:-1:-1;;1755:22:2;;;1779:2;1751:31;1747:40;1735:53;;;1803:18;;;1823:22;;;1800:46;1797:72;;;1849:18;;:::i;:::-;1889:10;1885:2;1878:22;1924:2;1916:6;1909:18;1964:7;1959:2;1954;1950;1946:11;1942:20;1939:33;1936:53;;;1985:1;1982;1975:12;1936:53;2041:2;2036;2032;2028:11;2023:2;2015:6;2011:15;1998:46;2086:1;2081:2;2076;2068:6;2064:15;2060:24;2053:35;2107:6;2097:16;;;;;;;981:1138;;;;;;;:::o;2124:315::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:52;;;2266:1;2263;2256:12;2218:52;2289:29;2308:9;2289:29;:::i;:::-;2279:39;;2368:2;2357:9;2353:18;2340:32;2381:28;2403:5;2381:28;:::i;:::-;2428:5;2418:15;;;2124:315;;;;;:::o;2444:254::-;2512:6;2520;2573:2;2561:9;2552:7;2548:23;2544:32;2541:52;;;2589:1;2586;2579:12;2541:52;2612:29;2631:9;2612:29;:::i;:::-;2602:39;2688:2;2673:18;;;;2660:32;;-1:-1:-1;;;2444:254:2:o;2703:245::-;2770:6;2823:2;2811:9;2802:7;2798:23;2794:32;2791:52;;;2839:1;2836;2829:12;2791:52;2871:9;2865:16;2890:28;2912:5;2890:28;:::i;2953:245::-;3011:6;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3119:9;3106:23;3138:30;3162:5;3138:30;:::i;3203:249::-;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;3373:9;3367:16;3392:30;3416:5;3392:30;:::i;3457:180::-;3516:6;3569:2;3557:9;3548:7;3544:23;3540:32;3537:52;;;3585:1;3582;3575:12;3537:52;-1:-1:-1;3608:23:2;;3457:180;-1:-1:-1;3457:180:2:o;3642:257::-;3683:3;3721:5;3715:12;3748:6;3743:3;3736:19;3764:63;3820:6;3813:4;3808:3;3804:14;3797:4;3790:5;3786:16;3764:63;:::i;:::-;3881:2;3860:15;-1:-1:-1;;3856:29:2;3847:39;;;;3888:4;3843:50;;3642:257;-1:-1:-1;;3642:257:2:o;3904:274::-;4033:3;4071:6;4065:13;4087:53;4133:6;4128:3;4121:4;4113:6;4109:17;4087:53;:::i;:::-;4156:16;;;;;3904:274;-1:-1:-1;;3904:274:2:o;4183:470::-;4362:3;4400:6;4394:13;4416:53;4462:6;4457:3;4450:4;4442:6;4438:17;4416:53;:::i;:::-;4532:13;;4491:16;;;;4554:57;4532:13;4491:16;4588:4;4576:17;;4554:57;:::i;:::-;4627:20;;4183:470;-1:-1:-1;;;;4183:470:2:o;4658:664::-;4885:3;4923:6;4917:13;4939:53;4985:6;4980:3;4973:4;4965:6;4961:17;4939:53;:::i;:::-;5055:13;;5014:16;;;;5077:57;5055:13;5014:16;5111:4;5099:17;;5077:57;:::i;:::-;5201:13;;5156:20;;;5223:57;5201:13;5156:20;5257:4;5245:17;;5223:57;:::i;:::-;5296:20;;4658:664;-1:-1:-1;;;;;4658:664:2:o;5759:504::-;-1:-1:-1;;;;;6044:15:2;;;6026:34;;6096:15;;6091:2;6076:18;;6069:43;6143:2;6128:18;;6121:34;;;6191:3;6186:2;6171:18;;6164:31;;;5969:4;;6212:45;;6237:19;;6229:6;6212:45;:::i;:::-;6204:53;5759:504;-1:-1:-1;;;;;;5759:504:2:o;6739:219::-;6888:2;6877:9;6870:21;6851:4;6908:44;6948:2;6937:9;6933:18;6925:6;6908:44;:::i;8474:414::-;8676:2;8658:21;;;8715:2;8695:18;;;8688:30;8754:34;8749:2;8734:18;;8727:62;-1:-1:-1;;;8820:2:2;8805:18;;8798:48;8878:3;8863:19;;8474:414::o;14786:413::-;14988:2;14970:21;;;15027:2;15007:18;;;15000:30;15066:34;15061:2;15046:18;;15039:62;-1:-1:-1;;;15132:2:2;15117:18;;15110:47;15189:3;15174:19;;14786:413::o;16104:128::-;16144:3;16175:1;16171:6;16168:1;16165:13;16162:39;;;16181:18;;:::i;:::-;-1:-1:-1;16217:9:2;;16104:128::o;16237:217::-;16277:1;16303;16293:132;;16347:10;16342:3;16338:20;16335:1;16328:31;16382:4;16379:1;16372:15;16410:4;16407:1;16400:15;16293:132;-1:-1:-1;16439:9:2;;16237:217::o;16459:125::-;16499:4;16527:1;16524;16521:8;16518:34;;;16532:18;;:::i;:::-;-1:-1:-1;16569:9:2;;16459:125::o;16589:258::-;16661:1;16671:113;16685:6;16682:1;16679:13;16671:113;;;16761:11;;;16755:18;16742:11;;;16735:39;16707:2;16700:10;16671:113;;;16802:6;16799:1;16796:13;16793:48;;;-1:-1:-1;;16837:1:2;16819:16;;16812:27;16589:258::o;16852:380::-;16931:1;16927:12;;;;16974;;;16995:61;;17049:4;17041:6;17037:17;17027:27;;16995:61;17102:2;17094:6;17091:14;17071:18;17068:38;17065:161;;;17148:10;17143:3;17139:20;17136:1;17129:31;17183:4;17180:1;17173:15;17211:4;17208:1;17201:15;17065:161;;16852:380;;;:::o;17237:135::-;17276:3;-1:-1:-1;;17297:17:2;;17294:43;;;17317:18;;:::i;:::-;-1:-1:-1;17364:1:2;17353:13;;17237:135::o;17377:127::-;17438:10;17433:3;17429:20;17426:1;17419:31;17469:4;17466:1;17459:15;17493:4;17490:1;17483:15;17641:127;17702:10;17697:3;17693:20;17690:1;17683:31;17733:4;17730:1;17723:15;17757:4;17754:1;17747:15;17773:127;17834:10;17829:3;17825:20;17822:1;17815:31;17865:4;17862:1;17855:15;17889:4;17886:1;17879:15;17905:127;17966:10;17961:3;17957:20;17954:1;17947:31;17997:4;17994:1;17987:15;18021:4;18018:1;18011:15;18037:118;18123:5;18116:13;18109:21;18102:5;18099:32;18089:60;;18145:1;18142;18135:12;18089:60;18037:118;:::o;18160:131::-;-1:-1:-1;;;;;;18234:32:2;;18224:43;;18214:71;;18281:1;18278;18271:12
Swarm Source
ipfs://91f6c2a1212b28bf2453d1d5489c403918f4efab8a3b9bf3859115ecd245c7bd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.