Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 14889593 | 986 days ago | IN | 0 ETH | 0.00123727 | ||||
Set Approval For... | 14330891 | 1074 days ago | IN | 0 ETH | 0.00102746 | ||||
Safe Transfer Fr... | 13655134 | 1179 days ago | IN | 0 ETH | 0.00368972 | ||||
Safe Transfer Fr... | 13655127 | 1179 days ago | IN | 0 ETH | 0.00391335 | ||||
Set Approval For... | 13654608 | 1179 days ago | IN | 0 ETH | 0.00498697 | ||||
Mint | 13528418 | 1199 days ago | IN | 0 ETH | 0.03927512 | ||||
Set Approval For... | 13528409 | 1199 days ago | IN | 0 ETH | 0.00509903 | ||||
Set Approval For... | 13488383 | 1205 days ago | IN | 0 ETH | 0.00778294 | ||||
Set Approval For... | 13381090 | 1222 days ago | IN | 0 ETH | 0.00279387 | ||||
Mint | 13366189 | 1225 days ago | IN | 0 ETH | 0.03147607 | ||||
Mint | 13366130 | 1225 days ago | IN | 0 ETH | 0.03925956 | ||||
Burn | 13366081 | 1225 days ago | IN | 0 ETH | 0.00405444 | ||||
Burn | 13366073 | 1225 days ago | IN | 0 ETH | 0.00309169 | ||||
Burn | 13336898 | 1229 days ago | IN | 0 ETH | 0.00223767 | ||||
Burn | 13336889 | 1229 days ago | IN | 0 ETH | 0.0028595 | ||||
Burn | 13336883 | 1229 days ago | IN | 0 ETH | 0.00278005 | ||||
Mint | 13336635 | 1229 days ago | IN | 0 ETH | 0.01900627 | ||||
Mint | 13336325 | 1229 days ago | IN | 0 ETH | 0.03197679 | ||||
Mint | 13335743 | 1229 days ago | IN | 0 ETH | 0.03062177 | ||||
Set Approval For... | 13335713 | 1229 days ago | IN | 0 ETH | 0.00458938 | ||||
Set Approval For... | 13227212 | 1246 days ago | IN | 0 ETH | 0.00201032 | ||||
Mint | 13166751 | 1255 days ago | IN | 0 ETH | 0.07820088 | ||||
Mint | 13166692 | 1255 days ago | IN | 0 ETH | 0.11419995 | ||||
Set Approval For... | 13166632 | 1255 days ago | IN | 0 ETH | 0.0073891 | ||||
Set Approval For... | 13130953 | 1261 days ago | IN | 0 ETH | 0.00368299 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MintySwap
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-27 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.4; 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); 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) { // Equivalent to !contains(map, key) 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) { // Equivalent to contains(map, key) 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; // All indexes are 1-based 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); // Equivalent to contains(map, key) return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based } function _get(Map storage map, bytes32 key) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, "EnumerableMap: nonexistent key"); // Equivalent to contains(map, key) return map._entries[keyIndex - 1]._value; // All indexes are 1-based } function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key) return map._entries[keyIndex - 1]._value; // All indexes are 1-based } 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) { // Equivalent to contains(set, value) uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based 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)); } } interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC1155 is IERC165 { event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values); event ApprovalForAll(address indexed account, address indexed operator, bool approved); event URI(string value, uint256 indexed id); event tokenBaseURI(string value); event OwnershipTransfer(address indexed owner, address indexed newOwner); function name() external view returns (string memory); function symbol() external view returns (string memory); function balanceOf(address account, uint256 id) external view returns (uint256); function royaltyFee(uint256 tokenId) external view returns(uint256); function getCreator(uint256 tokenId) external view returns(address); function tokenURI(uint256 tokenId) external view returns (string memory); function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); function setApprovalForAll(address operator, bool approved) external; function isApprovedForAll(address account, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external; } interface IERC1155MetadataURI is IERC1155 { } interface IERC1155Receiver is IERC165 { function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns(bytes4); function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns(bytes4); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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 override returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal virtual { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Multiplies two numbers, throws on overflow. */ 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; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } /** * @dev Integer modulo of two numbers, truncating the remainder. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using SafeMath for uint256; using Address for address; using Strings for uint256; using EnumerableMap for EnumerableMap.UintToAddressMap; // Mapping from token ID to account balances mapping (uint256 => address) private creators; mapping (uint256 => uint256) private _royaltyFee; mapping (uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping (address => mapping(address => bool)) private _operatorApprovals; string public tokenURIPrefix; // Optional mapping for token URIs mapping(uint256 => string) private _tokenURIs; EnumerableMap.UintToAddressMap private _tokenOwners; string private _name; string private _symbol; bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26; bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _registerInterface(_INTERFACE_ID_ERC1155); _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI); } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Internal function to set the token URI for a given token. * Reverts if the token ID does not exist. * @param tokenId uint256 ID of the token to set its URI * @param uri string URI to assign */ function _setTokenURI(uint256 tokenId, string memory uri) internal { _tokenURIs[tokenId] = uri; } /** @notice Get the royalty associated with tokenID. @param tokenId ID of the Token. @return royaltyFee of given ID. */ function royaltyFee(uint256 tokenId) public view override returns(uint256) { return _royaltyFee[tokenId]; } /** @notice Get the creator of given tokenID. @param tokenId ID of the Token. @return creator of given ID. */ function getCreator(uint256 tokenId) public view virtual override returns(address) { return creators[tokenId]; } /** * @dev Internal function to set the token URI for all the tokens. * @param _tokenURIPrefix string memory _tokenURIPrefix of the tokens. */ function _setTokenURIPrefix(string memory _tokenURIPrefix) internal { tokenURIPrefix = _tokenURIPrefix; emit tokenBaseURI(_tokenURIPrefix); } /** * @dev Returns an URI for a given token ID. * Throws if the token ID does not exist. May return an empty string. * @param tokenId uint256 ID of the token to query */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC1155Metadata: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = tokenURIPrefix; 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())); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _tokenOwners.contains(tokenId); } /** @notice Get the balance of an account's Tokens. @param account The address of the token holder @param tokenId ID of the Token @return The owner's balance of the Token type requested */ function balanceOf(address account, uint256 tokenId) public view override returns (uint256) { require(_exists(tokenId), "ERC1155Metadata: balance query for nonexistent token"); require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[tokenId][account]; } /** @notice Get the balance of multiple account/token pairs @param accounts The addresses of the token holders @param ids ID of the Tokens @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch( address[] memory accounts, uint256[] memory ids ) public view override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { require(accounts[i] != address(0), "ERC1155: batch balance query for the zero address"); batchBalances[i] = _balances[ids[i]][accounts[i]]; } return batchBalances; } /** @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. @dev MUST emit the ApprovalForAll event on success. @param operator Address to add to the set of authorized operators @param approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address operator, bool approved) public virtual override { require(_msgSender() != operator, "ERC1155: setting approval status for self"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** @notice Queries the approval status of an operator for a given owner. @param account The owner of the Tokens @param operator Address of authorized operator @return True if the operator is approved, false if not */ function isApprovedForAll(address account, address operator) public view override returns (bool) { return _operatorApprovals[account][operator]; } /** @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if balance of holder for token `_id` is lower than the `_value` sent. MUST revert on any other error. MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param from Source address @param to Target address @param tokenId ID of the token type @param amount Transfer amount @param data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` */ function safeTransferFrom( address from, address to, uint256 tokenId, uint256 amount, bytes memory data ) public virtual override { require(to != address(0), "ERC1155: transfer to the zero address"); require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(tokenId), _asSingletonArray(amount), data); _balances[tokenId][from] = _balances[tokenId][from].sub(amount, "ERC1155: insufficient balance for transfer"); _balances[tokenId][to] = _balances[tokenId][to].add(amount); emit TransferSingle(operator, from, to, tokenId, amount); _doSafeTransferAcceptanceCheck(operator, from, to, tokenId, amount, data); } /** @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if length of `_ids` is not the same as length of `_values`. MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. MUST revert on any other error. MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param from Source address @param to Target address @param tokenIds IDs of each token type (order and length must match _values array) @param amounts Transfer amounts per token type (order and length must match _ids array) @param data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` */ function safeBatchTransferFrom( address from, address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data ) public virtual override { require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, tokenIds, amounts, data); for (uint256 i = 0; i < tokenIds.length; ++i) { uint256 tokenId = tokenIds[i]; uint256 amount = amounts[i]; _balances[tokenId][from] = _balances[tokenId][from].sub( amount, "ERC1155: insufficient balance for transfer" ); _balances[tokenId][to] = _balances[tokenId][to].add(amount); } emit TransferBatch(operator, from, to, tokenIds, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, tokenIds, amounts, data); } /** * @dev Internal function to mint a new token. * Reverts if the given token ID already exists. * @param tokenId uint256 ID of the token to be minted * @param _supply uint256 supply of the token to be minted * @param _uri string memory URI of the token to be minted * @param _fee uint256 royalty of the token to be minted */ function _mint(uint256 tokenId, uint256 _supply, string memory _uri, uint256 _fee) internal { require(!_exists(tokenId), "ERC1155: token already minted"); require(_supply != 0, "Supply should be positive"); require(bytes(_uri).length > 0, "uri should be set"); creators[tokenId] = msg.sender; _tokenOwners.set(tokenId, msg.sender); _royaltyFee[tokenId] = _fee; _balances[tokenId][msg.sender] = _supply; _setTokenURI(tokenId, _uri); emit TransferSingle(msg.sender, address(0x0), msg.sender, tokenId, _supply); emit URI(_uri, tokenId); } /** * @dev version of {_mint}. * * Requirements: * * - `tokenIds` and `amounts` must have the same length. */ function _mintBatch(address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, tokenIds, amounts, data); for (uint i = 0; i < tokenIds.length; i++) { _balances[tokenIds[i]][to] = amounts[i].add(_balances[tokenIds[i]][to]); } emit TransferBatch(operator, address(0), to, tokenIds, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, tokenIds, amounts, data); } /** * @dev Internal function to burn a specific token. * Reverts if the token does not exist. * Deprecated, use {ERC721-_burn} instead. * @param account owner of the token to burn * @param tokenId uint256 ID of the token being burned * @param amount uint256 amount of supply being burned */ function _burn(address account, uint256 tokenId, uint256 amount) internal virtual { require(_exists(tokenId), "ERC1155Metadata: burn query for nonexistent token"); require(account != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(tokenId), _asSingletonArray(amount), ""); _balances[tokenId][account] = _balances[tokenId][account].sub( amount, "ERC_holderTokens1155: burn amount exceeds balance" ); emit TransferSingle(operator, account, address(0), tokenId, amount); } /** * @dev version of {_burn}. * Requirements: * - `ids` and `amounts` must have the same length. */ function _burnBatch(address account, uint256[] memory tokenIds, uint256[] memory amounts) internal virtual { require(account != address(0), "ERC1155: burn from the zero address"); require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, account, address(0), tokenIds, amounts, ""); for (uint i = 0; i < tokenIds.length; i++) { _balances[tokenIds[i]][account] = _balances[tokenIds[i]][account].sub( amounts[i], "ERC1155: burn amount exceeds balance" ); } emit TransferBatch(operator, account, address(0), tokenIds, amounts); } function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data ) internal virtual { } function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 tokenId, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, tokenId, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver(to).onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, tokenIds, amounts, data) returns (bytes4 response) { if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } contract MintySwap is ERC1155 { uint256 newItemId = 1; address public owner; struct Sign { uint8 v; bytes32 r; bytes32 s; } constructor (string memory name, string memory symbol, string memory tokenURIPrefix) ERC1155 (name, symbol) { owner = msg.sender; _setTokenURIPrefix(tokenURIPrefix); } modifier onlyOwner() { require(owner == msg.sender, "Ownable: caller is not the owner"); _; } /** @dev change the Ownership from current owner to newOwner address @param newOwner : newOwner address */ function ownerTransfership(address newOwner) public onlyOwner returns(bool){ require(newOwner != address(0), "Ownable: new owner is the zero address"); owner = newOwner; emit OwnershipTransfer(owner, newOwner); return true; } /** @dev verify the tokenURI that should be verified by owner of the contract. *requirements: signer must be owner of the contract @param tokenURI string memory URI of token to be minted. @param sign struct combination of uint8, bytes32, bytes 32 are v, r, s. note : sign value must be in the order of v, r, s. */ function verifySign(string memory tokenURI, Sign memory sign) internal view { bytes32 hash = keccak256(abi.encodePacked(this,tokenURI)); require(owner == ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)), sign.v, sign.r, sign.s), "Owner sign verification failed"); } function mint(string memory uri, uint256 supply, uint256 fee, Sign memory sign) public { verifySign(uri, sign); _mint(newItemId, supply, uri,fee); newItemId = newItemId+1; } function setBaseURI(string memory _baseURI) public onlyOwner{ _setTokenURIPrefix(_baseURI); } function burn(uint256 tokenId, uint256 supply) public { _burn(msg.sender, tokenId, supply); } function burnBatch(address account, uint256[] memory tokenIds, uint256[] memory amounts) public { _burnBatch(account, tokenIds, amounts); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"tokenBaseURI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct MintySwap.Sign","name":"sign","type":"tuple"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"ownerTransfership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"royaltyFee","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":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001600b553480156200001657600080fd5b5060405162004fda38038062004fda83398181016040528101906200003c919062000364565b8282620000566301ffc9a760e01b6200011560201b60201c565b81600990805190602001906200006e92919062000242565b5080600a90805190602001906200008792919062000242565b50620000a063d9b67a2660e01b6200011560201b60201c565b620000b8630e89341c60e01b6200011560201b60201c565b505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200010c81620001ed60201b60201c565b50505062000668565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001789062000491565b60405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b80600590805190602001906200020592919062000242565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc306816040516200023791906200046d565b60405180910390a150565b828054620002509062000564565b90600052602060002090601f016020900481019282620002745760008555620002c0565b82601f106200028f57805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002bf578251825591602001919060010190620002a2565b5b509050620002cf9190620002d3565b5090565b5b80821115620002ee576000816000905550600101620002d4565b5090565b6000620003096200030384620004dc565b620004b3565b9050828152602081018484840111156200032257600080fd5b6200032f8482856200052e565b509392505050565b600082601f8301126200034957600080fd5b81516200035b848260208601620002f2565b91505092915050565b6000806000606084860312156200037a57600080fd5b600084015167ffffffffffffffff8111156200039557600080fd5b620003a38682870162000337565b935050602084015167ffffffffffffffff811115620003c157600080fd5b620003cf8682870162000337565b925050604084015167ffffffffffffffff811115620003ed57600080fd5b620003fb8682870162000337565b9150509250925092565b6000620004128262000512565b6200041e81856200051d565b9350620004308185602086016200052e565b6200043b816200062e565b840191505092915050565b600062000455601c836200051d565b915062000462826200063f565b602082019050919050565b6000602082019050818103600083015262000489818462000405565b905092915050565b60006020820190508181036000830152620004ac8162000446565b9050919050565b6000620004bf620004d2565b9050620004cd82826200059a565b919050565b6000604051905090565b600067ffffffffffffffff821115620004fa57620004f9620005ff565b5b62000505826200062e565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200054e57808201518184015260208101905062000531565b838111156200055e576000848401525b50505050565b600060028204905060018216806200057d57607f821691505b60208210811415620005945762000593620005d0565b5b50919050565b620005a5826200062e565b810181811067ffffffffffffffff82111715620005c757620005c6620005ff565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433136353a20696e76616c696420696e7465726661636520696400000000600082015250565b61496280620006786000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c806395d89b41116100ad578063c87b56dd11610071578063c87b56dd14610319578063ca1daf8814610349578063d48e638a14610365578063e985e9c514610395578063f242432a146103c557610120565b806395d89b4114610275578063a22cb46514610293578063b390c0ab146102af578063c0ac9983146102cb578063c57dc235146102e957610120565b80634e1273f4116100f45780634e1273f4146101bf57806355f804b3146101ef5780636b20c4541461020b5780636fdc202f146102275780638da5cb5b1461025757610120565b8062fdd58e1461012557806301ffc9a71461015557806306fdde03146101855780632eb2c2d6146101a3575b600080fd5b61013f600480360381019061013a91906130bc565b6103e1565b60405161014c9190613c44565b60405180910390f35b61016f600480360381019061016a9190613164565b6104f4565b60405161017c9190613922565b60405180910390f35b61018d61055b565b60405161019a9190613982565b60405180910390f35b6101bd60048036038101906101b89190612eb3565b6105ed565b005b6101d960048036038101906101d491906130f8565b610a0e565b6040516101e691906138c9565b60405180910390f35b610209600480360381019061020491906131b6565b610cb6565b005b61022560048036038101906102209190613001565b610d52565b005b610241600480360381019061023c9190612e4e565b610d62565b60405161024e9190613922565b60405180910390f35b61025f610f2a565b60405161026c91906137ec565b60405180910390f35b61027d610f50565b60405161028a9190613982565b60405180910390f35b6102ad60048036038101906102a89190613080565b610fe2565b005b6102c960048036038101906102c4919061329b565b611163565b005b6102d3611172565b6040516102e09190613982565b60405180910390f35b61030360048036038101906102fe9190613272565b611200565b6040516103109190613c44565b60405180910390f35b610333600480360381019061032e9190613272565b61121d565b6040516103409190613982565b60405180910390f35b610363600480360381019061035e91906131f7565b611413565b005b61037f600480360381019061037a9190613272565b611446565b60405161038c91906137ec565b60405180910390f35b6103af60048036038101906103aa9190612e77565b611483565b6040516103bc9190613922565b60405180910390f35b6103df60048036038101906103da9190612f72565b611517565b005b60006103ec8261185a565b61042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290613b04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610492906139e4565b60405180910390fd5b6003600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606009805461056a90613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461059690613fb9565b80156105e35780601f106105b8576101008083540402835291602001916105e3565b820191906000526020600020905b8154815290600101906020018083116105c657829003601f168201915b5050505050905090565b8151835114610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890613be4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069890613aa4565b60405180910390fd5b6106a9611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9611877565b611483565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590613ac4565b60405180910390fd5b6000610738611877565b905061074881878787878761187f565b60005b845181101561097957600085828151811061078f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060008583815181106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905061085b816040518060600160405280602a81526020016148d2602a91396003600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610912816003600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806109729061401c565b905061074b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109f09291906138eb565b60405180910390a4610a06818787878787611949565b505050505050565b60608151835114610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90613bc4565b60405180910390fd5b6000835167ffffffffffffffff811115610a97577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ac55781602001602082028036833780820191505090505b50905060005b8451811015610cab57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610b25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a04565b60405180910390fd5b60036000858381518110610bc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610c8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610ca49061401c565b9050610acb565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613b44565b60405180910390fd5b610d4f81611b30565b50565b610d5d838383611b81565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90613a24565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a360019050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054610f5f90613fb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90613fb9565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff16611001611877565b73ffffffffffffffffffffffffffffffffffffffff161415611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90613ba4565b60405180910390fd5b8060046000611065611877565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611112611877565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111579190613922565b60405180910390a35050565b61116e338383611e95565b5050565b6005805461117f90613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ab90613fb9565b80156111f85780601f106111cd576101008083540402835291602001916111f8565b820191906000526020600020905b8154815290600101906020018083116111db57829003601f168201915b505050505081565b600060026000838152602001908152602001600020549050919050565b60606112288261185a565b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613b64565b60405180910390fd5b600060066000848152602001908152602001600020805461128790613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390613fb9565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905060006005805461131690613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461134290613fb9565b801561138f5780601f106113645761010080835404028352916020019161138f565b820191906000526020600020905b81548152906001019060200180831161137257829003601f168201915b505050505090506000815114156113aa57819250505061140e565b6000825111156113df5780826040516020016113c79291906137a2565b6040516020818303038152906040529250505061140e565b806113e9856120dd565b6040516020016113fa9291906137a2565b604051602081830303815290604052925050505b919050565b61141d848261229c565b61142b600b548486856123de565b6001600b5461143a9190613de3565b600b8190555050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e90613aa4565b60405180910390fd5b61158f611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806115d557506115d4856115cf611877565b611483565b5b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613a64565b60405180910390fd5b600061161e611877565b905061163e81878761162f8861264c565b6116388861264c565b8761187f565b6116bb836040518060600160405280602a81526020016148d2602a91396003600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772836003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183c929190613c5f565b60405180910390a4611852818787878787612712565b505050505050565b60006118708260076128f990919063ffffffff16565b9050919050565b600033905090565b505050505050565b60008383111582906118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c69190613982565b60405180910390fd5b50600083856118de9190613e6a565b9050809150509392505050565b60008082846118fa9190613de3565b90508381101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613a44565b60405180910390fd5b8091505092915050565b6119688473ffffffffffffffffffffffffffffffffffffffff16612913565b15611b28578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119ae959493929190613807565b602060405180830381600087803b1580156119c857600080fd5b505af19250505080156119f957506040513d601f19601f820116820180604052508101906119f6919061318d565b60015b611a9f57611a05614180565b806308c379a01415611a625750611a1a61478d565b80611a255750611a64565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599190613982565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906139a4565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906139c4565b60405180910390fd5b505b505050505050565b8060059080519060200190611b46929190612abc565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc30681604051611b769190613982565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613b24565b60405180910390fd5b8051825114611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613be4565b60405180910390fd5b6000611c3f611877565b9050611c5f8185600086866040518060200160405280600081525061187f565b60005b8351811015611e0f57611d68838281518110611ca7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518060600160405280602481526020016148ae6024913960036000888681518110611d05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b60036000868481518110611da5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611e079061401c565b915050611c62565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611e879291906138eb565b60405180910390a450505050565b611e9e8261185a565b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613a84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613b24565b60405180910390fd5b6000611f57611877565b9050611f8781856000611f698761264c565b611f728761264c565b6040518060200160405280600081525061187f565b612004826040518060600160405280603181526020016148fc603191396003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516120cf929190613c5f565b60405180910390a450505050565b60606000821415612125576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612297565b600082905060005b600082146121575780806121409061401c565b915050600a826121509190613e39565b915061212d565b60008167ffffffffffffffff811115612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121cb5781602001600182028036833780820191505090505b50905060006001836121dd9190613e6a565b90508593505b6000841461228f57600a846121f89190614093565b60306122049190613de3565b60f81b82828061221390613f8f565b93508151811061224c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a846122889190613e39565b93506121e3565b819450505050505b919050565b600030836040516020016122b192919061377a565b6040516020818303038152906040528051906020012090506001816040516020016122dc91906137c6565b604051602081830303815290604052805190602001208360000151846020015185604001516040516000815260200160405260405161231e949392919061393d565b6020604051602081039080840390855afa158015612340573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613ae4565b60405180910390fd5b505050565b6123e78461185a565b15612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90613c04565b60405180910390fd5b600083141561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613b84565b60405180910390fd5b60008251116124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613c24565b60405180910390fd5b336001600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612517843360076129269092919063ffffffff16565b50806002600086815260200190815260200160002081905550826003600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f848361295b565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612606929190613c5f565b60405180910390a4837f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8360405161263e9190613982565b60405180910390a250505050565b60606000600167ffffffffffffffff811115612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126bf5781602001602082028036833780820191505090505b50905082816000815181106126fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6127318473ffffffffffffffffffffffffffffffffffffffff16612913565b156128f1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161277795949392919061386f565b602060405180830381600087803b15801561279157600080fd5b505af19250505080156127c257506040513d601f19601f820116820180604052508101906127bf919061318d565b60015b612868576127ce614180565b806308c379a0141561282b57506127e361478d565b806127ee575061282d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128229190613982565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906139a4565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906139c4565b60405180910390fd5b505b505050505050565b600061290b836000018360001b612987565b905092915050565b600080823b905060008111915050919050565b6000612952846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129aa565b90509392505050565b80600660008481526020019081526020016000209080519060200190612982929190612abc565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808460010160008581526020019081526020016000205490506000811415612a5157846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612ab5565b8285600001600183612a639190613e6a565b81548110612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b828054612ac890613fb9565b90600052602060002090601f016020900481019282612aea5760008555612b31565b82601f10612b0357805160ff1916838001178555612b31565b82800160010185558215612b31579182015b82811115612b30578251825591602001919060010190612b15565b5b509050612b3e9190612b42565b5090565b5b80821115612b5b576000816000905550600101612b43565b5090565b6000612b72612b6d84613cad565b613c88565b90508083825260208201905082856020860282011115612b9157600080fd5b60005b85811015612bc15781612ba78882612cb3565b845260208401935060208301925050600181019050612b94565b5050509392505050565b6000612bde612bd984613cd9565b613c88565b90508083825260208201905082856020860282011115612bfd57600080fd5b60005b85811015612c2d5781612c138882612e24565b845260208401935060208301925050600181019050612c00565b5050509392505050565b6000612c4a612c4584613d05565b613c88565b905082815260208101848484011115612c6257600080fd5b612c6d848285613f4d565b509392505050565b6000612c88612c8384613d36565b613c88565b905082815260208101848484011115612ca057600080fd5b612cab848285613f4d565b509392505050565b600081359050612cc281614823565b92915050565b600082601f830112612cd957600080fd5b8135612ce9848260208601612b5f565b91505092915050565b600082601f830112612d0357600080fd5b8135612d13848260208601612bcb565b91505092915050565b600081359050612d2b8161483a565b92915050565b600081359050612d4081614851565b92915050565b600081359050612d5581614868565b92915050565b600081519050612d6a81614868565b92915050565b600082601f830112612d8157600080fd5b8135612d91848260208601612c37565b91505092915050565b600082601f830112612dab57600080fd5b8135612dbb848260208601612c75565b91505092915050565b600060608284031215612dd657600080fd5b612de06060613c88565b90506000612df084828501612e39565b6000830152506020612e0484828501612d31565b6020830152506040612e1884828501612d31565b60408301525092915050565b600081359050612e338161487f565b92915050565b600081359050612e4881614896565b92915050565b600060208284031215612e6057600080fd5b6000612e6e84828501612cb3565b91505092915050565b60008060408385031215612e8a57600080fd5b6000612e9885828601612cb3565b9250506020612ea985828601612cb3565b9150509250929050565b600080600080600060a08688031215612ecb57600080fd5b6000612ed988828901612cb3565b9550506020612eea88828901612cb3565b945050604086013567ffffffffffffffff811115612f0757600080fd5b612f1388828901612cf2565b935050606086013567ffffffffffffffff811115612f3057600080fd5b612f3c88828901612cf2565b925050608086013567ffffffffffffffff811115612f5957600080fd5b612f6588828901612d70565b9150509295509295909350565b600080600080600060a08688031215612f8a57600080fd5b6000612f9888828901612cb3565b9550506020612fa988828901612cb3565b9450506040612fba88828901612e24565b9350506060612fcb88828901612e24565b925050608086013567ffffffffffffffff811115612fe857600080fd5b612ff488828901612d70565b9150509295509295909350565b60008060006060848603121561301657600080fd5b600061302486828701612cb3565b935050602084013567ffffffffffffffff81111561304157600080fd5b61304d86828701612cf2565b925050604084013567ffffffffffffffff81111561306a57600080fd5b61307686828701612cf2565b9150509250925092565b6000806040838503121561309357600080fd5b60006130a185828601612cb3565b92505060206130b285828601612d1c565b9150509250929050565b600080604083850312156130cf57600080fd5b60006130dd85828601612cb3565b92505060206130ee85828601612e24565b9150509250929050565b6000806040838503121561310b57600080fd5b600083013567ffffffffffffffff81111561312557600080fd5b61313185828601612cc8565b925050602083013567ffffffffffffffff81111561314e57600080fd5b61315a85828601612cf2565b9150509250929050565b60006020828403121561317657600080fd5b600061318484828501612d46565b91505092915050565b60006020828403121561319f57600080fd5b60006131ad84828501612d5b565b91505092915050565b6000602082840312156131c857600080fd5b600082013567ffffffffffffffff8111156131e257600080fd5b6131ee84828501612d9a565b91505092915050565b60008060008060c0858703121561320d57600080fd5b600085013567ffffffffffffffff81111561322757600080fd5b61323387828801612d9a565b945050602061324487828801612e24565b935050604061325587828801612e24565b925050606061326687828801612dc4565b91505092959194509250565b60006020828403121561328457600080fd5b600061329284828501612e24565b91505092915050565b600080604083850312156132ae57600080fd5b60006132bc85828601612e24565b92505060206132cd85828601612e24565b9150509250929050565b60006132e3838361374d565b60208301905092915050565b6132f881613e9e565b82525050565b600061330982613d77565b6133138185613da5565b935061331e83613d67565b8060005b8381101561334f57815161333688826132d7565b975061334183613d98565b925050600181019050613322565b5085935050505092915050565b61336581613eb0565b82525050565b61337481613ebc565b82525050565b61338b61338682613ebc565b614077565b82525050565b600061339c82613d82565b6133a68185613db6565b93506133b6818560208601613f5c565b6133bf816141a2565b840191505092915050565b6133db6133d682613f29565b614065565b82525050565b60006133ec82613d8d565b6133f68185613dc7565b9350613406818560208601613f5c565b61340f816141a2565b840191505092915050565b600061342582613d8d565b61342f8185613dd8565b935061343f818560208601613f5c565b80840191505092915050565b6000613458603483613dc7565b9150613463826141cd565b604082019050919050565b600061347b602883613dc7565b91506134868261421c565b604082019050919050565b600061349e601c83613dd8565b91506134a98261426b565b601c82019050919050565b60006134c1602b83613dc7565b91506134cc82614294565b604082019050919050565b60006134e4603183613dc7565b91506134ef826142e3565b604082019050919050565b6000613507602683613dc7565b915061351282614332565b604082019050919050565b600061352a601b83613dc7565b915061353582614381565b602082019050919050565b600061354d602983613dc7565b9150613558826143aa565b604082019050919050565b6000613570603183613dc7565b915061357b826143f9565b604082019050919050565b6000613593602583613dc7565b915061359e82614448565b604082019050919050565b60006135b6603283613dc7565b91506135c182614497565b604082019050919050565b60006135d9601e83613dc7565b91506135e4826144e6565b602082019050919050565b60006135fc603483613dc7565b91506136078261450f565b604082019050919050565b600061361f602383613dc7565b915061362a8261455e565b604082019050919050565b6000613642602083613dc7565b915061364d826145ad565b602082019050919050565b6000613665603083613dc7565b9150613670826145d6565b604082019050919050565b6000613688601983613dc7565b915061369382614625565b602082019050919050565b60006136ab602983613dc7565b91506136b68261464e565b604082019050919050565b60006136ce602983613dc7565b91506136d98261469d565b604082019050919050565b60006136f1602883613dc7565b91506136fc826146ec565b604082019050919050565b6000613714601d83613dc7565b915061371f8261473b565b602082019050919050565b6000613737601183613dc7565b915061374282614764565b602082019050919050565b61375681613f12565b82525050565b61376581613f12565b82525050565b61377481613f1c565b82525050565b600061378682856133ca565b601482019150613796828461341a565b91508190509392505050565b60006137ae828561341a565b91506137ba828461341a565b91508190509392505050565b60006137d182613491565b91506137dd828461337a565b60208201915081905092915050565b600060208201905061380160008301846132ef565b92915050565b600060a08201905061381c60008301886132ef565b61382960208301876132ef565b818103604083015261383b81866132fe565b9050818103606083015261384f81856132fe565b905081810360808301526138638184613391565b90509695505050505050565b600060a08201905061388460008301886132ef565b61389160208301876132ef565b61389e604083018661375c565b6138ab606083018561375c565b81810360808301526138bd8184613391565b90509695505050505050565b600060208201905081810360008301526138e381846132fe565b905092915050565b6000604082019050818103600083015261390581856132fe565b9050818103602083015261391981846132fe565b90509392505050565b6000602082019050613937600083018461335c565b92915050565b6000608082019050613952600083018761336b565b61395f602083018661376b565b61396c604083018561336b565b613979606083018461336b565b95945050505050565b6000602082019050818103600083015261399c81846133e1565b905092915050565b600060208201905081810360008301526139bd8161344b565b9050919050565b600060208201905081810360008301526139dd8161346e565b9050919050565b600060208201905081810360008301526139fd816134b4565b9050919050565b60006020820190508181036000830152613a1d816134d7565b9050919050565b60006020820190508181036000830152613a3d816134fa565b9050919050565b60006020820190508181036000830152613a5d8161351d565b9050919050565b60006020820190508181036000830152613a7d81613540565b9050919050565b60006020820190508181036000830152613a9d81613563565b9050919050565b60006020820190508181036000830152613abd81613586565b9050919050565b60006020820190508181036000830152613add816135a9565b9050919050565b60006020820190508181036000830152613afd816135cc565b9050919050565b60006020820190508181036000830152613b1d816135ef565b9050919050565b60006020820190508181036000830152613b3d81613612565b9050919050565b60006020820190508181036000830152613b5d81613635565b9050919050565b60006020820190508181036000830152613b7d81613658565b9050919050565b60006020820190508181036000830152613b9d8161367b565b9050919050565b60006020820190508181036000830152613bbd8161369e565b9050919050565b60006020820190508181036000830152613bdd816136c1565b9050919050565b60006020820190508181036000830152613bfd816136e4565b9050919050565b60006020820190508181036000830152613c1d81613707565b9050919050565b60006020820190508181036000830152613c3d8161372a565b9050919050565b6000602082019050613c59600083018461375c565b92915050565b6000604082019050613c74600083018561375c565b613c81602083018461375c565b9392505050565b6000613c92613ca3565b9050613c9e8282613feb565b919050565b6000604051905090565b600067ffffffffffffffff821115613cc857613cc7614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613cf457613cf3614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d2057613d1f614151565b5b613d29826141a2565b9050602081019050919050565b600067ffffffffffffffff821115613d5157613d50614151565b5b613d5a826141a2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613dee82613f12565b9150613df983613f12565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2e57613e2d6140c4565b5b828201905092915050565b6000613e4482613f12565b9150613e4f83613f12565b925082613e5f57613e5e6140f3565b5b828204905092915050565b6000613e7582613f12565b9150613e8083613f12565b925082821015613e9357613e926140c4565b5b828203905092915050565b6000613ea982613ef2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f3482613f3b565b9050919050565b6000613f4682613ef2565b9050919050565b82818337600083830152505050565b60005b83811015613f7a578082015181840152602081019050613f5f565b83811115613f89576000848401525b50505050565b6000613f9a82613f12565b91506000821415613fae57613fad6140c4565b5b600182039050919050565b60006002820490506001821680613fd157607f821691505b60208210811415613fe557613fe4614122565b5b50919050565b613ff4826141a2565b810181811067ffffffffffffffff8211171561401357614012614151565b5b80604052505050565b600061402782613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561405a576140596140c4565b5b600182019050919050565b600061407082614081565b9050919050565b6000819050919050565b600061408c826141b3565b9050919050565b600061409e82613f12565b91506140a983613f12565b9250826140b9576140b86140f3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561419f5760046000803e61419c6000516141c0565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062617463682062616c616e636520717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135354d657461646174613a206275726e20717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4f776e6572207369676e20766572696669636174696f6e206661696c65640000600082015250565b7f455243313135354d657461646174613a2062616c616e6365207175657279206660008201527f6f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135354d657461646174613a2055524920717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b7f537570706c792073686f756c6420626520706f73697469766500000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f7572692073686f756c6420626520736574000000000000000000000000000000600082015250565b600060443d101561479d57614820565b6147a5613ca3565b60043d036004823e80513d602482011167ffffffffffffffff821117156147cd575050614820565b808201805167ffffffffffffffff8111156147eb5750505050614820565b80602083010160043d038501811115614808575050505050614820565b61481782602001850186613feb565b82955050505050505b90565b61482c81613e9e565b811461483757600080fd5b50565b61484381613eb0565b811461484e57600080fd5b50565b61485a81613ebc565b811461486557600080fd5b50565b61487181613ec6565b811461487c57600080fd5b50565b61488881613f12565b811461489357600080fd5b50565b61489f81613f1c565b81146148aa57600080fd5b5056fe455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e736665724552435f686f6c646572546f6b656e73313135353a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be3264736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000094d494e54595357415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007244d494e54595300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101205760003560e01c806395d89b41116100ad578063c87b56dd11610071578063c87b56dd14610319578063ca1daf8814610349578063d48e638a14610365578063e985e9c514610395578063f242432a146103c557610120565b806395d89b4114610275578063a22cb46514610293578063b390c0ab146102af578063c0ac9983146102cb578063c57dc235146102e957610120565b80634e1273f4116100f45780634e1273f4146101bf57806355f804b3146101ef5780636b20c4541461020b5780636fdc202f146102275780638da5cb5b1461025757610120565b8062fdd58e1461012557806301ffc9a71461015557806306fdde03146101855780632eb2c2d6146101a3575b600080fd5b61013f600480360381019061013a91906130bc565b6103e1565b60405161014c9190613c44565b60405180910390f35b61016f600480360381019061016a9190613164565b6104f4565b60405161017c9190613922565b60405180910390f35b61018d61055b565b60405161019a9190613982565b60405180910390f35b6101bd60048036038101906101b89190612eb3565b6105ed565b005b6101d960048036038101906101d491906130f8565b610a0e565b6040516101e691906138c9565b60405180910390f35b610209600480360381019061020491906131b6565b610cb6565b005b61022560048036038101906102209190613001565b610d52565b005b610241600480360381019061023c9190612e4e565b610d62565b60405161024e9190613922565b60405180910390f35b61025f610f2a565b60405161026c91906137ec565b60405180910390f35b61027d610f50565b60405161028a9190613982565b60405180910390f35b6102ad60048036038101906102a89190613080565b610fe2565b005b6102c960048036038101906102c4919061329b565b611163565b005b6102d3611172565b6040516102e09190613982565b60405180910390f35b61030360048036038101906102fe9190613272565b611200565b6040516103109190613c44565b60405180910390f35b610333600480360381019061032e9190613272565b61121d565b6040516103409190613982565b60405180910390f35b610363600480360381019061035e91906131f7565b611413565b005b61037f600480360381019061037a9190613272565b611446565b60405161038c91906137ec565b60405180910390f35b6103af60048036038101906103aa9190612e77565b611483565b6040516103bc9190613922565b60405180910390f35b6103df60048036038101906103da9190612f72565b611517565b005b60006103ec8261185a565b61042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290613b04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610492906139e4565b60405180910390fd5b6003600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606009805461056a90613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461059690613fb9565b80156105e35780601f106105b8576101008083540402835291602001916105e3565b820191906000526020600020905b8154815290600101906020018083116105c657829003601f168201915b5050505050905090565b8151835114610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890613be4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069890613aa4565b60405180910390fd5b6106a9611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9611877565b611483565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590613ac4565b60405180910390fd5b6000610738611877565b905061074881878787878761187f565b60005b845181101561097957600085828151811061078f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060008583815181106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905061085b816040518060600160405280602a81526020016148d2602a91396003600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610912816003600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806109729061401c565b905061074b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109f09291906138eb565b60405180910390a4610a06818787878787611949565b505050505050565b60608151835114610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90613bc4565b60405180910390fd5b6000835167ffffffffffffffff811115610a97577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ac55781602001602082028036833780820191505090505b50905060005b8451811015610cab57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610b25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a04565b60405180910390fd5b60036000858381518110610bc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610c8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610ca49061401c565b9050610acb565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613b44565b60405180910390fd5b610d4f81611b30565b50565b610d5d838383611b81565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90613a24565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a360019050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054610f5f90613fb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90613fb9565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff16611001611877565b73ffffffffffffffffffffffffffffffffffffffff161415611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90613ba4565b60405180910390fd5b8060046000611065611877565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611112611877565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111579190613922565b60405180910390a35050565b61116e338383611e95565b5050565b6005805461117f90613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ab90613fb9565b80156111f85780601f106111cd576101008083540402835291602001916111f8565b820191906000526020600020905b8154815290600101906020018083116111db57829003601f168201915b505050505081565b600060026000838152602001908152602001600020549050919050565b60606112288261185a565b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613b64565b60405180910390fd5b600060066000848152602001908152602001600020805461128790613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390613fb9565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905060006005805461131690613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461134290613fb9565b801561138f5780601f106113645761010080835404028352916020019161138f565b820191906000526020600020905b81548152906001019060200180831161137257829003601f168201915b505050505090506000815114156113aa57819250505061140e565b6000825111156113df5780826040516020016113c79291906137a2565b6040516020818303038152906040529250505061140e565b806113e9856120dd565b6040516020016113fa9291906137a2565b604051602081830303815290604052925050505b919050565b61141d848261229c565b61142b600b548486856123de565b6001600b5461143a9190613de3565b600b8190555050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e90613aa4565b60405180910390fd5b61158f611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806115d557506115d4856115cf611877565b611483565b5b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613a64565b60405180910390fd5b600061161e611877565b905061163e81878761162f8861264c565b6116388861264c565b8761187f565b6116bb836040518060600160405280602a81526020016148d2602a91396003600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772836003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183c929190613c5f565b60405180910390a4611852818787878787612712565b505050505050565b60006118708260076128f990919063ffffffff16565b9050919050565b600033905090565b505050505050565b60008383111582906118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c69190613982565b60405180910390fd5b50600083856118de9190613e6a565b9050809150509392505050565b60008082846118fa9190613de3565b90508381101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613a44565b60405180910390fd5b8091505092915050565b6119688473ffffffffffffffffffffffffffffffffffffffff16612913565b15611b28578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119ae959493929190613807565b602060405180830381600087803b1580156119c857600080fd5b505af19250505080156119f957506040513d601f19601f820116820180604052508101906119f6919061318d565b60015b611a9f57611a05614180565b806308c379a01415611a625750611a1a61478d565b80611a255750611a64565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599190613982565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906139a4565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906139c4565b60405180910390fd5b505b505050505050565b8060059080519060200190611b46929190612abc565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc30681604051611b769190613982565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613b24565b60405180910390fd5b8051825114611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613be4565b60405180910390fd5b6000611c3f611877565b9050611c5f8185600086866040518060200160405280600081525061187f565b60005b8351811015611e0f57611d68838281518110611ca7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518060600160405280602481526020016148ae6024913960036000888681518110611d05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b60036000868481518110611da5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611e079061401c565b915050611c62565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611e879291906138eb565b60405180910390a450505050565b611e9e8261185a565b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613a84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613b24565b60405180910390fd5b6000611f57611877565b9050611f8781856000611f698761264c565b611f728761264c565b6040518060200160405280600081525061187f565b612004826040518060600160405280603181526020016148fc603191396003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516120cf929190613c5f565b60405180910390a450505050565b60606000821415612125576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612297565b600082905060005b600082146121575780806121409061401c565b915050600a826121509190613e39565b915061212d565b60008167ffffffffffffffff811115612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121cb5781602001600182028036833780820191505090505b50905060006001836121dd9190613e6a565b90508593505b6000841461228f57600a846121f89190614093565b60306122049190613de3565b60f81b82828061221390613f8f565b93508151811061224c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a846122889190613e39565b93506121e3565b819450505050505b919050565b600030836040516020016122b192919061377a565b6040516020818303038152906040528051906020012090506001816040516020016122dc91906137c6565b604051602081830303815290604052805190602001208360000151846020015185604001516040516000815260200160405260405161231e949392919061393d565b6020604051602081039080840390855afa158015612340573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613ae4565b60405180910390fd5b505050565b6123e78461185a565b15612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90613c04565b60405180910390fd5b600083141561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613b84565b60405180910390fd5b60008251116124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613c24565b60405180910390fd5b336001600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612517843360076129269092919063ffffffff16565b50806002600086815260200190815260200160002081905550826003600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f848361295b565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612606929190613c5f565b60405180910390a4837f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8360405161263e9190613982565b60405180910390a250505050565b60606000600167ffffffffffffffff811115612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126bf5781602001602082028036833780820191505090505b50905082816000815181106126fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6127318473ffffffffffffffffffffffffffffffffffffffff16612913565b156128f1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161277795949392919061386f565b602060405180830381600087803b15801561279157600080fd5b505af19250505080156127c257506040513d601f19601f820116820180604052508101906127bf919061318d565b60015b612868576127ce614180565b806308c379a0141561282b57506127e361478d565b806127ee575061282d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128229190613982565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906139a4565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906139c4565b60405180910390fd5b505b505050505050565b600061290b836000018360001b612987565b905092915050565b600080823b905060008111915050919050565b6000612952846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129aa565b90509392505050565b80600660008481526020019081526020016000209080519060200190612982929190612abc565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808460010160008581526020019081526020016000205490506000811415612a5157846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612ab5565b8285600001600183612a639190613e6a565b81548110612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b828054612ac890613fb9565b90600052602060002090601f016020900481019282612aea5760008555612b31565b82601f10612b0357805160ff1916838001178555612b31565b82800160010185558215612b31579182015b82811115612b30578251825591602001919060010190612b15565b5b509050612b3e9190612b42565b5090565b5b80821115612b5b576000816000905550600101612b43565b5090565b6000612b72612b6d84613cad565b613c88565b90508083825260208201905082856020860282011115612b9157600080fd5b60005b85811015612bc15781612ba78882612cb3565b845260208401935060208301925050600181019050612b94565b5050509392505050565b6000612bde612bd984613cd9565b613c88565b90508083825260208201905082856020860282011115612bfd57600080fd5b60005b85811015612c2d5781612c138882612e24565b845260208401935060208301925050600181019050612c00565b5050509392505050565b6000612c4a612c4584613d05565b613c88565b905082815260208101848484011115612c6257600080fd5b612c6d848285613f4d565b509392505050565b6000612c88612c8384613d36565b613c88565b905082815260208101848484011115612ca057600080fd5b612cab848285613f4d565b509392505050565b600081359050612cc281614823565b92915050565b600082601f830112612cd957600080fd5b8135612ce9848260208601612b5f565b91505092915050565b600082601f830112612d0357600080fd5b8135612d13848260208601612bcb565b91505092915050565b600081359050612d2b8161483a565b92915050565b600081359050612d4081614851565b92915050565b600081359050612d5581614868565b92915050565b600081519050612d6a81614868565b92915050565b600082601f830112612d8157600080fd5b8135612d91848260208601612c37565b91505092915050565b600082601f830112612dab57600080fd5b8135612dbb848260208601612c75565b91505092915050565b600060608284031215612dd657600080fd5b612de06060613c88565b90506000612df084828501612e39565b6000830152506020612e0484828501612d31565b6020830152506040612e1884828501612d31565b60408301525092915050565b600081359050612e338161487f565b92915050565b600081359050612e4881614896565b92915050565b600060208284031215612e6057600080fd5b6000612e6e84828501612cb3565b91505092915050565b60008060408385031215612e8a57600080fd5b6000612e9885828601612cb3565b9250506020612ea985828601612cb3565b9150509250929050565b600080600080600060a08688031215612ecb57600080fd5b6000612ed988828901612cb3565b9550506020612eea88828901612cb3565b945050604086013567ffffffffffffffff811115612f0757600080fd5b612f1388828901612cf2565b935050606086013567ffffffffffffffff811115612f3057600080fd5b612f3c88828901612cf2565b925050608086013567ffffffffffffffff811115612f5957600080fd5b612f6588828901612d70565b9150509295509295909350565b600080600080600060a08688031215612f8a57600080fd5b6000612f9888828901612cb3565b9550506020612fa988828901612cb3565b9450506040612fba88828901612e24565b9350506060612fcb88828901612e24565b925050608086013567ffffffffffffffff811115612fe857600080fd5b612ff488828901612d70565b9150509295509295909350565b60008060006060848603121561301657600080fd5b600061302486828701612cb3565b935050602084013567ffffffffffffffff81111561304157600080fd5b61304d86828701612cf2565b925050604084013567ffffffffffffffff81111561306a57600080fd5b61307686828701612cf2565b9150509250925092565b6000806040838503121561309357600080fd5b60006130a185828601612cb3565b92505060206130b285828601612d1c565b9150509250929050565b600080604083850312156130cf57600080fd5b60006130dd85828601612cb3565b92505060206130ee85828601612e24565b9150509250929050565b6000806040838503121561310b57600080fd5b600083013567ffffffffffffffff81111561312557600080fd5b61313185828601612cc8565b925050602083013567ffffffffffffffff81111561314e57600080fd5b61315a85828601612cf2565b9150509250929050565b60006020828403121561317657600080fd5b600061318484828501612d46565b91505092915050565b60006020828403121561319f57600080fd5b60006131ad84828501612d5b565b91505092915050565b6000602082840312156131c857600080fd5b600082013567ffffffffffffffff8111156131e257600080fd5b6131ee84828501612d9a565b91505092915050565b60008060008060c0858703121561320d57600080fd5b600085013567ffffffffffffffff81111561322757600080fd5b61323387828801612d9a565b945050602061324487828801612e24565b935050604061325587828801612e24565b925050606061326687828801612dc4565b91505092959194509250565b60006020828403121561328457600080fd5b600061329284828501612e24565b91505092915050565b600080604083850312156132ae57600080fd5b60006132bc85828601612e24565b92505060206132cd85828601612e24565b9150509250929050565b60006132e3838361374d565b60208301905092915050565b6132f881613e9e565b82525050565b600061330982613d77565b6133138185613da5565b935061331e83613d67565b8060005b8381101561334f57815161333688826132d7565b975061334183613d98565b925050600181019050613322565b5085935050505092915050565b61336581613eb0565b82525050565b61337481613ebc565b82525050565b61338b61338682613ebc565b614077565b82525050565b600061339c82613d82565b6133a68185613db6565b93506133b6818560208601613f5c565b6133bf816141a2565b840191505092915050565b6133db6133d682613f29565b614065565b82525050565b60006133ec82613d8d565b6133f68185613dc7565b9350613406818560208601613f5c565b61340f816141a2565b840191505092915050565b600061342582613d8d565b61342f8185613dd8565b935061343f818560208601613f5c565b80840191505092915050565b6000613458603483613dc7565b9150613463826141cd565b604082019050919050565b600061347b602883613dc7565b91506134868261421c565b604082019050919050565b600061349e601c83613dd8565b91506134a98261426b565b601c82019050919050565b60006134c1602b83613dc7565b91506134cc82614294565b604082019050919050565b60006134e4603183613dc7565b91506134ef826142e3565b604082019050919050565b6000613507602683613dc7565b915061351282614332565b604082019050919050565b600061352a601b83613dc7565b915061353582614381565b602082019050919050565b600061354d602983613dc7565b9150613558826143aa565b604082019050919050565b6000613570603183613dc7565b915061357b826143f9565b604082019050919050565b6000613593602583613dc7565b915061359e82614448565b604082019050919050565b60006135b6603283613dc7565b91506135c182614497565b604082019050919050565b60006135d9601e83613dc7565b91506135e4826144e6565b602082019050919050565b60006135fc603483613dc7565b91506136078261450f565b604082019050919050565b600061361f602383613dc7565b915061362a8261455e565b604082019050919050565b6000613642602083613dc7565b915061364d826145ad565b602082019050919050565b6000613665603083613dc7565b9150613670826145d6565b604082019050919050565b6000613688601983613dc7565b915061369382614625565b602082019050919050565b60006136ab602983613dc7565b91506136b68261464e565b604082019050919050565b60006136ce602983613dc7565b91506136d98261469d565b604082019050919050565b60006136f1602883613dc7565b91506136fc826146ec565b604082019050919050565b6000613714601d83613dc7565b915061371f8261473b565b602082019050919050565b6000613737601183613dc7565b915061374282614764565b602082019050919050565b61375681613f12565b82525050565b61376581613f12565b82525050565b61377481613f1c565b82525050565b600061378682856133ca565b601482019150613796828461341a565b91508190509392505050565b60006137ae828561341a565b91506137ba828461341a565b91508190509392505050565b60006137d182613491565b91506137dd828461337a565b60208201915081905092915050565b600060208201905061380160008301846132ef565b92915050565b600060a08201905061381c60008301886132ef565b61382960208301876132ef565b818103604083015261383b81866132fe565b9050818103606083015261384f81856132fe565b905081810360808301526138638184613391565b90509695505050505050565b600060a08201905061388460008301886132ef565b61389160208301876132ef565b61389e604083018661375c565b6138ab606083018561375c565b81810360808301526138bd8184613391565b90509695505050505050565b600060208201905081810360008301526138e381846132fe565b905092915050565b6000604082019050818103600083015261390581856132fe565b9050818103602083015261391981846132fe565b90509392505050565b6000602082019050613937600083018461335c565b92915050565b6000608082019050613952600083018761336b565b61395f602083018661376b565b61396c604083018561336b565b613979606083018461336b565b95945050505050565b6000602082019050818103600083015261399c81846133e1565b905092915050565b600060208201905081810360008301526139bd8161344b565b9050919050565b600060208201905081810360008301526139dd8161346e565b9050919050565b600060208201905081810360008301526139fd816134b4565b9050919050565b60006020820190508181036000830152613a1d816134d7565b9050919050565b60006020820190508181036000830152613a3d816134fa565b9050919050565b60006020820190508181036000830152613a5d8161351d565b9050919050565b60006020820190508181036000830152613a7d81613540565b9050919050565b60006020820190508181036000830152613a9d81613563565b9050919050565b60006020820190508181036000830152613abd81613586565b9050919050565b60006020820190508181036000830152613add816135a9565b9050919050565b60006020820190508181036000830152613afd816135cc565b9050919050565b60006020820190508181036000830152613b1d816135ef565b9050919050565b60006020820190508181036000830152613b3d81613612565b9050919050565b60006020820190508181036000830152613b5d81613635565b9050919050565b60006020820190508181036000830152613b7d81613658565b9050919050565b60006020820190508181036000830152613b9d8161367b565b9050919050565b60006020820190508181036000830152613bbd8161369e565b9050919050565b60006020820190508181036000830152613bdd816136c1565b9050919050565b60006020820190508181036000830152613bfd816136e4565b9050919050565b60006020820190508181036000830152613c1d81613707565b9050919050565b60006020820190508181036000830152613c3d8161372a565b9050919050565b6000602082019050613c59600083018461375c565b92915050565b6000604082019050613c74600083018561375c565b613c81602083018461375c565b9392505050565b6000613c92613ca3565b9050613c9e8282613feb565b919050565b6000604051905090565b600067ffffffffffffffff821115613cc857613cc7614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613cf457613cf3614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d2057613d1f614151565b5b613d29826141a2565b9050602081019050919050565b600067ffffffffffffffff821115613d5157613d50614151565b5b613d5a826141a2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613dee82613f12565b9150613df983613f12565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2e57613e2d6140c4565b5b828201905092915050565b6000613e4482613f12565b9150613e4f83613f12565b925082613e5f57613e5e6140f3565b5b828204905092915050565b6000613e7582613f12565b9150613e8083613f12565b925082821015613e9357613e926140c4565b5b828203905092915050565b6000613ea982613ef2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f3482613f3b565b9050919050565b6000613f4682613ef2565b9050919050565b82818337600083830152505050565b60005b83811015613f7a578082015181840152602081019050613f5f565b83811115613f89576000848401525b50505050565b6000613f9a82613f12565b91506000821415613fae57613fad6140c4565b5b600182039050919050565b60006002820490506001821680613fd157607f821691505b60208210811415613fe557613fe4614122565b5b50919050565b613ff4826141a2565b810181811067ffffffffffffffff8211171561401357614012614151565b5b80604052505050565b600061402782613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561405a576140596140c4565b5b600182019050919050565b600061407082614081565b9050919050565b6000819050919050565b600061408c826141b3565b9050919050565b600061409e82613f12565b91506140a983613f12565b9250826140b9576140b86140f3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561419f5760046000803e61419c6000516141c0565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062617463682062616c616e636520717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135354d657461646174613a206275726e20717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4f776e6572207369676e20766572696669636174696f6e206661696c65640000600082015250565b7f455243313135354d657461646174613a2062616c616e6365207175657279206660008201527f6f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135354d657461646174613a2055524920717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b7f537570706c792073686f756c6420626520706f73697469766500000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f7572692073686f756c6420626520736574000000000000000000000000000000600082015250565b600060443d101561479d57614820565b6147a5613ca3565b60043d036004823e80513d602482011167ffffffffffffffff821117156147cd575050614820565b808201805167ffffffffffffffff8111156147eb5750505050614820565b80602083010160043d038501811115614808575050505050614820565b61481782602001850186613feb565b82955050505050505b90565b61482c81613e9e565b811461483757600080fd5b50565b61484381613eb0565b811461484e57600080fd5b50565b61485a81613ebc565b811461486557600080fd5b50565b61487181613ec6565b811461487c57600080fd5b50565b61488881613f12565b811461489357600080fd5b50565b61489f81613f1c565b81146148aa57600080fd5b5056fe455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e736665724552435f686f6c646572546f6b656e73313135353a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be3264736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000094d494e54595357415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007244d494e54595300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): MINTYSWAP
Arg [1] : symbol (string): $MINTYS
Arg [2] : tokenURIPrefix (string): https://gateway.pinata.cloud/ipfs/
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 4d494e5459535741500000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 244d494e54595300000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000022
Arg [8] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [9] : 732f000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
34144:2199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20710:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12232:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26879:1280;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21345:634;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35956:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36187:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34777:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34211:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18114:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22341:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36072:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17364:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18772:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19761:556;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35742:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19066:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22941:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24264:964;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20710:325;20793:7;20821:16;20829:7;20821;:16::i;:::-;20813:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20932:1;20913:21;;:7;:21;;;;20905:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21000:9;:18;21010:7;21000:18;;;;;;;;;;;:27;21019:7;21000:27;;;;;;;;;;;;;;;;20993:34;;20710:325;;;;:::o;12232:142::-;12309:4;12333:20;:33;12354:11;12333:33;;;;;;;;;;;;;;;;;;;;;;;;;;;12326:40;;12232:142;;;:::o;18006:100::-;18060:13;18093:5;18086:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18006:100;:::o;26879:1280::-;27154:7;:14;27135:8;:15;:33;27127:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;27246:1;27232:16;;:2;:16;;;;27224:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27331:12;:10;:12::i;:::-;27323:20;;:4;:20;;;:60;;;;27347:36;27364:4;27370:12;:10;:12::i;:::-;27347:16;:36::i;:::-;27323:60;27301:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27474:16;27493:12;:10;:12::i;:::-;27474:31;;27518:65;27539:8;27549:4;27555:2;27559:8;27569:7;27578:4;27518:20;:65::i;:::-;27601:9;27596:393;27620:8;:15;27616:1;:19;27596:393;;;27657:15;27675:8;27684:1;27675:11;;;;;;;;;;;;;;;;;;;;;;27657:29;;27701:14;27718:7;27726:1;27718:10;;;;;;;;;;;;;;;;;;;;;;27701:27;;27772:131;27819:6;27772:131;;;;;;;;;;;;;;;;;:9;:18;27782:7;27772:18;;;;;;;;;;;:24;27791:4;27772:24;;;;;;;;;;;;;;;;:28;;:131;;;;;:::i;:::-;27745:9;:18;27755:7;27745:18;;;;;;;;;;;:24;27764:4;27745:24;;;;;;;;;;;;;;;:158;;;;27943:34;27970:6;27943:9;:18;27953:7;27943:18;;;;;;;;;;;:22;27962:2;27943:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;27918:9;:18;27928:7;27918:18;;;;;;;;;;;:22;27937:2;27918:22;;;;;;;;;;;;;;;:59;;;;27596:393;;27637:3;;;;:::i;:::-;;;27596:393;;;;28036:2;28006:52;;28030:4;28006:52;;28020:8;28006:52;;;28040:8;28050:7;28006:52;;;;;;;:::i;:::-;;;;;;;;28071:80;28107:8;28117:4;28123:2;28127:8;28137:7;28146:4;28071:35;:80::i;:::-;26879:1280;;;;;;:::o;21345:634::-;21509:16;21570:3;:10;21551:8;:15;:29;21543:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21639:30;21686:8;:15;21672:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21639:63;;21720:9;21715:224;21739:8;:15;21735:1;:19;21715:224;;;21807:1;21784:25;;:8;21793:1;21784:11;;;;;;;;;;;;;;;;;;;;;;:25;;;;21776:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21897:9;:17;21907:3;21911:1;21907:6;;;;;;;;;;;;;;;;;;;;;;21897:17;;;;;;;;;;;:30;21915:8;21924:1;21915:11;;;;;;;;;;;;;;;;;;;;;;21897:30;;;;;;;;;;;;;;;;21878:13;21892:1;21878:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;21756:3;;;;:::i;:::-;;;21715:224;;;;21958:13;21951:20;;;21345:634;;;;:::o;35956:108::-;34575:10;34566:19;;:5;;;;;;;;;;;:19;;;34558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36028:28:::1;36047:8;36028:18;:28::i;:::-;35956:108:::0;:::o;36187:153::-;36294:38;36305:7;36314:8;36324:7;36294:10;:38::i;:::-;36187:153;;;:::o;34777:266::-;34847:4;34575:10;34566:19;;:5;;;;;;;;;;;:19;;;34558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34891:1:::1;34871:22;;:8;:22;;;;34863:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34955:8;34947:5;;:16;;;;;;;;;;;;;;;;;;35004:8;34979:34;;34997:5;;;;;;;;;;;34979:34;;;;;;;;;;;;35031:4;35024:11;;34777:266:::0;;;:::o;34211:20::-;;;;;;;;;;;;;:::o;18114:104::-;18170:13;18203:7;18196:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18114:104;:::o;22341:311::-;22460:8;22444:24;;:12;:10;:12::i;:::-;:24;;;;22436:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22572:8;22527:18;:32;22546:12;:10;:12::i;:::-;22527:32;;;;;;;;;;;;;;;:42;22560:8;22527:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;22625:8;22596:48;;22611:12;:10;:12::i;:::-;22596:48;;;22635:8;22596:48;;;;;;:::i;:::-;;;;;;;;22341:311;;:::o;36072:107::-;36137:34;36143:10;36155:7;36164:6;36137:5;:34::i;:::-;36072:107;;:::o;17364:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18772:121::-;18838:7;18865:11;:20;18877:7;18865:20;;;;;;;;;;;;18858:27;;18772:121;;;:::o;19761:556::-;19834:13;19868:16;19876:7;19868;:16::i;:::-;19860:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19948:23;19974:10;:19;19985:7;19974:19;;;;;;;;;;;19948:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20004:18;20025:14;20004:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20078:1;20062:4;20056:18;:23;20052:72;;;20103:9;20096:16;;;;;;20052:72;20164:1;20144:9;20138:23;:27;20134:108;;;20213:4;20219:9;20196:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20182:48;;;;;;20134:108;20283:4;20289:18;:7;:16;:18::i;:::-;20266:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20252:57;;;;19761:556;;;;:::o;35742:206::-;35841:21;35852:3;35857:4;35841:10;:21::i;:::-;35873:33;35879:9;;35890:6;35898:3;35902;35873:5;:33::i;:::-;35939:1;35929:9;;:11;;;;:::i;:::-;35917:9;:23;;;;35742:206;;;;:::o;19066:126::-;19140:7;19167:8;:17;19176:7;19167:17;;;;;;;;;;;;;;;;;;;;;19160:24;;19066:126;;;:::o;22941:160::-;23032:4;23056:18;:27;23075:7;23056:27;;;;;;;;;;;;;;;:37;23084:8;23056:37;;;;;;;;;;;;;;;;;;;;;;;;;23049:44;;22941:160;;;;:::o;24264:964::-;24509:1;24495:16;;:2;:16;;;;24487:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24594:12;:10;:12::i;:::-;24586:20;;:4;:20;;;:60;;;;24610:36;24627:4;24633:12;:10;:12::i;:::-;24610:16;:36::i;:::-;24586:60;24564:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;24728:16;24747:12;:10;:12::i;:::-;24728:31;;24772:101;24793:8;24803:4;24809:2;24813:26;24831:7;24813:17;:26::i;:::-;24841:25;24859:6;24841:17;:25::i;:::-;24868:4;24772:20;:101::i;:::-;24913:82;24942:6;24913:82;;;;;;;;;;;;;;;;;:9;:18;24923:7;24913:18;;;;;;;;;;;:24;24932:4;24913:24;;;;;;;;;;;;;;;;:28;;:82;;;;;:::i;:::-;24886:9;:18;24896:7;24886:18;;;;;;;;;;;:24;24905:4;24886:24;;;;;;;;;;;;;;;:109;;;;25031:34;25058:6;25031:9;:18;25041:7;25031:18;;;;;;;;;;;:22;25050:2;25031:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;25006:9;:18;25016:7;25006:18;;;;;;;;;;;:22;25025:2;25006:22;;;;;;;;;;;;;;;:59;;;;25114:2;25083:51;;25108:4;25083:51;;25098:8;25083:51;;;25118:7;25127:6;25083:51;;;;;;;:::i;:::-;;;;;;;;25147:73;25178:8;25188:4;25194:2;25198:7;25207:6;25215:4;25147:30;:73::i;:::-;24264:964;;;;;;:::o;20325:127::-;20390:4;20414:30;20436:7;20414:12;:21;;:30;;;;:::i;:::-;20407:37;;20325:127;;;:::o;11628:115::-;11681:15;11724:10;11709:26;;11628:115;:::o;32093:241::-;;;;;;;:::o;13232:192::-;13318:7;13351:1;13346;:6;;13354:12;13338:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13378:9;13394:1;13390;:5;;;;:::i;:::-;13378:17;;13415:1;13408:8;;;13232:192;;;;;:::o;12780:181::-;12838:7;12858:9;12874:1;12870;:5;;;;:::i;:::-;12858:17;;12899:1;12894;:6;;12886:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:1;12945:8;;;12780:181;;;;:::o;33122:809::-;33381:15;:2;:13;;;:15::i;:::-;33377:547;;;33434:2;33417:43;;;33461:8;33471:4;33477:8;33487:7;33496:4;33417:84;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33413:500;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;33786:6;33779:14;;;;;;;;;;;:::i;:::-;;;;;;;;33413:500;;;33835:62;;;;;;;;;;:::i;:::-;;;;;;;;33413:500;33563:52;;;33551:64;;;:8;:64;;;;33547:163;;33640:50;;;;;;;;;;:::i;:::-;;;;;;;;33547:163;33502:223;33377:547;33122:809;;;;;;:::o;19376:164::-;19472:15;19455:14;:32;;;;;;;;;;;;:::i;:::-;;19503:29;19516:15;19503:29;;;;;;:::i;:::-;;;;;;;;19376:164;:::o;31327:756::-;31472:1;31453:21;;:7;:21;;;;31445:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31552:7;:14;31533:8;:15;:33;31525:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;31624:16;31643:12;:10;:12::i;:::-;31624:31;;31668:74;31689:8;31699:7;31716:1;31720:8;31730:7;31668:74;;;;;;;;;;;;:20;:74::i;:::-;31760:6;31755:240;31776:8;:15;31772:1;:19;31755:240;;;31847:136;31901:7;31909:1;31901:10;;;;;;;;;;;;;;;;;;;;;;31847:136;;;;;;;;;;;;;;;;;:9;:22;31857:8;31866:1;31857:11;;;;;;;;;;;;;;;;;;;;;;31847:22;;;;;;;;;;;:31;31870:7;31847:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;31813:9;:22;31823:8;31832:1;31823:11;;;;;;;;;;;;;;;;;;;;;;31813:22;;;;;;;;;;;:31;31836:7;31813:31;;;;;;;;;;;;;;;:170;;;;31793:3;;;;;:::i;:::-;;;;31755:240;;;;32053:1;32012:63;;32036:7;32012:63;;32026:8;32012:63;;;32057:8;32067:7;32012:63;;;;;;;:::i;:::-;;;;;;;;31327:756;;;;:::o;30497:680::-;30598:16;30606:7;30598;:16::i;:::-;30590:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;30706:1;30687:21;;:7;:21;;;;30679:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;30761:16;30780:12;:10;:12::i;:::-;30761:31;;30805:110;30826:8;30836:7;30853:1;30857:26;30875:7;30857:17;:26::i;:::-;30885:25;30903:6;30885:17;:25::i;:::-;30805:110;;;;;;;;;;;;:20;:110::i;:::-;30958:129;31004:6;30958:129;;;;;;;;;;;;;;;;;:9;:18;30968:7;30958:18;;;;;;;;;;;:27;30977:7;30958:27;;;;;;;;;;;;;;;;:31;;:129;;;;;:::i;:::-;30928:9;:18;30938:7;30928:18;;;;;;;;;;;:27;30947:7;30928:27;;;;;;;;;;;;;;;:159;;;;31149:1;31107:62;;31132:7;31107:62;;31122:8;31107:62;;;31153:7;31162:6;31107:62;;;;;;;:::i;:::-;;;;;;;;30497:680;;;;:::o;92:557::-;148:13;189:1;180:5;:10;176:53;;;207:10;;;;;;;;;;;;;;;;;;;;;176:53;239:12;254:5;239:20;;270:14;295:78;310:1;302:4;:9;295:78;;328:8;;;;;:::i;:::-;;;;359:2;351:10;;;;;:::i;:::-;;;295:78;;;383:19;415:6;405:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;383:39;;433:13;458:1;449:6;:10;;;;:::i;:::-;433:26;;477:5;470:12;;493:117;508:1;500:4;:9;493:117;;569:2;562:4;:9;;;;:::i;:::-;557:2;:14;;;;:::i;:::-;544:29;;526:6;533:7;;;;;:::i;:::-;;;526:15;;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;596:2;588:10;;;;;:::i;:::-;;;493:117;;;634:6;620:21;;;;;;92:557;;;;:::o;35415:319::-;35502:12;35544:4;35549:8;35527:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35517:42;;;;;;35502:57;;35587:104;35660:4;35607:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;35597:69;;;;;;35668:4;:6;;;35676:4;:6;;;35684:4;:6;;;35587:104;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35578:113;;:5;;;;;;;;;;;:113;;;35570:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;35415:319;;;:::o;28564:634::-;28676:16;28684:7;28676;:16::i;:::-;28675:17;28667:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;28756:1;28745:7;:12;;28737:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28827:1;28812:4;28806:18;:22;28798:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28883:10;28863:8;:17;28872:7;28863:17;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28904:37;28921:7;28930:10;28904:12;:16;;:37;;;;;:::i;:::-;;28975:4;28952:11;:20;28964:7;28952:20;;;;;;;;;;;:27;;;;29023:7;28990:9;:18;29000:7;28990:18;;;;;;;;;;;:30;29009:10;28990:30;;;;;;;;;;;;;;;:40;;;;29041:27;29054:7;29063:4;29041:12;:27::i;:::-;29127:10;29086:70;;29121:3;29086:70;;29101:10;29086:70;;;29139:7;29148;29086:70;;;;;;;:::i;:::-;;;;;;;;29182:7;29172:18;29176:4;29172:18;;;;;;:::i;:::-;;;;;;;;28564:634;;;;:::o;33939:198::-;34005:16;34034:22;34073:1;34059:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34034:41;;34097:7;34086:5;34092:1;34086:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;34124:5;34117:12;;;33939:198;;;:::o;32342:772::-;32576:15;:2;:13;;;:15::i;:::-;32572:535;;;32629:2;32612:38;;;32651:8;32661:4;32667:7;32676:6;32684:4;32612:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32608:488;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;32969:6;32962:14;;;;;;;;;;;:::i;:::-;;;;;;;;32608:488;;;33018:62;;;;;;;;;;:::i;:::-;;;;;;;;32608:488;32751:47;;;32739:59;;;:8;:59;;;;32735:158;;32823:50;;;;;;;;;;:::i;:::-;;;;;;;;32735:158;32690:218;32572:535;32342:772;;;;;;:::o;3939:151::-;4023:4;4047:35;4057:3;:10;;4077:3;4069:12;;4047:9;:35::i;:::-;4040:42;;3939:151;;;;:::o;14615:174::-;14675:4;14692:12;14746:7;14734:20;14726:28;;14780:1;14773:4;:8;14766:15;;;14615:174;;;:::o;3596:185::-;3685:4;3709:64;3714:3;:10;;3734:3;3726:12;;3764:5;3748:23;;3740:32;;3709:4;:64::i;:::-;3702:71;;3596:185;;;;;:::o;18482:111::-;18582:3;18560:10;:19;18571:7;18560:19;;;;;;;;;;;:25;;;;;;;;;;;;:::i;:::-;;18482:111;;:::o;2035:125::-;2106:4;2151:1;2130:3;:12;;:17;2143:3;2130:17;;;;;;;;;;;;:22;;2123:29;;2035:125;;;;:::o;874:470::-;950:4;967:16;986:3;:12;;:17;999:3;986:17;;;;;;;;;;;;967:36;;1032:1;1020:8;:13;1016:321;;;1087:3;:12;;1105:38;;;;;;;;1122:3;1105:38;;;;1135:5;1105:38;;;1087:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1179:3;:12;;:19;;;;1159:3;:12;;:17;1172:3;1159:17;;;;;;;;;;;:39;;;;1220:4;1213:11;;;;;1016:321;1293:5;1257:3;:12;;1281:1;1270:8;:12;;;;:::i;:::-;1257:26;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;:41;;;;1320:5;1313:12;;;874:470;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;702:655::-;798:5;823:81;839:64;896:6;839:64;:::i;:::-;823:81;:::i;:::-;814:90;;924:5;953:6;946:5;939:21;987:4;980:5;976:16;969:23;;1013:6;1063:3;1055:4;1047:6;1043:17;1038:3;1034:27;1031:36;1028:2;;;1092:1;1089;1082:12;1028:2;1128:1;1113:238;1138:6;1135:1;1132:13;1113:238;;;1206:3;1235:37;1268:3;1256:10;1235:37;:::i;:::-;1230:3;1223:50;1302:4;1297:3;1293:14;1286:21;;1336:4;1331:3;1327:14;1320:21;;1173:178;1160:1;1157;1153:9;1148:14;;1113:238;;;1117:14;804:553;;;;;;;:::o;1363:343::-;1440:5;1465:65;1481:48;1522:6;1481:48;:::i;:::-;1465:65;:::i;:::-;1456:74;;1553:6;1546:5;1539:21;1591:4;1584:5;1580:16;1629:3;1620:6;1615:3;1611:16;1608:25;1605:2;;;1646:1;1643;1636:12;1605:2;1659:41;1693:6;1688:3;1683;1659:41;:::i;:::-;1446:260;;;;;;:::o;1712:345::-;1790:5;1815:66;1831:49;1873:6;1831:49;:::i;:::-;1815:66;:::i;:::-;1806:75;;1904:6;1897:5;1890:21;1942:4;1935:5;1931:16;1980:3;1971:6;1966:3;1962:16;1959:25;1956:2;;;1997:1;1994;1987:12;1956:2;2010:41;2044:6;2039:3;2034;2010:41;:::i;:::-;1796:261;;;;;;:::o;2063:139::-;2109:5;2147:6;2134:20;2125:29;;2163:33;2190:5;2163:33;:::i;:::-;2115:87;;;;:::o;2225:303::-;2296:5;2345:3;2338:4;2330:6;2326:17;2322:27;2312:2;;2363:1;2360;2353:12;2312:2;2403:6;2390:20;2428:94;2518:3;2510:6;2503:4;2495:6;2491:17;2428:94;:::i;:::-;2419:103;;2302:226;;;;;:::o;2551:303::-;2622:5;2671:3;2664:4;2656:6;2652:17;2648:27;2638:2;;2689:1;2686;2679:12;2638:2;2729:6;2716:20;2754:94;2844:3;2836:6;2829:4;2821:6;2817:17;2754:94;:::i;:::-;2745:103;;2628:226;;;;;:::o;2860:133::-;2903:5;2941:6;2928:20;2919:29;;2957:30;2981:5;2957:30;:::i;:::-;2909:84;;;;:::o;2999:139::-;3045:5;3083:6;3070:20;3061:29;;3099:33;3126:5;3099:33;:::i;:::-;3051:87;;;;:::o;3144:137::-;3189:5;3227:6;3214:20;3205:29;;3243:32;3269:5;3243:32;:::i;:::-;3195:86;;;;:::o;3287:141::-;3343:5;3374:6;3368:13;3359:22;;3390:32;3416:5;3390:32;:::i;:::-;3349:79;;;;:::o;3447:271::-;3502:5;3551:3;3544:4;3536:6;3532:17;3528:27;3518:2;;3569:1;3566;3559:12;3518:2;3609:6;3596:20;3634:78;3708:3;3700:6;3693:4;3685:6;3681:17;3634:78;:::i;:::-;3625:87;;3508:210;;;;;:::o;3738:273::-;3794:5;3843:3;3836:4;3828:6;3824:17;3820:27;3810:2;;3861:1;3858;3851:12;3810:2;3901:6;3888:20;3926:79;4001:3;3993:6;3986:4;3978:6;3974:17;3926:79;:::i;:::-;3917:88;;3800:211;;;;;:::o;4046:654::-;4117:5;4161:4;4149:9;4144:3;4140:19;4136:30;4133:2;;;4179:1;4176;4169:12;4133:2;4201:21;4217:4;4201:21;:::i;:::-;4192:30;;4278:1;4318:47;4361:3;4352:6;4341:9;4337:22;4318:47;:::i;:::-;4311:4;4304:5;4300:16;4293:73;4232:145;4433:2;4474:49;4519:3;4510:6;4499:9;4495:22;4474:49;:::i;:::-;4467:4;4460:5;4456:16;4449:75;4387:148;4591:2;4632:49;4677:3;4668:6;4657:9;4653:22;4632:49;:::i;:::-;4625:4;4618:5;4614:16;4607:75;4545:148;4123:577;;;;:::o;4706:139::-;4752:5;4790:6;4777:20;4768:29;;4806:33;4833:5;4806:33;:::i;:::-;4758:87;;;;:::o;4851:135::-;4895:5;4933:6;4920:20;4911:29;;4949:31;4974:5;4949:31;:::i;:::-;4901:85;;;;:::o;4992:262::-;5051:6;5100:2;5088:9;5079:7;5075:23;5071:32;5068:2;;;5116:1;5113;5106:12;5068:2;5159:1;5184:53;5229:7;5220:6;5209:9;5205:22;5184:53;:::i;:::-;5174:63;;5130:117;5058:196;;;;:::o;5260:407::-;5328:6;5336;5385:2;5373:9;5364:7;5360:23;5356:32;5353:2;;;5401:1;5398;5391:12;5353:2;5444:1;5469:53;5514:7;5505:6;5494:9;5490:22;5469:53;:::i;:::-;5459:63;;5415:117;5571:2;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5542:118;5343:324;;;;;:::o;5673:1241::-;5827:6;5835;5843;5851;5859;5908:3;5896:9;5887:7;5883:23;5879:33;5876:2;;;5925:1;5922;5915:12;5876:2;5968:1;5993:53;6038:7;6029:6;6018:9;6014:22;5993:53;:::i;:::-;5983:63;;5939:117;6095:2;6121:53;6166:7;6157:6;6146:9;6142:22;6121:53;:::i;:::-;6111:63;;6066:118;6251:2;6240:9;6236:18;6223:32;6282:18;6274:6;6271:30;6268:2;;;6314:1;6311;6304:12;6268:2;6342:78;6412:7;6403:6;6392:9;6388:22;6342:78;:::i;:::-;6332:88;;6194:236;6497:2;6486:9;6482:18;6469:32;6528:18;6520:6;6517:30;6514:2;;;6560:1;6557;6550:12;6514:2;6588:78;6658:7;6649:6;6638:9;6634:22;6588:78;:::i;:::-;6578:88;;6440:236;6743:3;6732:9;6728:19;6715:33;6775:18;6767:6;6764:30;6761:2;;;6807:1;6804;6797:12;6761:2;6835:62;6889:7;6880:6;6869:9;6865:22;6835:62;:::i;:::-;6825:72;;6686:221;5866:1048;;;;;;;;:::o;6920:955::-;7024:6;7032;7040;7048;7056;7105:3;7093:9;7084:7;7080:23;7076:33;7073:2;;;7122:1;7119;7112:12;7073:2;7165:1;7190:53;7235:7;7226:6;7215:9;7211:22;7190:53;:::i;:::-;7180:63;;7136:117;7292:2;7318:53;7363:7;7354:6;7343:9;7339:22;7318:53;:::i;:::-;7308:63;;7263:118;7420:2;7446:53;7491:7;7482:6;7471:9;7467:22;7446:53;:::i;:::-;7436:63;;7391:118;7548:2;7574:53;7619:7;7610:6;7599:9;7595:22;7574:53;:::i;:::-;7564:63;;7519:118;7704:3;7693:9;7689:19;7676:33;7736:18;7728:6;7725:30;7722:2;;;7768:1;7765;7758:12;7722:2;7796:62;7850:7;7841:6;7830:9;7826:22;7796:62;:::i;:::-;7786:72;;7647:221;7063:812;;;;;;;;:::o;7881:838::-;8008:6;8016;8024;8073:2;8061:9;8052:7;8048:23;8044:32;8041:2;;;8089:1;8086;8079:12;8041:2;8132:1;8157:53;8202:7;8193:6;8182:9;8178:22;8157:53;:::i;:::-;8147:63;;8103:117;8287:2;8276:9;8272:18;8259:32;8318:18;8310:6;8307:30;8304:2;;;8350:1;8347;8340:12;8304:2;8378:78;8448:7;8439:6;8428:9;8424:22;8378:78;:::i;:::-;8368:88;;8230:236;8533:2;8522:9;8518:18;8505:32;8564:18;8556:6;8553:30;8550:2;;;8596:1;8593;8586:12;8550:2;8624:78;8694:7;8685:6;8674:9;8670:22;8624:78;:::i;:::-;8614:88;;8476:236;8031:688;;;;;:::o;8725:401::-;8790:6;8798;8847:2;8835:9;8826:7;8822:23;8818:32;8815:2;;;8863:1;8860;8853:12;8815:2;8906:1;8931:53;8976:7;8967:6;8956:9;8952:22;8931:53;:::i;:::-;8921:63;;8877:117;9033:2;9059:50;9101:7;9092:6;9081:9;9077:22;9059:50;:::i;:::-;9049:60;;9004:115;8805:321;;;;;:::o;9132:407::-;9200:6;9208;9257:2;9245:9;9236:7;9232:23;9228:32;9225:2;;;9273:1;9270;9263:12;9225:2;9316:1;9341:53;9386:7;9377:6;9366:9;9362:22;9341:53;:::i;:::-;9331:63;;9287:117;9443:2;9469:53;9514:7;9505:6;9494:9;9490:22;9469:53;:::i;:::-;9459:63;;9414:118;9215:324;;;;;:::o;9545:693::-;9663:6;9671;9720:2;9708:9;9699:7;9695:23;9691:32;9688:2;;;9736:1;9733;9726:12;9688:2;9807:1;9796:9;9792:17;9779:31;9837:18;9829:6;9826:30;9823:2;;;9869:1;9866;9859:12;9823:2;9897:78;9967:7;9958:6;9947:9;9943:22;9897:78;:::i;:::-;9887:88;;9750:235;10052:2;10041:9;10037:18;10024:32;10083:18;10075:6;10072:30;10069:2;;;10115:1;10112;10105:12;10069:2;10143:78;10213:7;10204:6;10193:9;10189:22;10143:78;:::i;:::-;10133:88;;9995:236;9678:560;;;;;:::o;10244:260::-;10302:6;10351:2;10339:9;10330:7;10326:23;10322:32;10319:2;;;10367:1;10364;10357:12;10319:2;10410:1;10435:52;10479:7;10470:6;10459:9;10455:22;10435:52;:::i;:::-;10425:62;;10381:116;10309:195;;;;:::o;10510:282::-;10579:6;10628:2;10616:9;10607:7;10603:23;10599:32;10596:2;;;10644:1;10641;10634:12;10596:2;10687:1;10712:63;10767:7;10758:6;10747:9;10743:22;10712:63;:::i;:::-;10702:73;;10658:127;10586:206;;;;:::o;10798:375::-;10867:6;10916:2;10904:9;10895:7;10891:23;10887:32;10884:2;;;10932:1;10929;10922:12;10884:2;11003:1;10992:9;10988:17;10975:31;11033:18;11025:6;11022:30;11019:2;;;11065:1;11062;11055:12;11019:2;11093:63;11148:7;11139:6;11128:9;11124:22;11093:63;:::i;:::-;11083:73;;10946:220;10874:299;;;;:::o;11179:855::-;11297:6;11305;11313;11321;11370:3;11358:9;11349:7;11345:23;11341:33;11338:2;;;11387:1;11384;11377:12;11338:2;11458:1;11447:9;11443:17;11430:31;11488:18;11480:6;11477:30;11474:2;;;11520:1;11517;11510:12;11474:2;11548:63;11603:7;11594:6;11583:9;11579:22;11548:63;:::i;:::-;11538:73;;11401:220;11660:2;11686:53;11731:7;11722:6;11711:9;11707:22;11686:53;:::i;:::-;11676:63;;11631:118;11788:2;11814:53;11859:7;11850:6;11839:9;11835:22;11814:53;:::i;:::-;11804:63;;11759:118;11916:2;11942:75;12009:7;12000:6;11989:9;11985:22;11942:75;:::i;:::-;11932:85;;11887:140;11328:706;;;;;;;:::o;12040:262::-;12099:6;12148:2;12136:9;12127:7;12123:23;12119:32;12116:2;;;12164:1;12161;12154:12;12116:2;12207:1;12232:53;12277:7;12268:6;12257:9;12253:22;12232:53;:::i;:::-;12222:63;;12178:117;12106:196;;;;:::o;12308:407::-;12376:6;12384;12433:2;12421:9;12412:7;12408:23;12404:32;12401:2;;;12449:1;12446;12439:12;12401:2;12492:1;12517:53;12562:7;12553:6;12542:9;12538:22;12517:53;:::i;:::-;12507:63;;12463:117;12619:2;12645:53;12690:7;12681:6;12670:9;12666:22;12645:53;:::i;:::-;12635:63;;12590:118;12391:324;;;;;:::o;12721:179::-;12790:10;12811:46;12853:3;12845:6;12811:46;:::i;:::-;12889:4;12884:3;12880:14;12866:28;;12801:99;;;;:::o;12906:118::-;12993:24;13011:5;12993:24;:::i;:::-;12988:3;12981:37;12971:53;;:::o;13060:732::-;13179:3;13208:54;13256:5;13208:54;:::i;:::-;13278:86;13357:6;13352:3;13278:86;:::i;:::-;13271:93;;13388:56;13438:5;13388:56;:::i;:::-;13467:7;13498:1;13483:284;13508:6;13505:1;13502:13;13483:284;;;13584:6;13578:13;13611:63;13670:3;13655:13;13611:63;:::i;:::-;13604:70;;13697:60;13750:6;13697:60;:::i;:::-;13687:70;;13543:224;13530:1;13527;13523:9;13518:14;;13483:284;;;13487:14;13783:3;13776:10;;13184:608;;;;;;;:::o;13798:109::-;13879:21;13894:5;13879:21;:::i;:::-;13874:3;13867:34;13857:50;;:::o;13913:118::-;14000:24;14018:5;14000:24;:::i;:::-;13995:3;13988:37;13978:53;;:::o;14037:157::-;14142:45;14162:24;14180:5;14162:24;:::i;:::-;14142:45;:::i;:::-;14137:3;14130:58;14120:74;;:::o;14200:360::-;14286:3;14314:38;14346:5;14314:38;:::i;:::-;14368:70;14431:6;14426:3;14368:70;:::i;:::-;14361:77;;14447:52;14492:6;14487:3;14480:4;14473:5;14469:16;14447:52;:::i;:::-;14524:29;14546:6;14524:29;:::i;:::-;14519:3;14515:39;14508:46;;14290:270;;;;;:::o;14566:206::-;14689:76;14709:55;14758:5;14709:55;:::i;:::-;14689:76;:::i;:::-;14684:3;14677:89;14667:105;;:::o;14778:364::-;14866:3;14894:39;14927:5;14894:39;:::i;:::-;14949:71;15013:6;15008:3;14949:71;:::i;:::-;14942:78;;15029:52;15074:6;15069:3;15062:4;15055:5;15051:16;15029:52;:::i;:::-;15106:29;15128:6;15106:29;:::i;:::-;15101:3;15097:39;15090:46;;14870:272;;;;;:::o;15148:377::-;15254:3;15282:39;15315:5;15282:39;:::i;:::-;15337:89;15419:6;15414:3;15337:89;:::i;:::-;15330:96;;15435:52;15480:6;15475:3;15468:4;15461:5;15457:16;15435:52;:::i;:::-;15512:6;15507:3;15503:16;15496:23;;15258:267;;;;;:::o;15531:366::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15677:220;;;:::o;15903:366::-;16045:3;16066:67;16130:2;16125:3;16066:67;:::i;:::-;16059:74;;16142:93;16231:3;16142:93;:::i;:::-;16260:2;16255:3;16251:12;16244:19;;16049:220;;;:::o;16275:402::-;16435:3;16456:85;16538:2;16533:3;16456:85;:::i;:::-;16449:92;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16439:238;;;:::o;16683:366::-;16825:3;16846:67;16910:2;16905:3;16846:67;:::i;:::-;16839:74;;16922:93;17011:3;16922:93;:::i;:::-;17040:2;17035:3;17031:12;17024:19;;16829:220;;;:::o;17055:366::-;17197:3;17218:67;17282:2;17277:3;17218:67;:::i;:::-;17211:74;;17294:93;17383:3;17294:93;:::i;:::-;17412:2;17407:3;17403:12;17396:19;;17201:220;;;:::o;17427:366::-;17569:3;17590:67;17654:2;17649:3;17590:67;:::i;:::-;17583:74;;17666:93;17755:3;17666:93;:::i;:::-;17784:2;17779:3;17775:12;17768:19;;17573:220;;;:::o;17799:366::-;17941:3;17962:67;18026:2;18021:3;17962:67;:::i;:::-;17955:74;;18038:93;18127:3;18038:93;:::i;:::-;18156:2;18151:3;18147:12;18140:19;;17945:220;;;:::o;18171:366::-;18313:3;18334:67;18398:2;18393:3;18334:67;:::i;:::-;18327:74;;18410:93;18499:3;18410:93;:::i;:::-;18528:2;18523:3;18519:12;18512:19;;18317:220;;;:::o;18543:366::-;18685:3;18706:67;18770:2;18765:3;18706:67;:::i;:::-;18699:74;;18782:93;18871:3;18782:93;:::i;:::-;18900:2;18895:3;18891:12;18884:19;;18689:220;;;:::o;18915:366::-;19057:3;19078:67;19142:2;19137:3;19078:67;:::i;:::-;19071:74;;19154:93;19243:3;19154:93;:::i;:::-;19272:2;19267:3;19263:12;19256:19;;19061:220;;;:::o;19287:366::-;19429:3;19450:67;19514:2;19509:3;19450:67;:::i;:::-;19443:74;;19526:93;19615:3;19526:93;:::i;:::-;19644:2;19639:3;19635:12;19628:19;;19433:220;;;:::o;19659:366::-;19801:3;19822:67;19886:2;19881:3;19822:67;:::i;:::-;19815:74;;19898:93;19987:3;19898:93;:::i;:::-;20016:2;20011:3;20007:12;20000:19;;19805:220;;;:::o;20031:366::-;20173:3;20194:67;20258:2;20253:3;20194:67;:::i;:::-;20187:74;;20270:93;20359:3;20270:93;:::i;:::-;20388:2;20383:3;20379:12;20372:19;;20177:220;;;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20549:220;;;:::o;20775:366::-;20917:3;20938:67;21002:2;20997:3;20938:67;:::i;:::-;20931:74;;21014:93;21103:3;21014:93;:::i;:::-;21132:2;21127:3;21123:12;21116:19;;20921:220;;;:::o;21147:366::-;21289:3;21310:67;21374:2;21369:3;21310:67;:::i;:::-;21303:74;;21386:93;21475:3;21386:93;:::i;:::-;21504:2;21499:3;21495:12;21488:19;;21293:220;;;:::o;21519:366::-;21661:3;21682:67;21746:2;21741:3;21682:67;:::i;:::-;21675:74;;21758:93;21847:3;21758:93;:::i;:::-;21876:2;21871:3;21867:12;21860:19;;21665:220;;;:::o;21891:366::-;22033:3;22054:67;22118:2;22113:3;22054:67;:::i;:::-;22047:74;;22130:93;22219:3;22130:93;:::i;:::-;22248:2;22243:3;22239:12;22232:19;;22037:220;;;:::o;22263:366::-;22405:3;22426:67;22490:2;22485:3;22426:67;:::i;:::-;22419:74;;22502:93;22591:3;22502:93;:::i;:::-;22620:2;22615:3;22611:12;22604:19;;22409:220;;;:::o;22635:366::-;22777:3;22798:67;22862:2;22857:3;22798:67;:::i;:::-;22791:74;;22874:93;22963:3;22874:93;:::i;:::-;22992:2;22987:3;22983:12;22976:19;;22781:220;;;:::o;23007:366::-;23149:3;23170:67;23234:2;23229:3;23170:67;:::i;:::-;23163:74;;23246:93;23335:3;23246:93;:::i;:::-;23364:2;23359:3;23355:12;23348:19;;23153:220;;;:::o;23379:366::-;23521:3;23542:67;23606:2;23601:3;23542:67;:::i;:::-;23535:74;;23618:93;23707:3;23618:93;:::i;:::-;23736:2;23731:3;23727:12;23720:19;;23525:220;;;:::o;23751:108::-;23828:24;23846:5;23828:24;:::i;:::-;23823:3;23816:37;23806:53;;:::o;23865:118::-;23952:24;23970:5;23952:24;:::i;:::-;23947:3;23940:37;23930:53;;:::o;23989:112::-;24072:22;24088:5;24072:22;:::i;:::-;24067:3;24060:35;24050:51;;:::o;24107:452::-;24285:3;24300:93;24389:3;24380:6;24300:93;:::i;:::-;24418:2;24413:3;24409:12;24402:19;;24438:95;24529:3;24520:6;24438:95;:::i;:::-;24431:102;;24550:3;24543:10;;24289:270;;;;;:::o;24565:435::-;24745:3;24767:95;24858:3;24849:6;24767:95;:::i;:::-;24760:102;;24879:95;24970:3;24961:6;24879:95;:::i;:::-;24872:102;;24991:3;24984:10;;24749:251;;;;;:::o;25006:522::-;25219:3;25241:148;25385:3;25241:148;:::i;:::-;25234:155;;25399:75;25470:3;25461:6;25399:75;:::i;:::-;25499:2;25494:3;25490:12;25483:19;;25519:3;25512:10;;25223:305;;;;:::o;25534:222::-;25627:4;25665:2;25654:9;25650:18;25642:26;;25678:71;25746:1;25735:9;25731:17;25722:6;25678:71;:::i;:::-;25632:124;;;;:::o;25762:1053::-;26085:4;26123:3;26112:9;26108:19;26100:27;;26137:71;26205:1;26194:9;26190:17;26181:6;26137:71;:::i;:::-;26218:72;26286:2;26275:9;26271:18;26262:6;26218:72;:::i;:::-;26337:9;26331:4;26327:20;26322:2;26311:9;26307:18;26300:48;26365:108;26468:4;26459:6;26365:108;:::i;:::-;26357:116;;26520:9;26514:4;26510:20;26505:2;26494:9;26490:18;26483:48;26548:108;26651:4;26642:6;26548:108;:::i;:::-;26540:116;;26704:9;26698:4;26694:20;26688:3;26677:9;26673:19;26666:49;26732:76;26803:4;26794:6;26732:76;:::i;:::-;26724:84;;26090:725;;;;;;;;:::o;26821:751::-;27044:4;27082:3;27071:9;27067:19;27059:27;;27096:71;27164:1;27153:9;27149:17;27140:6;27096:71;:::i;:::-;27177:72;27245:2;27234:9;27230:18;27221:6;27177:72;:::i;:::-;27259;27327:2;27316:9;27312:18;27303:6;27259:72;:::i;:::-;27341;27409:2;27398:9;27394:18;27385:6;27341:72;:::i;:::-;27461:9;27455:4;27451:20;27445:3;27434:9;27430:19;27423:49;27489:76;27560:4;27551:6;27489:76;:::i;:::-;27481:84;;27049:523;;;;;;;;:::o;27578:373::-;27721:4;27759:2;27748:9;27744:18;27736:26;;27808:9;27802:4;27798:20;27794:1;27783:9;27779:17;27772:47;27836:108;27939:4;27930:6;27836:108;:::i;:::-;27828:116;;27726:225;;;;:::o;27957:634::-;28178:4;28216:2;28205:9;28201:18;28193:26;;28265:9;28259:4;28255:20;28251:1;28240:9;28236:17;28229:47;28293:108;28396:4;28387:6;28293:108;:::i;:::-;28285:116;;28448:9;28442:4;28438:20;28433:2;28422:9;28418:18;28411:48;28476:108;28579:4;28570:6;28476:108;:::i;:::-;28468:116;;28183:408;;;;;:::o;28597:210::-;28684:4;28722:2;28711:9;28707:18;28699:26;;28735:65;28797:1;28786:9;28782:17;28773:6;28735:65;:::i;:::-;28689:118;;;;:::o;28813:545::-;28986:4;29024:3;29013:9;29009:19;29001:27;;29038:71;29106:1;29095:9;29091:17;29082:6;29038:71;:::i;:::-;29119:68;29183:2;29172:9;29168:18;29159:6;29119:68;:::i;:::-;29197:72;29265:2;29254:9;29250:18;29241:6;29197:72;:::i;:::-;29279;29347:2;29336:9;29332:18;29323:6;29279:72;:::i;:::-;28991:367;;;;;;;:::o;29364:313::-;29477:4;29515:2;29504:9;29500:18;29492:26;;29564:9;29558:4;29554:20;29550:1;29539:9;29535:17;29528:47;29592:78;29665:4;29656:6;29592:78;:::i;:::-;29584:86;;29482:195;;;;:::o;29683:419::-;29849:4;29887:2;29876:9;29872:18;29864:26;;29936:9;29930:4;29926:20;29922:1;29911:9;29907:17;29900:47;29964:131;30090:4;29964:131;:::i;:::-;29956:139;;29854:248;;;:::o;30108:419::-;30274:4;30312:2;30301:9;30297:18;30289:26;;30361:9;30355:4;30351:20;30347:1;30336:9;30332:17;30325:47;30389:131;30515:4;30389:131;:::i;:::-;30381:139;;30279:248;;;:::o;30533:419::-;30699:4;30737:2;30726:9;30722:18;30714:26;;30786:9;30780:4;30776:20;30772:1;30761:9;30757:17;30750:47;30814:131;30940:4;30814:131;:::i;:::-;30806:139;;30704:248;;;:::o;30958:419::-;31124:4;31162:2;31151:9;31147:18;31139:26;;31211:9;31205:4;31201:20;31197:1;31186:9;31182:17;31175:47;31239:131;31365:4;31239:131;:::i;:::-;31231:139;;31129:248;;;:::o;31383:419::-;31549:4;31587:2;31576:9;31572:18;31564:26;;31636:9;31630:4;31626:20;31622:1;31611:9;31607:17;31600:47;31664:131;31790:4;31664:131;:::i;:::-;31656:139;;31554:248;;;:::o;31808:419::-;31974:4;32012:2;32001:9;31997:18;31989:26;;32061:9;32055:4;32051:20;32047:1;32036:9;32032:17;32025:47;32089:131;32215:4;32089:131;:::i;:::-;32081:139;;31979:248;;;:::o;32233:419::-;32399:4;32437:2;32426:9;32422:18;32414:26;;32486:9;32480:4;32476:20;32472:1;32461:9;32457:17;32450:47;32514:131;32640:4;32514:131;:::i;:::-;32506:139;;32404:248;;;:::o;32658:419::-;32824:4;32862:2;32851:9;32847:18;32839:26;;32911:9;32905:4;32901:20;32897:1;32886:9;32882:17;32875:47;32939:131;33065:4;32939:131;:::i;:::-;32931:139;;32829:248;;;:::o;33083:419::-;33249:4;33287:2;33276:9;33272:18;33264:26;;33336:9;33330:4;33326:20;33322:1;33311:9;33307:17;33300:47;33364:131;33490:4;33364:131;:::i;:::-;33356:139;;33254:248;;;:::o;33508:419::-;33674:4;33712:2;33701:9;33697:18;33689:26;;33761:9;33755:4;33751:20;33747:1;33736:9;33732:17;33725:47;33789:131;33915:4;33789:131;:::i;:::-;33781:139;;33679:248;;;:::o;33933:419::-;34099:4;34137:2;34126:9;34122:18;34114:26;;34186:9;34180:4;34176:20;34172:1;34161:9;34157:17;34150:47;34214:131;34340:4;34214:131;:::i;:::-;34206:139;;34104:248;;;:::o;34358:419::-;34524:4;34562:2;34551:9;34547:18;34539:26;;34611:9;34605:4;34601:20;34597:1;34586:9;34582:17;34575:47;34639:131;34765:4;34639:131;:::i;:::-;34631:139;;34529:248;;;:::o;34783:419::-;34949:4;34987:2;34976:9;34972:18;34964:26;;35036:9;35030:4;35026:20;35022:1;35011:9;35007:17;35000:47;35064:131;35190:4;35064:131;:::i;:::-;35056:139;;34954:248;;;:::o;35208:419::-;35374:4;35412:2;35401:9;35397:18;35389:26;;35461:9;35455:4;35451:20;35447:1;35436:9;35432:17;35425:47;35489:131;35615:4;35489:131;:::i;:::-;35481:139;;35379:248;;;:::o;35633:419::-;35799:4;35837:2;35826:9;35822:18;35814:26;;35886:9;35880:4;35876:20;35872:1;35861:9;35857:17;35850:47;35914:131;36040:4;35914:131;:::i;:::-;35906:139;;35804:248;;;:::o;36058:419::-;36224:4;36262:2;36251:9;36247:18;36239:26;;36311:9;36305:4;36301:20;36297:1;36286:9;36282:17;36275:47;36339:131;36465:4;36339:131;:::i;:::-;36331:139;;36229:248;;;:::o;36483:419::-;36649:4;36687:2;36676:9;36672:18;36664:26;;36736:9;36730:4;36726:20;36722:1;36711:9;36707:17;36700:47;36764:131;36890:4;36764:131;:::i;:::-;36756:139;;36654:248;;;:::o;36908:419::-;37074:4;37112:2;37101:9;37097:18;37089:26;;37161:9;37155:4;37151:20;37147:1;37136:9;37132:17;37125:47;37189:131;37315:4;37189:131;:::i;:::-;37181:139;;37079:248;;;:::o;37333:419::-;37499:4;37537:2;37526:9;37522:18;37514:26;;37586:9;37580:4;37576:20;37572:1;37561:9;37557:17;37550:47;37614:131;37740:4;37614:131;:::i;:::-;37606:139;;37504:248;;;:::o;37758:419::-;37924:4;37962:2;37951:9;37947:18;37939:26;;38011:9;38005:4;38001:20;37997:1;37986:9;37982:17;37975:47;38039:131;38165:4;38039:131;:::i;:::-;38031:139;;37929:248;;;:::o;38183:419::-;38349:4;38387:2;38376:9;38372:18;38364:26;;38436:9;38430:4;38426:20;38422:1;38411:9;38407:17;38400:47;38464:131;38590:4;38464:131;:::i;:::-;38456:139;;38354:248;;;:::o;38608:222::-;38701:4;38739:2;38728:9;38724:18;38716:26;;38752:71;38820:1;38809:9;38805:17;38796:6;38752:71;:::i;:::-;38706:124;;;;:::o;38836:332::-;38957:4;38995:2;38984:9;38980:18;38972:26;;39008:71;39076:1;39065:9;39061:17;39052:6;39008:71;:::i;:::-;39089:72;39157:2;39146:9;39142:18;39133:6;39089:72;:::i;:::-;38962:206;;;;;:::o;39174:129::-;39208:6;39235:20;;:::i;:::-;39225:30;;39264:33;39292:4;39284:6;39264:33;:::i;:::-;39215:88;;;:::o;39309:75::-;39342:6;39375:2;39369:9;39359:19;;39349:35;:::o;39390:311::-;39467:4;39557:18;39549:6;39546:30;39543:2;;;39579:18;;:::i;:::-;39543:2;39629:4;39621:6;39617:17;39609:25;;39689:4;39683;39679:15;39671:23;;39472:229;;;:::o;39707:311::-;39784:4;39874:18;39866:6;39863:30;39860:2;;;39896:18;;:::i;:::-;39860:2;39946:4;39938:6;39934:17;39926:25;;40006:4;40000;39996:15;39988:23;;39789:229;;;:::o;40024:307::-;40085:4;40175:18;40167:6;40164:30;40161:2;;;40197:18;;:::i;:::-;40161:2;40235:29;40257:6;40235:29;:::i;:::-;40227:37;;40319:4;40313;40309:15;40301:23;;40090:241;;;:::o;40337:308::-;40399:4;40489:18;40481:6;40478:30;40475:2;;;40511:18;;:::i;:::-;40475:2;40549:29;40571:6;40549:29;:::i;:::-;40541:37;;40633:4;40627;40623:15;40615:23;;40404:241;;;:::o;40651:132::-;40718:4;40741:3;40733:11;;40771:4;40766:3;40762:14;40754:22;;40723:60;;;:::o;40789:114::-;40856:6;40890:5;40884:12;40874:22;;40863:40;;;:::o;40909:98::-;40960:6;40994:5;40988:12;40978:22;;40967:40;;;:::o;41013:99::-;41065:6;41099:5;41093:12;41083:22;;41072:40;;;:::o;41118:113::-;41188:4;41220;41215:3;41211:14;41203:22;;41193:38;;;:::o;41237:184::-;41336:11;41370:6;41365:3;41358:19;41410:4;41405:3;41401:14;41386:29;;41348:73;;;;:::o;41427:168::-;41510:11;41544:6;41539:3;41532:19;41584:4;41579:3;41575:14;41560:29;;41522:73;;;;:::o;41601:169::-;41685:11;41719:6;41714:3;41707:19;41759:4;41754:3;41750:14;41735:29;;41697:73;;;;:::o;41776:148::-;41878:11;41915:3;41900:18;;41890:34;;;;:::o;41930:305::-;41970:3;41989:20;42007:1;41989:20;:::i;:::-;41984:25;;42023:20;42041:1;42023:20;:::i;:::-;42018:25;;42177:1;42109:66;42105:74;42102:1;42099:81;42096:2;;;42183:18;;:::i;:::-;42096:2;42227:1;42224;42220:9;42213:16;;41974:261;;;;:::o;42241:185::-;42281:1;42298:20;42316:1;42298:20;:::i;:::-;42293:25;;42332:20;42350:1;42332:20;:::i;:::-;42327:25;;42371:1;42361:2;;42376:18;;:::i;:::-;42361:2;42418:1;42415;42411:9;42406:14;;42283:143;;;;:::o;42432:191::-;42472:4;42492:20;42510:1;42492:20;:::i;:::-;42487:25;;42526:20;42544:1;42526:20;:::i;:::-;42521:25;;42565:1;42562;42559:8;42556:2;;;42570:18;;:::i;:::-;42556:2;42615:1;42612;42608:9;42600:17;;42477:146;;;;:::o;42629:96::-;42666:7;42695:24;42713:5;42695:24;:::i;:::-;42684:35;;42674:51;;;:::o;42731:90::-;42765:7;42808:5;42801:13;42794:21;42783:32;;42773:48;;;:::o;42827:77::-;42864:7;42893:5;42882:16;;42872:32;;;:::o;42910:149::-;42946:7;42986:66;42979:5;42975:78;42964:89;;42954:105;;;:::o;43065:126::-;43102:7;43142:42;43135:5;43131:54;43120:65;;43110:81;;;:::o;43197:77::-;43234:7;43263:5;43252:16;;43242:32;;;:::o;43280:86::-;43315:7;43355:4;43348:5;43344:16;43333:27;;43323:43;;;:::o;43372:162::-;43440:9;43473:55;43522:5;43473:55;:::i;:::-;43460:68;;43450:84;;;:::o;43540:131::-;43608:9;43641:24;43659:5;43641:24;:::i;:::-;43628:37;;43618:53;;;:::o;43677:154::-;43761:6;43756:3;43751;43738:30;43823:1;43814:6;43809:3;43805:16;43798:27;43728:103;;;:::o;43837:307::-;43905:1;43915:113;43929:6;43926:1;43923:13;43915:113;;;44014:1;44009:3;44005:11;43999:18;43995:1;43990:3;43986:11;43979:39;43951:2;43948:1;43944:10;43939:15;;43915:113;;;44046:6;44043:1;44040:13;44037:2;;;44126:1;44117:6;44112:3;44108:16;44101:27;44037:2;43886:258;;;;:::o;44150:171::-;44189:3;44212:24;44230:5;44212:24;:::i;:::-;44203:33;;44258:4;44251:5;44248:15;44245:2;;;44266:18;;:::i;:::-;44245:2;44313:1;44306:5;44302:13;44295:20;;44193:128;;;:::o;44327:320::-;44371:6;44408:1;44402:4;44398:12;44388:22;;44455:1;44449:4;44445:12;44476:18;44466:2;;44532:4;44524:6;44520:17;44510:27;;44466:2;44594;44586:6;44583:14;44563:18;44560:38;44557:2;;;44613:18;;:::i;:::-;44557:2;44378:269;;;;:::o;44653:281::-;44736:27;44758:4;44736:27;:::i;:::-;44728:6;44724:40;44866:6;44854:10;44851:22;44830:18;44818:10;44815:34;44812:62;44809:2;;;44877:18;;:::i;:::-;44809:2;44917:10;44913:2;44906:22;44696:238;;;:::o;44940:233::-;44979:3;45002:24;45020:5;45002:24;:::i;:::-;44993:33;;45048:66;45041:5;45038:77;45035:2;;;45118:18;;:::i;:::-;45035:2;45165:1;45158:5;45154:13;45147:20;;44983:190;;;:::o;45179:100::-;45218:7;45247:26;45267:5;45247:26;:::i;:::-;45236:37;;45226:53;;;:::o;45285:79::-;45324:7;45353:5;45342:16;;45332:32;;;:::o;45370:94::-;45409:7;45438:20;45452:5;45438:20;:::i;:::-;45427:31;;45417:47;;;:::o;45470:176::-;45502:1;45519:20;45537:1;45519:20;:::i;:::-;45514:25;;45553:20;45571:1;45553:20;:::i;:::-;45548:25;;45592:1;45582:2;;45597:18;;:::i;:::-;45582:2;45638:1;45635;45631:9;45626:14;;45504:142;;;;:::o;45652:180::-;45700:77;45697:1;45690:88;45797:4;45794:1;45787:15;45821:4;45818:1;45811:15;45838:180;45886:77;45883:1;45876:88;45983:4;45980:1;45973:15;46007:4;46004:1;45997:15;46024:180;46072:77;46069:1;46062:88;46169:4;46166:1;46159:15;46193:4;46190:1;46183:15;46210:180;46258:77;46255:1;46248:88;46355:4;46352:1;46345:15;46379:4;46376:1;46369:15;46396:183;46431:3;46469:1;46451:16;46448:23;46445:2;;;46507:1;46504;46501;46486:23;46529:34;46560:1;46554:8;46529:34;:::i;:::-;46522:41;;46445:2;46435:144;:::o;46585:102::-;46626:6;46677:2;46673:7;46668:2;46661:5;46657:14;46653:28;46643:38;;46633:54;;;:::o;46693:94::-;46726:8;46774:5;46770:2;46766:14;46745:35;;46735:52;;;:::o;46793:106::-;46837:8;46886:5;46881:3;46877:15;46856:36;;46846:53;;;:::o;46905:239::-;47045:34;47041:1;47033:6;47029:14;47022:58;47114:22;47109:2;47101:6;47097:15;47090:47;47011:133;:::o;47150:227::-;47290:34;47286:1;47278:6;47274:14;47267:58;47359:10;47354:2;47346:6;47342:15;47335:35;47256:121;:::o;47383:214::-;47523:66;47519:1;47511:6;47507:14;47500:90;47489:108;:::o;47603:230::-;47743:34;47739:1;47731:6;47727:14;47720:58;47812:13;47807:2;47799:6;47795:15;47788:38;47709:124;:::o;47839:236::-;47979:34;47975:1;47967:6;47963:14;47956:58;48048:19;48043:2;48035:6;48031:15;48024:44;47945:130;:::o;48081:225::-;48221:34;48217:1;48209:6;48205:14;48198:58;48290:8;48285:2;48277:6;48273:15;48266:33;48187:119;:::o;48312:177::-;48452:29;48448:1;48440:6;48436:14;48429:53;48418:71;:::o;48495:228::-;48635:34;48631:1;48623:6;48619:14;48612:58;48704:11;48699:2;48691:6;48687:15;48680:36;48601:122;:::o;48729:236::-;48869:34;48865:1;48857:6;48853:14;48846:58;48938:19;48933:2;48925:6;48921:15;48914:44;48835:130;:::o;48971:224::-;49111:34;49107:1;49099:6;49095:14;49088:58;49180:7;49175:2;49167:6;49163:15;49156:32;49077:118;:::o;49201:237::-;49341:34;49337:1;49329:6;49325:14;49318:58;49410:20;49405:2;49397:6;49393:15;49386:45;49307:131;:::o;49444:180::-;49584:32;49580:1;49572:6;49568:14;49561:56;49550:74;:::o;49630:239::-;49770:34;49766:1;49758:6;49754:14;49747:58;49839:22;49834:2;49826:6;49822:15;49815:47;49736:133;:::o;49875:222::-;50015:34;50011:1;50003:6;49999:14;49992:58;50084:5;50079:2;50071:6;50067:15;50060:30;49981:116;:::o;50103:182::-;50243:34;50239:1;50231:6;50227:14;50220:58;50209:76;:::o;50291:235::-;50431:34;50427:1;50419:6;50415:14;50408:58;50500:18;50495:2;50487:6;50483:15;50476:43;50397:129;:::o;50532:175::-;50672:27;50668:1;50660:6;50656:14;50649:51;50638:69;:::o;50713:228::-;50853:34;50849:1;50841:6;50837:14;50830:58;50922:11;50917:2;50909:6;50905:15;50898:36;50819:122;:::o;50947:228::-;51087:34;51083:1;51075:6;51071:14;51064:58;51156:11;51151:2;51143:6;51139:15;51132:36;51053:122;:::o;51181:227::-;51321:34;51317:1;51309:6;51305:14;51298:58;51390:10;51385:2;51377:6;51373:15;51366:35;51287:121;:::o;51414:179::-;51554:31;51550:1;51542:6;51538:14;51531:55;51520:73;:::o;51599:167::-;51739:19;51735:1;51727:6;51723:14;51716:43;51705:61;:::o;51772:711::-;51811:3;51849:4;51831:16;51828:26;51825:2;;;51857:5;;51825:2;51886:20;;:::i;:::-;51961:1;51943:16;51939:24;51936:1;51930:4;51915:49;51994:4;51988:11;52093:16;52086:4;52078:6;52074:17;52071:39;52038:18;52030:6;52027:30;52011:113;52008:2;;;52139:5;;;;52008:2;52185:6;52179:4;52175:17;52221:3;52215:10;52248:18;52240:6;52237:30;52234:2;;;52270:5;;;;;;52234:2;52318:6;52311:4;52306:3;52302:14;52298:27;52377:1;52359:16;52355:24;52349:4;52345:35;52340:3;52337:44;52334:2;;;52384:5;;;;;;;52334:2;52401:57;52449:6;52443:4;52439:17;52431:6;52427:30;52421:4;52401:57;:::i;:::-;52474:3;52467:10;;51815:668;;;;;;;:::o;52489:122::-;52562:24;52580:5;52562:24;:::i;:::-;52555:5;52552:35;52542:2;;52601:1;52598;52591:12;52542:2;52532:79;:::o;52617:116::-;52687:21;52702:5;52687:21;:::i;:::-;52680:5;52677:32;52667:2;;52723:1;52720;52713:12;52667:2;52657:76;:::o;52739:122::-;52812:24;52830:5;52812:24;:::i;:::-;52805:5;52802:35;52792:2;;52851:1;52848;52841:12;52792:2;52782:79;:::o;52867:120::-;52939:23;52956:5;52939:23;:::i;:::-;52932:5;52929:34;52919:2;;52977:1;52974;52967:12;52919:2;52909:78;:::o;52993:122::-;53066:24;53084:5;53066:24;:::i;:::-;53059:5;53056:35;53046:2;;53105:1;53102;53095:12;53046:2;53036:79;:::o;53121:118::-;53192:22;53208:5;53192:22;:::i;:::-;53185:5;53182:33;53172:2;;53229:1;53226;53219:12;53172:2;53162:77;:::o
Swarm Source
ipfs://e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be32
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.