ERC-721
Overview
Max Total Supply
3,386 DO
Holders
623
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 DOLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Crypto
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-21 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) library Counters { struct Counter { uint256 _value; } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File contracts/ERC721A.sol contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 internal currentIndex = 0; string private _name; string private _symbol; mapping(uint256 => TokenOwnership) internal _ownerships; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function totalSupply() public view override returns (uint256) { return currentIndex; } function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), 'ERC721A: global index out of bounds'); return index; } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), 'ERC721A: owner index out of bounds'); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx = 0; address currOwnershipAddr = address(0); for (uint256 i = 0; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } revert('ERC721A: unable to get token of owner by index'); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), 'ERC721A: balance query for the zero address'); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require(owner != address(0), 'ERC721A: number minted query for the zero address'); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), 'ERC721A: owner query for nonexistent token'); for (uint256 curr = tokenId; ; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } revert('ERC721A: unable to determine the owner of token'); } function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), 'ERC721Metadata: URI query for nonexistent token'); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } function _baseURI() internal view virtual returns (string memory) { return ''; } function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, 'ERC721A: approval to current owner'); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), 'ERC721A: approve caller is not owner nor approved for all' ); _approve(to, tokenId, owner); } function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), 'ERC721A: approved query for nonexistent token'); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), 'ERC721A: approve to caller'); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public override { _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public override { safeTransferFrom(from, to, tokenId, ''); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), 'ERC721A: transfer to non ERC721Receiver implementer' ); } function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ''); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { uint256 startTokenId = currentIndex; require(to != address(0), 'ERC721A: mint to the zero address'); require(!_exists(startTokenId), 'ERC721A: token already minted'); require(quantity > 0, 'ERC721A: quantity must be greater 0'); _beforeTokenTransfers(address(0), to, startTokenId, quantity); AddressData memory addressData = _addressData[to]; _addressData[to] = AddressData( addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity) ); _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 updatedIndex = startTokenId; for (uint256 i = 0; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); require( _checkOnERC721Received(address(0), to, updatedIndex, _data), 'ERC721A: transfer to non ERC721Receiver implementer' ); updatedIndex++; } currentIndex = updatedIndex; _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require(isApprovedOrOwner, 'ERC721A: transfer caller is not owner nor approved'); require(prevOwnership.addr == from, 'ERC721A: transfer from incorrect owner'); require(to != address(0), 'ERC721A: transfer to the zero address'); _beforeTokenTransfers(from, to, tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; } _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId] = TokenOwnership(prevOwnership.addr, prevOwnership.startTimestamp); } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert('ERC721A: transfer to non ERC721Receiver implementer'); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } contract Crypto is ERC721A, Ownable { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private supply; string baseURI; string public baseExtension = ".json"; uint256 public constant MAX_PER_TX_FREE = 3; uint256 public constant MAX_PER_TX = 3; uint256 public constant FREE_MAX_SUPPLY = 4000; uint256 public cost = 0.002 ether; uint256 public maxSupply = 5555; uint256 public maxMintAmount = 20; bool public paused = true; bool public revealed = false; string public notRevealedUri; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri ) ERC721A(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } // public function mint(uint256 _amount) external payable { address _caller = _msgSender(); require(!paused, "Paused"); require(maxSupply >= totalSupply() + _amount, "Exceeds max supply"); require(_amount > 0, "No 0 mints"); require(tx.origin == _caller, "No contracts"); if(FREE_MAX_SUPPLY >= totalSupply()){ require(MAX_PER_TX_FREE >= _amount , "Excess max per free tx"); }else{ require(MAX_PER_TX >= _amount , "Excess max per paid tx"); require(_amount * cost == msg.value, "Invalid funds provided"); } _safeMint(_caller, _amount); } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } //only owner function reveal() public onlyOwner { revealed = true; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function pause(bool _state) public onlyOwner { paused = _state; } function withdraw() public onlyOwner { (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os, "Withdraw failed!"); } function _mintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 1; i <= _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); } } }
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":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX_FREE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600080556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a908051906020019062000055929190620003a5565b5066071afd498d0000600b556115b3600c556014600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550348015620000af57600080fd5b50604051620054a9380380620054a98339818101604052810190620000d59190620005f2565b83838160019080519060200190620000ef929190620003a5565b50806002908051906020019062000108929190620003a5565b5050506200012b6200011f6200015760201b60201c565b6200015f60201b60201c565b6200013c826200022560201b60201c565b6200014d81620002d060201b60201c565b50505050620007c7565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002356200015760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200025b6200037b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ab9062000741565b60405180910390fd5b8060099080519060200190620002cc929190620003a5565b5050565b620002e06200015760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003066200037b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200035f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003569062000741565b60405180910390fd5b80600f908051906020019062000377929190620003a5565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003b39062000792565b90600052602060002090601f016020900481019282620003d7576000855562000423565b82601f10620003f257805160ff191683800117855562000423565b8280016001018555821562000423579182015b828111156200042257825182559160200191906001019062000405565b5b50905062000432919062000436565b5090565b5b808211156200045157600081600090555060010162000437565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004be8262000473565b810181811067ffffffffffffffff82111715620004e057620004df62000484565b5b80604052505050565b6000620004f562000455565b9050620005038282620004b3565b919050565b600067ffffffffffffffff82111562000526576200052562000484565b5b620005318262000473565b9050602081019050919050565b60005b838110156200055e57808201518184015260208101905062000541565b838111156200056e576000848401525b50505050565b60006200058b620005858462000508565b620004e9565b905082815260208101848484011115620005aa57620005a96200046e565b5b620005b78482856200053e565b509392505050565b600082601f830112620005d757620005d662000469565b5b8151620005e984826020860162000574565b91505092915050565b600080600080608085870312156200060f576200060e6200045f565b5b600085015167ffffffffffffffff81111562000630576200062f62000464565b5b6200063e87828801620005bf565b945050602085015167ffffffffffffffff81111562000662576200066162000464565b5b6200067087828801620005bf565b935050604085015167ffffffffffffffff81111562000694576200069362000464565b5b620006a287828801620005bf565b925050606085015167ffffffffffffffff811115620006c657620006c562000464565b5b620006d487828801620005bf565b91505092959194509250565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000729602083620006e0565b91506200073682620006f1565b602082019050919050565b600060208201905081810360008301526200075c816200071a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007ab57607f821691505b602082108103620007c157620007c062000763565b5b50919050565b614cd280620007d76000396000f3fe6080604052600436106102305760003560e01c80635c975abb1161012e578063a475b5dd116100ab578063da3ef23f1161006f578063da3ef23f1461081e578063e985e9c514610847578063f2c4ce1e14610884578063f2fde38b146108ad578063f43a22dc146108d657610230565b8063a475b5dd1461074b578063b88d4fde14610762578063c66828621461078b578063c87b56dd146107b6578063d5abeb01146107f357610230565b80638069876d116100f25780638069876d146106855780638da5cb5b146106b057806395d89b41146106db578063a0712d6814610706578063a22cb4651461072257610230565b80635c975abb146105a05780636352211e146105cb57806370a0823114610608578063715018a6146106455780637f00c7a61461065c57610230565b806323b872dd116101bc57806344a0d68a1161018057806344a0d68a146104bb578063463fff79146104e45780634f6ccce71461050f578063518302271461054c57806355f804b31461057757610230565b806323b872dd146103d85780632f745c59146104015780633ccfd60b1461043e57806342842e0e14610455578063438b63001461047e57610230565b8063081c8c4411610203578063081c8c4414610303578063095ea7b31461032e57806313faede61461035757806318160ddd14610382578063239c70ae146103ad57610230565b806301ffc9a71461023557806302329a291461027257806306fdde031461029b578063081812fc146102c6575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061325a565b610901565b60405161026991906132a2565b60405180910390f35b34801561027e57600080fd5b50610299600480360381019061029491906132e9565b610a4b565b005b3480156102a757600080fd5b506102b0610ae4565b6040516102bd91906133af565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190613407565b610b76565b6040516102fa9190613475565b60405180910390f35b34801561030f57600080fd5b50610318610bfb565b60405161032591906133af565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906134bc565b610c89565b005b34801561036357600080fd5b5061036c610da1565b604051610379919061350b565b60405180910390f35b34801561038e57600080fd5b50610397610da7565b6040516103a4919061350b565b60405180910390f35b3480156103b957600080fd5b506103c2610db0565b6040516103cf919061350b565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190613526565b610db6565b005b34801561040d57600080fd5b50610428600480360381019061042391906134bc565b610dc6565b604051610435919061350b565b60405180910390f35b34801561044a57600080fd5b50610453610fc2565b005b34801561046157600080fd5b5061047c60048036038101906104779190613526565b6110f4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190613579565b611114565b6040516104b29190613664565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613407565b6111c2565b005b3480156104f057600080fd5b506104f9611248565b604051610506919061350b565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613407565b61124d565b604051610543919061350b565b60405180910390f35b34801561055857600080fd5b506105616112a0565b60405161056e91906132a2565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906137bb565b6112b3565b005b3480156105ac57600080fd5b506105b5611349565b6040516105c291906132a2565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613407565b61135c565b6040516105ff9190613475565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613579565b611372565b60405161063c919061350b565b60405180910390f35b34801561065157600080fd5b5061065a61145a565b005b34801561066857600080fd5b50610683600480360381019061067e9190613407565b6114e2565b005b34801561069157600080fd5b5061069a611568565b6040516106a7919061350b565b60405180910390f35b3480156106bc57600080fd5b506106c561156e565b6040516106d29190613475565b60405180910390f35b3480156106e757600080fd5b506106f0611598565b6040516106fd91906133af565b60405180910390f35b610720600480360381019061071b9190613407565b61162a565b005b34801561072e57600080fd5b5061074960048036038101906107449190613804565b611889565b005b34801561075757600080fd5b50610760611a09565b005b34801561076e57600080fd5b50610789600480360381019061078491906138e5565b611aa2565b005b34801561079757600080fd5b506107a0611afe565b6040516107ad91906133af565b60405180910390f35b3480156107c257600080fd5b506107dd60048036038101906107d89190613407565b611b8c565b6040516107ea91906133af565b60405180910390f35b3480156107ff57600080fd5b50610808611ce4565b604051610815919061350b565b60405180910390f35b34801561082a57600080fd5b50610845600480360381019061084091906137bb565b611cea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613968565b611d80565b60405161087b91906132a2565b60405180910390f35b34801561089057600080fd5b506108ab60048036038101906108a691906137bb565b611e14565b005b3480156108b957600080fd5b506108d460048036038101906108cf9190613579565b611eaa565b005b3480156108e257600080fd5b506108eb611fa1565b6040516108f8919061350b565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109cc57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a3457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a445750610a4382611fa6565b5b9050919050565b610a53612010565b73ffffffffffffffffffffffffffffffffffffffff16610a7161156e565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe906139f4565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b606060018054610af390613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1f90613a43565b8015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b5050505050905090565b6000610b8182612018565b610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613ae6565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600f8054610c0890613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3490613a43565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b505050505081565b6000610c948261135c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613b78565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d23612010565b73ffffffffffffffffffffffffffffffffffffffff161480610d525750610d5181610d4c612010565b611d80565b5b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613c0a565b60405180910390fd5b610d9c838383612025565b505050565b600b5481565b60008054905090565b600d5481565b610dc18383836120d7565b505050565b6000610dd183611372565b8210610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990613c9c565b60405180910390fd5b6000610e1c610da7565b905060008060005b83811015610f80576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610f1657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c57868403610f5d578195505050505050610fbc565b8380610f6890613ceb565b9450505b508080610f7890613ceb565b915050610e24565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613da5565b60405180910390fd5b92915050565b610fca612010565b73ffffffffffffffffffffffffffffffffffffffff16610fe861156e565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611035906139f4565b60405180910390fd5b600061104861156e565b73ffffffffffffffffffffffffffffffffffffffff164760405161106b90613df6565b60006040518083038185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b50509050806110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890613e57565b60405180910390fd5b50565b61110f83838360405180602001604052806000815250611aa2565b505050565b6060600061112183611372565b905060008167ffffffffffffffff81111561113f5761113e613690565b5b60405190808252806020026020018201604052801561116d5781602001602082028036833780820191505090505b50905060005b828110156111b7576111858582610dc6565b82828151811061119857611197613e77565b5b60200260200101818152505080806111af90613ceb565b915050611173565b508092505050919050565b6111ca612010565b73ffffffffffffffffffffffffffffffffffffffff166111e861156e565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611235906139f4565b60405180910390fd5b80600b8190555050565b600381565b6000611257610da7565b8210611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613f18565b60405180910390fd5b819050919050565b600e60019054906101000a900460ff1681565b6112bb612010565b73ffffffffffffffffffffffffffffffffffffffff166112d961156e565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906139f4565b60405180910390fd5b8060099080519060200190611345929190613111565b5050565b600e60009054906101000a900460ff1681565b60006113678261267c565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613faa565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611462612010565b73ffffffffffffffffffffffffffffffffffffffff1661148061156e565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd906139f4565b60405180910390fd5b6114e060006127d7565b565b6114ea612010565b73ffffffffffffffffffffffffffffffffffffffff1661150861156e565b73ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611555906139f4565b60405180910390fd5b80600d8190555050565b610fa081565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115a790613a43565b80601f01602080910402602001604051908101604052809291908181526020018280546115d390613a43565b80156116205780601f106115f557610100808354040283529160200191611620565b820191906000526020600020905b81548152906001019060200180831161160357829003601f168201915b5050505050905090565b6000611634612010565b9050600e60009054906101000a900460ff1615611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90614016565b60405180910390fd5b8161168f610da7565b6116999190614036565b600c5410156116dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d4906140d8565b60405180910390fd5b60008211611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790614144565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611785906141b0565b60405180910390fd5b611796610da7565b610fa0106117e75781600310156117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d99061421c565b60405180910390fd5b61187b565b816003101561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614288565b60405180910390fd5b34600b548361183a91906142a8565b1461187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061434e565b60405180910390fd5b5b611885818361289d565b5050565b611891612010565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906143ba565b60405180910390fd5b806006600061190b612010565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119b8612010565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119fd91906132a2565b60405180910390a35050565b611a11612010565b73ffffffffffffffffffffffffffffffffffffffff16611a2f61156e565b73ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906139f4565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550565b611aad8484846120d7565b611ab9848484846128bb565b611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef9061444c565b60405180910390fd5b50505050565b600a8054611b0b90613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3790613a43565b8015611b845780601f10611b5957610100808354040283529160200191611b84565b820191906000526020600020905b815481529060010190602001808311611b6757829003601f168201915b505050505081565b6060611b9782612018565b611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906144de565b60405180910390fd5b60001515600e60019054906101000a900460ff16151503611c8357600f8054611bfe90613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2a90613a43565b8015611c775780601f10611c4c57610100808354040283529160200191611c77565b820191906000526020600020905b815481529060010190602001808311611c5a57829003601f168201915b50505050509050611cdf565b6000611c8d612a42565b90506000815111611cad5760405180602001604052806000815250611cdb565b80611cb784612ad4565b600a604051602001611ccb939291906145ce565b6040516020818303038152906040525b9150505b919050565b600c5481565b611cf2612010565b73ffffffffffffffffffffffffffffffffffffffff16611d1061156e565b73ffffffffffffffffffffffffffffffffffffffff1614611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d906139f4565b60405180910390fd5b80600a9080519060200190611d7c929190613111565b5050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e1c612010565b73ffffffffffffffffffffffffffffffffffffffff16611e3a61156e565b73ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e87906139f4565b60405180910390fd5b80600f9080519060200190611ea6929190613111565b5050565b611eb2612010565b73ffffffffffffffffffffffffffffffffffffffff16611ed061156e565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906139f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90614671565b60405180910390fd5b611f9e816127d7565b50565b600381565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120e28261267c565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612109612010565b73ffffffffffffffffffffffffffffffffffffffff161480612165575061212e612010565b73ffffffffffffffffffffffffffffffffffffffff1661214d84610b76565b73ffffffffffffffffffffffffffffffffffffffff16145b806121815750612180826000015161217b612010565b611d80565b5b9050806121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90614703565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c90614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229b90614827565b60405180910390fd5b6122b18585856001612c34565b6122c16000848460000151612025565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124c79190614036565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361260c5761253c81612018565b1561260b576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126748686866001612c3a565b505050505050565b612684613197565b61268d82612018565b6126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c3906148b9565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127be5780925050506127d2565b5080806127ca906148d9565b9150506126d2565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128b7828260405180602001604052806000815250612c40565b5050565b60006128dc8473ffffffffffffffffffffffffffffffffffffffff166130fe565b15612a35578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612905612010565b8786866040518563ffffffff1660e01b81526004016129279493929190614957565b6020604051808303816000875af192505050801561296357506040513d601f19601f8201168201806040525081019061296091906149b8565b60015b6129e5573d8060008114612993576040519150601f19603f3d011682016040523d82523d6000602084013e612998565b606091505b5060008151036129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d49061444c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a3a565b600190505b949350505050565b606060098054612a5190613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054612a7d90613a43565b8015612aca5780601f10612a9f57610100808354040283529160200191612aca565b820191906000526020600020905b815481529060010190602001808311612aad57829003601f168201915b5050505050905090565b606060008203612b1b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c2f565b600082905060005b60008214612b4d578080612b3690613ceb565b915050600a82612b469190614a14565b9150612b23565b60008167ffffffffffffffff811115612b6957612b68613690565b5b6040519080825280601f01601f191660200182016040528015612b9b5781602001600182028036833780820191505090505b5090505b60008514612c2857600182612bb49190614a45565b9150600a85612bc39190614a79565b6030612bcf9190614036565b60f81b818381518110612be557612be4613e77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c219190614a14565b9450612b9f565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac90614b1c565b60405180910390fd5b612cbe81612018565b15612cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf590614b88565b60405180910390fd5b60008311612d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3890614c1a565b60405180910390fd5b612d4e6000858386612c34565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612e4b9190614c56565b6fffffffffffffffffffffffffffffffff168152602001858360200151612e729190614c56565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156130e157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461308160008884886128bb565b6130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b79061444c565b60405180910390fd5b81806130cb90613ceb565b92505080806130d990613ceb565b915050613010565b50806000819055506130f66000878588612c3a565b505050505050565b600080823b905060008111915050919050565b82805461311d90613a43565b90600052602060002090601f01602090048101928261313f5760008555613186565b82601f1061315857805160ff1916838001178555613186565b82800160010185558215613186579182015b8281111561318557825182559160200191906001019061316a565b5b50905061319391906131d1565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156131ea5760008160009055506001016131d2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61323781613202565b811461324257600080fd5b50565b6000813590506132548161322e565b92915050565b6000602082840312156132705761326f6131f8565b5b600061327e84828501613245565b91505092915050565b60008115159050919050565b61329c81613287565b82525050565b60006020820190506132b76000830184613293565b92915050565b6132c681613287565b81146132d157600080fd5b50565b6000813590506132e3816132bd565b92915050565b6000602082840312156132ff576132fe6131f8565b5b600061330d848285016132d4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613350578082015181840152602081019050613335565b8381111561335f576000848401525b50505050565b6000601f19601f8301169050919050565b600061338182613316565b61338b8185613321565b935061339b818560208601613332565b6133a481613365565b840191505092915050565b600060208201905081810360008301526133c98184613376565b905092915050565b6000819050919050565b6133e4816133d1565b81146133ef57600080fd5b50565b600081359050613401816133db565b92915050565b60006020828403121561341d5761341c6131f8565b5b600061342b848285016133f2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061345f82613434565b9050919050565b61346f81613454565b82525050565b600060208201905061348a6000830184613466565b92915050565b61349981613454565b81146134a457600080fd5b50565b6000813590506134b681613490565b92915050565b600080604083850312156134d3576134d26131f8565b5b60006134e1858286016134a7565b92505060206134f2858286016133f2565b9150509250929050565b613505816133d1565b82525050565b600060208201905061352060008301846134fc565b92915050565b60008060006060848603121561353f5761353e6131f8565b5b600061354d868287016134a7565b935050602061355e868287016134a7565b925050604061356f868287016133f2565b9150509250925092565b60006020828403121561358f5761358e6131f8565b5b600061359d848285016134a7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135db816133d1565b82525050565b60006135ed83836135d2565b60208301905092915050565b6000602082019050919050565b6000613611826135a6565b61361b81856135b1565b9350613626836135c2565b8060005b8381101561365757815161363e88826135e1565b9750613649836135f9565b92505060018101905061362a565b5085935050505092915050565b6000602082019050818103600083015261367e8184613606565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136c882613365565b810181811067ffffffffffffffff821117156136e7576136e6613690565b5b80604052505050565b60006136fa6131ee565b905061370682826136bf565b919050565b600067ffffffffffffffff82111561372657613725613690565b5b61372f82613365565b9050602081019050919050565b82818337600083830152505050565b600061375e6137598461370b565b6136f0565b90508281526020810184848401111561377a5761377961368b565b5b61378584828561373c565b509392505050565b600082601f8301126137a2576137a1613686565b5b81356137b284826020860161374b565b91505092915050565b6000602082840312156137d1576137d06131f8565b5b600082013567ffffffffffffffff8111156137ef576137ee6131fd565b5b6137fb8482850161378d565b91505092915050565b6000806040838503121561381b5761381a6131f8565b5b6000613829858286016134a7565b925050602061383a858286016132d4565b9150509250929050565b600067ffffffffffffffff82111561385f5761385e613690565b5b61386882613365565b9050602081019050919050565b600061388861388384613844565b6136f0565b9050828152602081018484840111156138a4576138a361368b565b5b6138af84828561373c565b509392505050565b600082601f8301126138cc576138cb613686565b5b81356138dc848260208601613875565b91505092915050565b600080600080608085870312156138ff576138fe6131f8565b5b600061390d878288016134a7565b945050602061391e878288016134a7565b935050604061392f878288016133f2565b925050606085013567ffffffffffffffff8111156139505761394f6131fd565b5b61395c878288016138b7565b91505092959194509250565b6000806040838503121561397f5761397e6131f8565b5b600061398d858286016134a7565b925050602061399e858286016134a7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139de602083613321565b91506139e9826139a8565b602082019050919050565b60006020820190508181036000830152613a0d816139d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a5b57607f821691505b602082108103613a6e57613a6d613a14565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613ad0602d83613321565b9150613adb82613a74565b604082019050919050565b60006020820190508181036000830152613aff81613ac3565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b62602283613321565b9150613b6d82613b06565b604082019050919050565b60006020820190508181036000830152613b9181613b55565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613bf4603983613321565b9150613bff82613b98565b604082019050919050565b60006020820190508181036000830152613c2381613be7565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c86602283613321565b9150613c9182613c2a565b604082019050919050565b60006020820190508181036000830152613cb581613c79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cf6826133d1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d2857613d27613cbc565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613d8f602e83613321565b9150613d9a82613d33565b604082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b600081905092915050565b50565b6000613de0600083613dc5565b9150613deb82613dd0565b600082019050919050565b6000613e0182613dd3565b9150819050919050565b7f5769746864726177206661696c65642100000000000000000000000000000000600082015250565b6000613e41601083613321565b9150613e4c82613e0b565b602082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f02602383613321565b9150613f0d82613ea6565b604082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613f94602b83613321565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b6000614000600683613321565b915061400b82613fca565b602082019050919050565b6000602082019050818103600083015261402f81613ff3565b9050919050565b6000614041826133d1565b915061404c836133d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408157614080613cbc565b5b828201905092915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006140c2601283613321565b91506140cd8261408c565b602082019050919050565b600060208201905081810360008301526140f1816140b5565b9050919050565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b600061412e600a83613321565b9150614139826140f8565b602082019050919050565b6000602082019050818103600083015261415d81614121565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b600061419a600c83613321565b91506141a582614164565b602082019050919050565b600060208201905081810360008301526141c98161418d565b9050919050565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b6000614206601683613321565b9150614211826141d0565b602082019050919050565b60006020820190508181036000830152614235816141f9565b9050919050565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b6000614272601683613321565b915061427d8261423c565b602082019050919050565b600060208201905081810360008301526142a181614265565b9050919050565b60006142b3826133d1565b91506142be836133d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f7576142f6613cbc565b5b828202905092915050565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b6000614338601683613321565b915061434382614302565b602082019050919050565b600060208201905081810360008301526143678161432b565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b60006143a4601a83613321565b91506143af8261436e565b602082019050919050565b600060208201905081810360008301526143d381614397565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b6000614436603383613321565b9150614441826143da565b604082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006144c8602f83613321565b91506144d38261446c565b604082019050919050565b600060208201905081810360008301526144f7816144bb565b9050919050565b600081905092915050565b600061451482613316565b61451e81856144fe565b935061452e818560208601613332565b80840191505092915050565b60008190508160005260206000209050919050565b6000815461455c81613a43565b61456681866144fe565b945060018216600081146145815760018114614592576145c5565b60ff198316865281860193506145c5565b61459b8561453a565b60005b838110156145bd5781548189015260018201915060208101905061459e565b838801955050505b50505092915050565b60006145da8286614509565b91506145e68285614509565b91506145f2828461454f565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061465b602683613321565b9150614666826145ff565b604082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b60006146ed603283613321565b91506146f882614691565b604082019050919050565b6000602082019050818103600083015261471c816146e0565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b600061477f602683613321565b915061478a82614723565b604082019050919050565b600060208201905081810360008301526147ae81614772565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614811602583613321565b915061481c826147b5565b604082019050919050565b6000602082019050818103600083015261484081614804565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b60006148a3602a83613321565b91506148ae82614847565b604082019050919050565b600060208201905081810360008301526148d281614896565b9050919050565b60006148e4826133d1565b9150600082036148f7576148f6613cbc565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b600061492982614902565b614933818561490d565b9350614943818560208601613332565b61494c81613365565b840191505092915050565b600060808201905061496c6000830187613466565b6149796020830186613466565b61498660408301856134fc565b8181036060830152614998818461491e565b905095945050505050565b6000815190506149b28161322e565b92915050565b6000602082840312156149ce576149cd6131f8565b5b60006149dc848285016149a3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1f826133d1565b9150614a2a836133d1565b925082614a3a57614a396149e5565b5b828204905092915050565b6000614a50826133d1565b9150614a5b836133d1565b925082821015614a6e57614a6d613cbc565b5b828203905092915050565b6000614a84826133d1565b9150614a8f836133d1565b925082614a9f57614a9e6149e5565b5b828206905092915050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b06602183613321565b9150614b1182614aaa565b604082019050919050565b60006020820190508181036000830152614b3581614af9565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b6000614b72601d83613321565b9150614b7d82614b3c565b602082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b6000614c04602383613321565b9150614c0f82614ba8565b604082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6000614c6182614c3a565b9150614c6c83614c3a565b9250826fffffffffffffffffffffffffffffffff03821115614c9157614c90613cbc565b5b82820190509291505056fea2646970667358221220f1c30efcd8f37476f708c919960e77868008b54752bfd2c504d312d999ce833364736f6c634300080e0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000004444f444f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002444f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102305760003560e01c80635c975abb1161012e578063a475b5dd116100ab578063da3ef23f1161006f578063da3ef23f1461081e578063e985e9c514610847578063f2c4ce1e14610884578063f2fde38b146108ad578063f43a22dc146108d657610230565b8063a475b5dd1461074b578063b88d4fde14610762578063c66828621461078b578063c87b56dd146107b6578063d5abeb01146107f357610230565b80638069876d116100f25780638069876d146106855780638da5cb5b146106b057806395d89b41146106db578063a0712d6814610706578063a22cb4651461072257610230565b80635c975abb146105a05780636352211e146105cb57806370a0823114610608578063715018a6146106455780637f00c7a61461065c57610230565b806323b872dd116101bc57806344a0d68a1161018057806344a0d68a146104bb578063463fff79146104e45780634f6ccce71461050f578063518302271461054c57806355f804b31461057757610230565b806323b872dd146103d85780632f745c59146104015780633ccfd60b1461043e57806342842e0e14610455578063438b63001461047e57610230565b8063081c8c4411610203578063081c8c4414610303578063095ea7b31461032e57806313faede61461035757806318160ddd14610382578063239c70ae146103ad57610230565b806301ffc9a71461023557806302329a291461027257806306fdde031461029b578063081812fc146102c6575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061325a565b610901565b60405161026991906132a2565b60405180910390f35b34801561027e57600080fd5b50610299600480360381019061029491906132e9565b610a4b565b005b3480156102a757600080fd5b506102b0610ae4565b6040516102bd91906133af565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190613407565b610b76565b6040516102fa9190613475565b60405180910390f35b34801561030f57600080fd5b50610318610bfb565b60405161032591906133af565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906134bc565b610c89565b005b34801561036357600080fd5b5061036c610da1565b604051610379919061350b565b60405180910390f35b34801561038e57600080fd5b50610397610da7565b6040516103a4919061350b565b60405180910390f35b3480156103b957600080fd5b506103c2610db0565b6040516103cf919061350b565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190613526565b610db6565b005b34801561040d57600080fd5b50610428600480360381019061042391906134bc565b610dc6565b604051610435919061350b565b60405180910390f35b34801561044a57600080fd5b50610453610fc2565b005b34801561046157600080fd5b5061047c60048036038101906104779190613526565b6110f4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190613579565b611114565b6040516104b29190613664565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613407565b6111c2565b005b3480156104f057600080fd5b506104f9611248565b604051610506919061350b565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613407565b61124d565b604051610543919061350b565b60405180910390f35b34801561055857600080fd5b506105616112a0565b60405161056e91906132a2565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906137bb565b6112b3565b005b3480156105ac57600080fd5b506105b5611349565b6040516105c291906132a2565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613407565b61135c565b6040516105ff9190613475565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613579565b611372565b60405161063c919061350b565b60405180910390f35b34801561065157600080fd5b5061065a61145a565b005b34801561066857600080fd5b50610683600480360381019061067e9190613407565b6114e2565b005b34801561069157600080fd5b5061069a611568565b6040516106a7919061350b565b60405180910390f35b3480156106bc57600080fd5b506106c561156e565b6040516106d29190613475565b60405180910390f35b3480156106e757600080fd5b506106f0611598565b6040516106fd91906133af565b60405180910390f35b610720600480360381019061071b9190613407565b61162a565b005b34801561072e57600080fd5b5061074960048036038101906107449190613804565b611889565b005b34801561075757600080fd5b50610760611a09565b005b34801561076e57600080fd5b50610789600480360381019061078491906138e5565b611aa2565b005b34801561079757600080fd5b506107a0611afe565b6040516107ad91906133af565b60405180910390f35b3480156107c257600080fd5b506107dd60048036038101906107d89190613407565b611b8c565b6040516107ea91906133af565b60405180910390f35b3480156107ff57600080fd5b50610808611ce4565b604051610815919061350b565b60405180910390f35b34801561082a57600080fd5b50610845600480360381019061084091906137bb565b611cea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613968565b611d80565b60405161087b91906132a2565b60405180910390f35b34801561089057600080fd5b506108ab60048036038101906108a691906137bb565b611e14565b005b3480156108b957600080fd5b506108d460048036038101906108cf9190613579565b611eaa565b005b3480156108e257600080fd5b506108eb611fa1565b6040516108f8919061350b565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109cc57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a3457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a445750610a4382611fa6565b5b9050919050565b610a53612010565b73ffffffffffffffffffffffffffffffffffffffff16610a7161156e565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe906139f4565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b606060018054610af390613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1f90613a43565b8015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b5050505050905090565b6000610b8182612018565b610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613ae6565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600f8054610c0890613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3490613a43565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b505050505081565b6000610c948261135c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613b78565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d23612010565b73ffffffffffffffffffffffffffffffffffffffff161480610d525750610d5181610d4c612010565b611d80565b5b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613c0a565b60405180910390fd5b610d9c838383612025565b505050565b600b5481565b60008054905090565b600d5481565b610dc18383836120d7565b505050565b6000610dd183611372565b8210610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990613c9c565b60405180910390fd5b6000610e1c610da7565b905060008060005b83811015610f80576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610f1657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c57868403610f5d578195505050505050610fbc565b8380610f6890613ceb565b9450505b508080610f7890613ceb565b915050610e24565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613da5565b60405180910390fd5b92915050565b610fca612010565b73ffffffffffffffffffffffffffffffffffffffff16610fe861156e565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611035906139f4565b60405180910390fd5b600061104861156e565b73ffffffffffffffffffffffffffffffffffffffff164760405161106b90613df6565b60006040518083038185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b50509050806110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890613e57565b60405180910390fd5b50565b61110f83838360405180602001604052806000815250611aa2565b505050565b6060600061112183611372565b905060008167ffffffffffffffff81111561113f5761113e613690565b5b60405190808252806020026020018201604052801561116d5781602001602082028036833780820191505090505b50905060005b828110156111b7576111858582610dc6565b82828151811061119857611197613e77565b5b60200260200101818152505080806111af90613ceb565b915050611173565b508092505050919050565b6111ca612010565b73ffffffffffffffffffffffffffffffffffffffff166111e861156e565b73ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611235906139f4565b60405180910390fd5b80600b8190555050565b600381565b6000611257610da7565b8210611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613f18565b60405180910390fd5b819050919050565b600e60019054906101000a900460ff1681565b6112bb612010565b73ffffffffffffffffffffffffffffffffffffffff166112d961156e565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906139f4565b60405180910390fd5b8060099080519060200190611345929190613111565b5050565b600e60009054906101000a900460ff1681565b60006113678261267c565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613faa565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611462612010565b73ffffffffffffffffffffffffffffffffffffffff1661148061156e565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd906139f4565b60405180910390fd5b6114e060006127d7565b565b6114ea612010565b73ffffffffffffffffffffffffffffffffffffffff1661150861156e565b73ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611555906139f4565b60405180910390fd5b80600d8190555050565b610fa081565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115a790613a43565b80601f01602080910402602001604051908101604052809291908181526020018280546115d390613a43565b80156116205780601f106115f557610100808354040283529160200191611620565b820191906000526020600020905b81548152906001019060200180831161160357829003601f168201915b5050505050905090565b6000611634612010565b9050600e60009054906101000a900460ff1615611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90614016565b60405180910390fd5b8161168f610da7565b6116999190614036565b600c5410156116dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d4906140d8565b60405180910390fd5b60008211611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790614144565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611785906141b0565b60405180910390fd5b611796610da7565b610fa0106117e75781600310156117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d99061421c565b60405180910390fd5b61187b565b816003101561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614288565b60405180910390fd5b34600b548361183a91906142a8565b1461187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061434e565b60405180910390fd5b5b611885818361289d565b5050565b611891612010565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906143ba565b60405180910390fd5b806006600061190b612010565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119b8612010565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119fd91906132a2565b60405180910390a35050565b611a11612010565b73ffffffffffffffffffffffffffffffffffffffff16611a2f61156e565b73ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906139f4565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550565b611aad8484846120d7565b611ab9848484846128bb565b611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef9061444c565b60405180910390fd5b50505050565b600a8054611b0b90613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3790613a43565b8015611b845780601f10611b5957610100808354040283529160200191611b84565b820191906000526020600020905b815481529060010190602001808311611b6757829003601f168201915b505050505081565b6060611b9782612018565b611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906144de565b60405180910390fd5b60001515600e60019054906101000a900460ff16151503611c8357600f8054611bfe90613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2a90613a43565b8015611c775780601f10611c4c57610100808354040283529160200191611c77565b820191906000526020600020905b815481529060010190602001808311611c5a57829003601f168201915b50505050509050611cdf565b6000611c8d612a42565b90506000815111611cad5760405180602001604052806000815250611cdb565b80611cb784612ad4565b600a604051602001611ccb939291906145ce565b6040516020818303038152906040525b9150505b919050565b600c5481565b611cf2612010565b73ffffffffffffffffffffffffffffffffffffffff16611d1061156e565b73ffffffffffffffffffffffffffffffffffffffff1614611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d906139f4565b60405180910390fd5b80600a9080519060200190611d7c929190613111565b5050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e1c612010565b73ffffffffffffffffffffffffffffffffffffffff16611e3a61156e565b73ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e87906139f4565b60405180910390fd5b80600f9080519060200190611ea6929190613111565b5050565b611eb2612010565b73ffffffffffffffffffffffffffffffffffffffff16611ed061156e565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906139f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90614671565b60405180910390fd5b611f9e816127d7565b50565b600381565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120e28261267c565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612109612010565b73ffffffffffffffffffffffffffffffffffffffff161480612165575061212e612010565b73ffffffffffffffffffffffffffffffffffffffff1661214d84610b76565b73ffffffffffffffffffffffffffffffffffffffff16145b806121815750612180826000015161217b612010565b611d80565b5b9050806121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90614703565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c90614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229b90614827565b60405180910390fd5b6122b18585856001612c34565b6122c16000848460000151612025565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846124c79190614036565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361260c5761253c81612018565b1561260b576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126748686866001612c3a565b505050505050565b612684613197565b61268d82612018565b6126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c3906148b9565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127be5780925050506127d2565b5080806127ca906148d9565b9150506126d2565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128b7828260405180602001604052806000815250612c40565b5050565b60006128dc8473ffffffffffffffffffffffffffffffffffffffff166130fe565b15612a35578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612905612010565b8786866040518563ffffffff1660e01b81526004016129279493929190614957565b6020604051808303816000875af192505050801561296357506040513d601f19601f8201168201806040525081019061296091906149b8565b60015b6129e5573d8060008114612993576040519150601f19603f3d011682016040523d82523d6000602084013e612998565b606091505b5060008151036129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d49061444c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a3a565b600190505b949350505050565b606060098054612a5190613a43565b80601f0160208091040260200160405190810160405280929190818152602001828054612a7d90613a43565b8015612aca5780601f10612a9f57610100808354040283529160200191612aca565b820191906000526020600020905b815481529060010190602001808311612aad57829003601f168201915b5050505050905090565b606060008203612b1b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c2f565b600082905060005b60008214612b4d578080612b3690613ceb565b915050600a82612b469190614a14565b9150612b23565b60008167ffffffffffffffff811115612b6957612b68613690565b5b6040519080825280601f01601f191660200182016040528015612b9b5781602001600182028036833780820191505090505b5090505b60008514612c2857600182612bb49190614a45565b9150600a85612bc39190614a79565b6030612bcf9190614036565b60f81b818381518110612be557612be4613e77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c219190614a14565b9450612b9f565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac90614b1c565b60405180910390fd5b612cbe81612018565b15612cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf590614b88565b60405180910390fd5b60008311612d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3890614c1a565b60405180910390fd5b612d4e6000858386612c34565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612e4b9190614c56565b6fffffffffffffffffffffffffffffffff168152602001858360200151612e729190614c56565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156130e157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461308160008884886128bb565b6130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b79061444c565b60405180910390fd5b81806130cb90613ceb565b92505080806130d990613ceb565b915050613010565b50806000819055506130f66000878588612c3a565b505050505050565b600080823b905060008111915050919050565b82805461311d90613a43565b90600052602060002090601f01602090048101928261313f5760008555613186565b82601f1061315857805160ff1916838001178555613186565b82800160010185558215613186579182015b8281111561318557825182559160200191906001019061316a565b5b50905061319391906131d1565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156131ea5760008160009055506001016131d2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61323781613202565b811461324257600080fd5b50565b6000813590506132548161322e565b92915050565b6000602082840312156132705761326f6131f8565b5b600061327e84828501613245565b91505092915050565b60008115159050919050565b61329c81613287565b82525050565b60006020820190506132b76000830184613293565b92915050565b6132c681613287565b81146132d157600080fd5b50565b6000813590506132e3816132bd565b92915050565b6000602082840312156132ff576132fe6131f8565b5b600061330d848285016132d4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613350578082015181840152602081019050613335565b8381111561335f576000848401525b50505050565b6000601f19601f8301169050919050565b600061338182613316565b61338b8185613321565b935061339b818560208601613332565b6133a481613365565b840191505092915050565b600060208201905081810360008301526133c98184613376565b905092915050565b6000819050919050565b6133e4816133d1565b81146133ef57600080fd5b50565b600081359050613401816133db565b92915050565b60006020828403121561341d5761341c6131f8565b5b600061342b848285016133f2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061345f82613434565b9050919050565b61346f81613454565b82525050565b600060208201905061348a6000830184613466565b92915050565b61349981613454565b81146134a457600080fd5b50565b6000813590506134b681613490565b92915050565b600080604083850312156134d3576134d26131f8565b5b60006134e1858286016134a7565b92505060206134f2858286016133f2565b9150509250929050565b613505816133d1565b82525050565b600060208201905061352060008301846134fc565b92915050565b60008060006060848603121561353f5761353e6131f8565b5b600061354d868287016134a7565b935050602061355e868287016134a7565b925050604061356f868287016133f2565b9150509250925092565b60006020828403121561358f5761358e6131f8565b5b600061359d848285016134a7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135db816133d1565b82525050565b60006135ed83836135d2565b60208301905092915050565b6000602082019050919050565b6000613611826135a6565b61361b81856135b1565b9350613626836135c2565b8060005b8381101561365757815161363e88826135e1565b9750613649836135f9565b92505060018101905061362a565b5085935050505092915050565b6000602082019050818103600083015261367e8184613606565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136c882613365565b810181811067ffffffffffffffff821117156136e7576136e6613690565b5b80604052505050565b60006136fa6131ee565b905061370682826136bf565b919050565b600067ffffffffffffffff82111561372657613725613690565b5b61372f82613365565b9050602081019050919050565b82818337600083830152505050565b600061375e6137598461370b565b6136f0565b90508281526020810184848401111561377a5761377961368b565b5b61378584828561373c565b509392505050565b600082601f8301126137a2576137a1613686565b5b81356137b284826020860161374b565b91505092915050565b6000602082840312156137d1576137d06131f8565b5b600082013567ffffffffffffffff8111156137ef576137ee6131fd565b5b6137fb8482850161378d565b91505092915050565b6000806040838503121561381b5761381a6131f8565b5b6000613829858286016134a7565b925050602061383a858286016132d4565b9150509250929050565b600067ffffffffffffffff82111561385f5761385e613690565b5b61386882613365565b9050602081019050919050565b600061388861388384613844565b6136f0565b9050828152602081018484840111156138a4576138a361368b565b5b6138af84828561373c565b509392505050565b600082601f8301126138cc576138cb613686565b5b81356138dc848260208601613875565b91505092915050565b600080600080608085870312156138ff576138fe6131f8565b5b600061390d878288016134a7565b945050602061391e878288016134a7565b935050604061392f878288016133f2565b925050606085013567ffffffffffffffff8111156139505761394f6131fd565b5b61395c878288016138b7565b91505092959194509250565b6000806040838503121561397f5761397e6131f8565b5b600061398d858286016134a7565b925050602061399e858286016134a7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139de602083613321565b91506139e9826139a8565b602082019050919050565b60006020820190508181036000830152613a0d816139d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a5b57607f821691505b602082108103613a6e57613a6d613a14565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613ad0602d83613321565b9150613adb82613a74565b604082019050919050565b60006020820190508181036000830152613aff81613ac3565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b62602283613321565b9150613b6d82613b06565b604082019050919050565b60006020820190508181036000830152613b9181613b55565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613bf4603983613321565b9150613bff82613b98565b604082019050919050565b60006020820190508181036000830152613c2381613be7565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c86602283613321565b9150613c9182613c2a565b604082019050919050565b60006020820190508181036000830152613cb581613c79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cf6826133d1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d2857613d27613cbc565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613d8f602e83613321565b9150613d9a82613d33565b604082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b600081905092915050565b50565b6000613de0600083613dc5565b9150613deb82613dd0565b600082019050919050565b6000613e0182613dd3565b9150819050919050565b7f5769746864726177206661696c65642100000000000000000000000000000000600082015250565b6000613e41601083613321565b9150613e4c82613e0b565b602082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f02602383613321565b9150613f0d82613ea6565b604082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613f94602b83613321565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b6000614000600683613321565b915061400b82613fca565b602082019050919050565b6000602082019050818103600083015261402f81613ff3565b9050919050565b6000614041826133d1565b915061404c836133d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408157614080613cbc565b5b828201905092915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006140c2601283613321565b91506140cd8261408c565b602082019050919050565b600060208201905081810360008301526140f1816140b5565b9050919050565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b600061412e600a83613321565b9150614139826140f8565b602082019050919050565b6000602082019050818103600083015261415d81614121565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b600061419a600c83613321565b91506141a582614164565b602082019050919050565b600060208201905081810360008301526141c98161418d565b9050919050565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b6000614206601683613321565b9150614211826141d0565b602082019050919050565b60006020820190508181036000830152614235816141f9565b9050919050565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b6000614272601683613321565b915061427d8261423c565b602082019050919050565b600060208201905081810360008301526142a181614265565b9050919050565b60006142b3826133d1565b91506142be836133d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f7576142f6613cbc565b5b828202905092915050565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b6000614338601683613321565b915061434382614302565b602082019050919050565b600060208201905081810360008301526143678161432b565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b60006143a4601a83613321565b91506143af8261436e565b602082019050919050565b600060208201905081810360008301526143d381614397565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b6000614436603383613321565b9150614441826143da565b604082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006144c8602f83613321565b91506144d38261446c565b604082019050919050565b600060208201905081810360008301526144f7816144bb565b9050919050565b600081905092915050565b600061451482613316565b61451e81856144fe565b935061452e818560208601613332565b80840191505092915050565b60008190508160005260206000209050919050565b6000815461455c81613a43565b61456681866144fe565b945060018216600081146145815760018114614592576145c5565b60ff198316865281860193506145c5565b61459b8561453a565b60005b838110156145bd5781548189015260018201915060208101905061459e565b838801955050505b50505092915050565b60006145da8286614509565b91506145e68285614509565b91506145f2828461454f565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061465b602683613321565b9150614666826145ff565b604082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b60006146ed603283613321565b91506146f882614691565b604082019050919050565b6000602082019050818103600083015261471c816146e0565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b600061477f602683613321565b915061478a82614723565b604082019050919050565b600060208201905081810360008301526147ae81614772565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614811602583613321565b915061481c826147b5565b604082019050919050565b6000602082019050818103600083015261484081614804565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b60006148a3602a83613321565b91506148ae82614847565b604082019050919050565b600060208201905081810360008301526148d281614896565b9050919050565b60006148e4826133d1565b9150600082036148f7576148f6613cbc565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b600061492982614902565b614933818561490d565b9350614943818560208601613332565b61494c81613365565b840191505092915050565b600060808201905061496c6000830187613466565b6149796020830186613466565b61498660408301856134fc565b8181036060830152614998818461491e565b905095945050505050565b6000815190506149b28161322e565b92915050565b6000602082840312156149ce576149cd6131f8565b5b60006149dc848285016149a3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1f826133d1565b9150614a2a836133d1565b925082614a3a57614a396149e5565b5b828204905092915050565b6000614a50826133d1565b9150614a5b836133d1565b925082821015614a6e57614a6d613cbc565b5b828203905092915050565b6000614a84826133d1565b9150614a8f836133d1565b925082614a9f57614a9e6149e5565b5b828206905092915050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b06602183613321565b9150614b1182614aaa565b604082019050919050565b60006020820190508181036000830152614b3581614af9565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b6000614b72601d83613321565b9150614b7d82614b3c565b602082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b6000614c04602383613321565b9150614c0f82614ba8565b604082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6000614c6182614c3a565b9150614c6c83614c3a565b9250826fffffffffffffffffffffffffffffffff03821115614c9157614c90613cbc565b5b82820190509291505056fea2646970667358221220f1c30efcd8f37476f708c919960e77868008b54752bfd2c504d312d999ce833364736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000004444f444f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002444f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): DODO
Arg [1] : _symbol (string): DO
Arg [2] : _initBaseURI (string):
Arg [3] : _initNotRevealedUri (string):
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 444f444f00000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 444f000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
20809:3603:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12516:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23941:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13992:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15107:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21339:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14680:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21164:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11364:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21238:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15815:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11679:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24021:165;;;;;;;;;;;;;:::i;:::-;;15989:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22427:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23373:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21022:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11478:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21306:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23709:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21276:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13854:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;977:103;;;;;;;;;;;;;:::i;:::-;;23459:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21113:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;743:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14106:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21766:655;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15335:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23300:65;;;;;;;;;;;;;:::i;:::-;;16180:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20980:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22781:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21202:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23813:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15637:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23583:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1094:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21070:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12516:372;12618:4;12670:25;12655:40;;;:11;:40;;;;:105;;;;12727:33;12712:48;;;:11;:48;;;;12655:105;:172;;;;12792:35;12777:50;;;:11;:50;;;;12655:172;:225;;;;12844:36;12868:11;12844:23;:36::i;:::-;12655:225;12635:245;;12516:372;;;:::o;23941:73::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24002:6:::1;23993;;:15;;;;;;;;;;;;;;;;;;23941:73:::0;:::o;13992:100::-;14046:13;14079:5;14072:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13992:100;:::o;15107:214::-;15175:7;15203:16;15211:7;15203;:16::i;:::-;15195:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15289:15;:24;15305:7;15289:24;;;;;;;;;;;;;;;;;;;;;15282:31;;15107:214;;;:::o;21339:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14680:413::-;14753:13;14769:24;14785:7;14769:15;:24::i;:::-;14753:40;;14818:5;14812:11;;:2;:11;;;14804:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14913:5;14897:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14922:37;14939:5;14946:12;:10;:12::i;:::-;14922:16;:37::i;:::-;14897:62;14875:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;15057:28;15066:2;15070:7;15079:5;15057:8;:28::i;:::-;14742:351;14680:413;;:::o;21164:33::-;;;;:::o;11364:100::-;11417:7;11444:12;;11437:19;;11364:100;:::o;21238:33::-;;;;:::o;15815:162::-;15941:28;15951:4;15957:2;15961:7;15941:9;:28::i;:::-;15815:162;;;:::o;11679:823::-;11768:7;11804:16;11814:5;11804:9;:16::i;:::-;11796:5;:24;11788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11870:22;11895:13;:11;:13::i;:::-;11870:38;;11919:19;11953:25;12007:9;12002:426;12026:14;12022:1;:18;12002:426;;;12062:31;12096:11;:14;12108:1;12096:14;;;;;;;;;;;12062:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:1;12129:28;;:9;:14;;;:28;;;12125:103;;12198:9;:14;;;12178:34;;12125:103;12267:5;12246:26;;:17;:26;;;12242:175;;12312:5;12297:11;:20;12293:77;;12349:1;12342:8;;;;;;;;;12293:77;12388:13;;;;;:::i;:::-;;;;12242:175;12047:381;12042:3;;;;;:::i;:::-;;;;12002:426;;;;12438:56;;;;;;;;;;:::i;:::-;;;;;;;;11679:823;;;;;:::o;24021:165::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24070:7:::1;24091;:5;:7::i;:::-;24083:21;;24112;24083:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24069:69;;;24157:2;24149:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;24058:128;24021:165::o:0;15989:177::-;16119:39;16136:4;16142:2;16146:7;16119:39;;;;;;;;;;;;:16;:39::i;:::-;15989:177;;;:::o;22427:348::-;22502:16;22530:23;22556:17;22566:6;22556:9;:17::i;:::-;22530:43;;22580:25;22622:15;22608:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22580:58;;22650:9;22645:103;22665:15;22661:1;:19;22645:103;;;22710:30;22730:6;22738:1;22710:19;:30::i;:::-;22696:8;22705:1;22696:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;22682:3;;;;;:::i;:::-;;;;22645:103;;;;22761:8;22754:15;;;;22427:348;;;:::o;23373:80::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23439:8:::1;23432:4;:15;;;;23373:80:::0;:::o;21022:43::-;21064:1;21022:43;:::o;11478:187::-;11545:7;11581:13;:11;:13::i;:::-;11573:5;:21;11565:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:5;11645:12;;11478:187;;;:::o;21306:28::-;;;;;;;;;;;;;:::o;23709:98::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23790:11:::1;23780:7;:21;;;;;;;;;;;;:::i;:::-;;23709:98:::0;:::o;21276:25::-;;;;;;;;;;;;;:::o;13854:124::-;13918:7;13945:20;13957:7;13945:11;:20::i;:::-;:25;;;13938:32;;13854:124;;;:::o;12902:221::-;12966:7;13011:1;12994:19;;:5;:19;;;12986:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13087:12;:19;13100:5;13087:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13079:36;;13072:43;;12902:221;;;:::o;977:103::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:30:::1;1069:1;1042:18;:30::i;:::-;977:103::o:0;23459:116::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23552:17:::1;23536:13;:33;;;;23459:116:::0;:::o;21113:46::-;21155:4;21113:46;:::o;743:87::-;789:7;816:6;;;;;;;;;;;809:13;;743:87;:::o;14106:104::-;14162:13;14195:7;14188:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14106:104;:::o;21766:655::-;21825:15;21843:12;:10;:12::i;:::-;21825:30;;21875:6;;;;;;;;;;;21874:7;21866:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;21940:7;21924:13;:11;:13::i;:::-;:23;;;;:::i;:::-;21911:9;;:36;;21903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21999:1;21989:7;:11;21981:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;22047:7;22034:20;;:9;:20;;;22026:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22106:13;:11;:13::i;:::-;21155:4;22087:32;22084:290;;22162:7;21064:1;22143:26;;22135:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22084:290;;;22250:7;21107:1;22236:21;;22228:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22326:9;22318:4;;22308:7;:14;;;;:::i;:::-;:27;22300:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22084:290;22386:27;22396:7;22405;22386:9;:27::i;:::-;21814:607;21766:655;:::o;15335:288::-;15442:12;:10;:12::i;:::-;15430:24;;:8;:24;;;15422:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15543:8;15498:18;:32;15517:12;:10;:12::i;:::-;15498:32;;;;;;;;;;;;;;;:42;15531:8;15498:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15596:8;15567:48;;15582:12;:10;:12::i;:::-;15567:48;;;15606:8;15567:48;;;;;;:::i;:::-;;;;;;;;15335:288;;:::o;23300:65::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23355:4:::1;23344:8;;:15;;;;;;;;;;;;;;;;;;23300:65::o:0;16180:355::-;16339:28;16349:4;16355:2;16359:7;16339:9;:28::i;:::-;16400:48;16423:4;16429:2;16433:7;16442:5;16400:22;:48::i;:::-;16378:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;16180:355;;;;:::o;20980:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22781:497::-;22879:13;22920:16;22928:7;22920;:16::i;:::-;22904:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23029:5;23017:17;;:8;;;;;;;;;;;:17;;;23014:62;;23054:14;23047:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:62;23084:28;23115:10;:8;:10::i;:::-;23084:41;;23170:1;23145:14;23139:28;:32;:133;;;;;;;;;;;;;;;;;23207:14;23223:18;:7;:16;:18::i;:::-;23243:13;23190:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23139:133;23132:140;;;22781:497;;;;:::o;21202:31::-;;;;:::o;23813:122::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23912:17:::1;23896:13;:33;;;;;;;;;;;;:::i;:::-;;23813:122:::0;:::o;15637:164::-;15734:4;15758:18;:25;15777:5;15758:25;;;;;;;;;;;;;;;:35;15784:8;15758:35;;;;;;;;;;;;;;;;;;;;;;;;;15751:42;;15637:164;;;;:::o;23583:120::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23682:15:::1;23665:14;:32;;;;;;;;;;;;:::i;:::-;;23583:120:::0;:::o;1094:201::-;894:12;:10;:12::i;:::-;883:23;;:7;:5;:7::i;:::-;:23;;;875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1203:1:::1;1183:22;;:8;:22;;::::0;1175:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1259:28;1278:8;1259:18;:28::i;:::-;1094:201:::0;:::o;21070:38::-;21107:1;21070:38;:::o;10287:157::-;10372:4;10411:25;10396:40;;;:11;:40;;;;10389:47;;10287:157;;;:::o;149:98::-;202:7;229:10;222:17;;149:98;:::o;16549:111::-;16606:4;16640:12;;16630:7;:22;16623:29;;16549:111;;;:::o;19443:196::-;19585:2;19558:15;:24;19574:7;19558:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19623:7;19619:2;19603:28;;19612:5;19603:28;;;;;;;;;;;;19443:196;;;:::o;18062:1367::-;18177:35;18215:20;18227:7;18215:11;:20::i;:::-;18177:58;;18248:22;18290:13;:18;;;18274:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;18349:12;:10;:12::i;:::-;18325:36;;:20;18337:7;18325:11;:20::i;:::-;:36;;;18274:87;:154;;;;18378:50;18395:13;:18;;;18415:12;:10;:12::i;:::-;18378:16;:50::i;:::-;18274:154;18248:181;;18450:17;18442:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;18565:4;18543:26;;:13;:18;;;:26;;;18535:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:1;18631:16;;:2;:16;;;18623:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18702:43;18724:4;18730:2;18734:7;18743:1;18702:21;:43::i;:::-;18768:49;18785:1;18789:7;18798:13;:18;;;18768:8;:49::i;:::-;18895:1;18865:12;:18;18878:4;18865:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18939:1;18911:12;:16;18924:2;18911:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18987:43;;;;;;;;19002:2;18987:43;;;;;;19013:15;18987:43;;;;;18964:11;:20;18976:7;18964:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19053:19;19085:1;19075:7;:11;;;;:::i;:::-;19053:33;;19142:1;19101:43;;:11;:24;19113:11;19101:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;19097:227;;19165:20;19173:11;19165:7;:20::i;:::-;19161:152;;;19233:64;;;;;;;;19248:13;:18;;;19233:64;;;;;;19268:13;:28;;;19233:64;;;;;19206:11;:24;19218:11;19206:24;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19161:152;19097:227;19360:7;19356:2;19341:27;;19350:4;19341:27;;;;;;;;;;;;19379:42;19400:4;19406:2;19410:7;19419:1;19379:20;:42::i;:::-;18166:1263;;;18062:1367;;;:::o;13368:472::-;13429:21;;:::i;:::-;13471:16;13479:7;13471;:16::i;:::-;13463:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13552:12;13567:7;13552:22;;13547:216;13601:31;13635:11;:17;13647:4;13635:17;;;;;;;;;;;13601:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13671:28;;:9;:14;;;:28;;;13667:85;;13727:9;13720:16;;;;;;13667:85;13586:177;13578:6;;;;;:::i;:::-;;;;13547:216;;13368:472;;;;:::o;1309:191::-;1383:16;1402:6;;;;;;;;;;;1383:25;;1428:8;1419:6;;:17;;;;;;;;;;;;;;;;;;1483:8;1452:40;;1473:8;1452:40;;;;;;;;;;;;1372:128;1309:191;:::o;16668:104::-;16737:27;16747:2;16751:8;16737:27;;;;;;;;;;;;:9;:27::i;:::-;16668:104;;:::o;19653:804::-;19808:4;19829:15;:2;:13;;;:15::i;:::-;19825:625;;;19881:2;19865:36;;;19902:12;:10;:12::i;:::-;19916:4;19922:7;19931:5;19865:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19861:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20128:1;20111:6;:13;:18;20107:273;;20154:61;;;;;;;;;;:::i;:::-;;;;;;;;20107:273;20330:6;20324:13;20315:6;20311:2;20307:15;20300:38;19861:534;19998:45;;;19988:55;;;:6;:55;;;;19981:62;;;;;19825:625;20434:4;20427:11;;19653:804;;;;;;;:::o;21645:102::-;21705:13;21734:7;21727:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21645:102;:::o;1729:544::-;1785:13;1836:1;1827:5;:10;1823:53;;1854:10;;;;;;;;;;;;;;;;;;;;;1823:53;1886:12;1901:5;1886:20;;1917:14;1942:78;1957:1;1949:4;:9;1942:78;;1975:8;;;;;:::i;:::-;;;;2006:2;1998:10;;;;;:::i;:::-;;;1942:78;;;2030:19;2062:6;2052:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:39;;2080:154;2096:1;2087:5;:10;2080:154;;2124:1;2114:11;;;;;:::i;:::-;;;2191:2;2183:5;:10;;;;:::i;:::-;2170:2;:24;;;;:::i;:::-;2157:39;;2140:6;2147;2140:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2220:2;2211:11;;;;;:::i;:::-;;;2080:154;;;2258:6;2244:21;;;;;1729:544;;;;:::o;20471:159::-;;;;;:::o;20644:158::-;;;;;:::o;16786:1262::-;16909:20;16932:12;;16909:35;;16977:1;16963:16;;:2;:16;;;16955:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17037:21;17045:12;17037:7;:21::i;:::-;17036:22;17028:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17122:1;17111:8;:12;17103:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17176:61;17206:1;17210:2;17214:12;17228:8;17176:21;:61::i;:::-;17250:30;17283:12;:16;17296:2;17283:16;;;;;;;;;;;;;;;17250:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17329:135;;;;;;;;17385:8;17355:11;:19;;;:39;;;;:::i;:::-;17329:135;;;;;;17444:8;17409:11;:24;;;:44;;;;:::i;:::-;17329:135;;;;;17310:12;:16;17323:2;17310:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17503:43;;;;;;;;17518:2;17503:43;;;;;;17529:15;17503:43;;;;;17475:11;:25;17487:12;17475:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17559:20;17582:12;17559:35;;17612:9;17607:325;17631:8;17627:1;:12;17607:325;;;17691:12;17687:2;17666:38;;17683:1;17666:38;;;;;;;;;;;;17745:59;17776:1;17780:2;17784:12;17798:5;17745:22;:59::i;:::-;17719:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:14;;;;;:::i;:::-;;;;17641:3;;;;;:::i;:::-;;;;17607:325;;;;17957:12;17942;:27;;;;17980:60;18009:1;18013:2;18017:12;18031:8;17980:20;:60::i;:::-;16898:1150;;;16786:1262;;;:::o;6537:208::-;6597:4;6626:12;6693:7;6681:20;6673:28;;6736:1;6729:4;:8;6722:15;;;6537:208;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:116::-;1588:21;1603:5;1588:21;:::i;:::-;1581:5;1578:32;1568:60;;1624:1;1621;1614:12;1568:60;1518:116;:::o;1640:133::-;1683:5;1721:6;1708:20;1699:29;;1737:30;1761:5;1737:30;:::i;:::-;1640:133;;;;:::o;1779:323::-;1835:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:119;;;1890:79;;:::i;:::-;1852:119;2010:1;2035:50;2077:7;2068:6;2057:9;2053:22;2035:50;:::i;:::-;2025:60;;1981:114;1779:323;;;;:::o;2108:99::-;2160:6;2194:5;2188:12;2178:22;;2108:99;;;:::o;2213:169::-;2297:11;2331:6;2326:3;2319:19;2371:4;2366:3;2362:14;2347:29;;2213:169;;;;:::o;2388:307::-;2456:1;2466:113;2480:6;2477:1;2474:13;2466:113;;;2565:1;2560:3;2556:11;2550:18;2546:1;2541:3;2537:11;2530:39;2502:2;2499:1;2495:10;2490:15;;2466:113;;;2597:6;2594:1;2591:13;2588:101;;;2677:1;2668:6;2663:3;2659:16;2652:27;2588:101;2437:258;2388:307;;;:::o;2701:102::-;2742:6;2793:2;2789:7;2784:2;2777:5;2773:14;2769:28;2759:38;;2701:102;;;:::o;2809:364::-;2897:3;2925:39;2958:5;2925:39;:::i;:::-;2980:71;3044:6;3039:3;2980:71;:::i;:::-;2973:78;;3060:52;3105:6;3100:3;3093:4;3086:5;3082:16;3060:52;:::i;:::-;3137:29;3159:6;3137:29;:::i;:::-;3132:3;3128:39;3121:46;;2901:272;2809:364;;;;:::o;3179:313::-;3292:4;3330:2;3319:9;3315:18;3307:26;;3379:9;3373:4;3369:20;3365:1;3354:9;3350:17;3343:47;3407:78;3480:4;3471:6;3407:78;:::i;:::-;3399:86;;3179:313;;;;:::o;3498:77::-;3535:7;3564:5;3553:16;;3498:77;;;:::o;3581:122::-;3654:24;3672:5;3654:24;:::i;:::-;3647:5;3644:35;3634:63;;3693:1;3690;3683:12;3634:63;3581:122;:::o;3709:139::-;3755:5;3793:6;3780:20;3771:29;;3809:33;3836:5;3809:33;:::i;:::-;3709:139;;;;:::o;3854:329::-;3913:6;3962:2;3950:9;3941:7;3937:23;3933:32;3930:119;;;3968:79;;:::i;:::-;3930:119;4088:1;4113:53;4158:7;4149:6;4138:9;4134:22;4113:53;:::i;:::-;4103:63;;4059:117;3854:329;;;;:::o;4189:126::-;4226:7;4266:42;4259:5;4255:54;4244:65;;4189:126;;;:::o;4321:96::-;4358:7;4387:24;4405:5;4387:24;:::i;:::-;4376:35;;4321:96;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:122::-;4848:24;4866:5;4848:24;:::i;:::-;4841:5;4838:35;4828:63;;4887:1;4884;4877:12;4828:63;4775:122;:::o;4903:139::-;4949:5;4987:6;4974:20;4965:29;;5003:33;5030:5;5003:33;:::i;:::-;4903:139;;;;:::o;5048:474::-;5116:6;5124;5173:2;5161:9;5152:7;5148:23;5144:32;5141:119;;;5179:79;;:::i;:::-;5141:119;5299:1;5324:53;5369:7;5360:6;5349:9;5345:22;5324:53;:::i;:::-;5314:63;;5270:117;5426:2;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5397:118;5048:474;;;;;:::o;5528:118::-;5615:24;5633:5;5615:24;:::i;:::-;5610:3;5603:37;5528:118;;:::o;5652:222::-;5745:4;5783:2;5772:9;5768:18;5760:26;;5796:71;5864:1;5853:9;5849:17;5840:6;5796:71;:::i;:::-;5652:222;;;;:::o;5880:619::-;5957:6;5965;5973;6022:2;6010:9;6001:7;5997:23;5993:32;5990:119;;;6028:79;;:::i;:::-;5990:119;6148:1;6173:53;6218:7;6209:6;6198:9;6194:22;6173:53;:::i;:::-;6163:63;;6119:117;6275:2;6301:53;6346:7;6337:6;6326:9;6322:22;6301:53;:::i;:::-;6291:63;;6246:118;6403:2;6429:53;6474:7;6465:6;6454:9;6450:22;6429:53;:::i;:::-;6419:63;;6374:118;5880:619;;;;;:::o;6505:329::-;6564:6;6613:2;6601:9;6592:7;6588:23;6584:32;6581:119;;;6619:79;;:::i;:::-;6581:119;6739:1;6764:53;6809:7;6800:6;6789:9;6785:22;6764:53;:::i;:::-;6754:63;;6710:117;6505:329;;;;:::o;6840:114::-;6907:6;6941:5;6935:12;6925:22;;6840:114;;;:::o;6960:184::-;7059:11;7093:6;7088:3;7081:19;7133:4;7128:3;7124:14;7109:29;;6960:184;;;;:::o;7150:132::-;7217:4;7240:3;7232:11;;7270:4;7265:3;7261:14;7253:22;;7150:132;;;:::o;7288:108::-;7365:24;7383:5;7365:24;:::i;:::-;7360:3;7353:37;7288:108;;:::o;7402:179::-;7471:10;7492:46;7534:3;7526:6;7492:46;:::i;:::-;7570:4;7565:3;7561:14;7547:28;;7402:179;;;;:::o;7587:113::-;7657:4;7689;7684:3;7680:14;7672:22;;7587:113;;;:::o;7736:732::-;7855:3;7884:54;7932:5;7884:54;:::i;:::-;7954:86;8033:6;8028:3;7954:86;:::i;:::-;7947:93;;8064:56;8114:5;8064:56;:::i;:::-;8143:7;8174:1;8159:284;8184:6;8181:1;8178:13;8159:284;;;8260:6;8254:13;8287:63;8346:3;8331:13;8287:63;:::i;:::-;8280:70;;8373:60;8426:6;8373:60;:::i;:::-;8363:70;;8219:224;8206:1;8203;8199:9;8194:14;;8159:284;;;8163:14;8459:3;8452:10;;7860:608;;;7736:732;;;;:::o;8474:373::-;8617:4;8655:2;8644:9;8640:18;8632:26;;8704:9;8698:4;8694:20;8690:1;8679:9;8675:17;8668:47;8732:108;8835:4;8826:6;8732:108;:::i;:::-;8724:116;;8474:373;;;;:::o;8853:117::-;8962:1;8959;8952:12;8976:117;9085:1;9082;9075:12;9099:180;9147:77;9144:1;9137:88;9244:4;9241:1;9234:15;9268:4;9265:1;9258:15;9285:281;9368:27;9390:4;9368:27;:::i;:::-;9360:6;9356:40;9498:6;9486:10;9483:22;9462:18;9450:10;9447:34;9444:62;9441:88;;;9509:18;;:::i;:::-;9441:88;9549:10;9545:2;9538:22;9328:238;9285:281;;:::o;9572:129::-;9606:6;9633:20;;:::i;:::-;9623:30;;9662:33;9690:4;9682:6;9662:33;:::i;:::-;9572:129;;;:::o;9707:308::-;9769:4;9859:18;9851:6;9848:30;9845:56;;;9881:18;;:::i;:::-;9845:56;9919:29;9941:6;9919:29;:::i;:::-;9911:37;;10003:4;9997;9993:15;9985:23;;9707:308;;;:::o;10021:154::-;10105:6;10100:3;10095;10082:30;10167:1;10158:6;10153:3;10149:16;10142:27;10021:154;;;:::o;10181:412::-;10259:5;10284:66;10300:49;10342:6;10300:49;:::i;:::-;10284:66;:::i;:::-;10275:75;;10373:6;10366:5;10359:21;10411:4;10404:5;10400:16;10449:3;10440:6;10435:3;10431:16;10428:25;10425:112;;;10456:79;;:::i;:::-;10425:112;10546:41;10580:6;10575:3;10570;10546:41;:::i;:::-;10265:328;10181:412;;;;;:::o;10613:340::-;10669:5;10718:3;10711:4;10703:6;10699:17;10695:27;10685:122;;10726:79;;:::i;:::-;10685:122;10843:6;10830:20;10868:79;10943:3;10935:6;10928:4;10920:6;10916:17;10868:79;:::i;:::-;10859:88;;10675:278;10613:340;;;;:::o;10959:509::-;11028:6;11077:2;11065:9;11056:7;11052:23;11048:32;11045:119;;;11083:79;;:::i;:::-;11045:119;11231:1;11220:9;11216:17;11203:31;11261:18;11253:6;11250:30;11247:117;;;11283:79;;:::i;:::-;11247:117;11388:63;11443:7;11434:6;11423:9;11419:22;11388:63;:::i;:::-;11378:73;;11174:287;10959:509;;;;:::o;11474:468::-;11539:6;11547;11596:2;11584:9;11575:7;11571:23;11567:32;11564:119;;;11602:79;;:::i;:::-;11564:119;11722:1;11747:53;11792:7;11783:6;11772:9;11768:22;11747:53;:::i;:::-;11737:63;;11693:117;11849:2;11875:50;11917:7;11908:6;11897:9;11893:22;11875:50;:::i;:::-;11865:60;;11820:115;11474:468;;;;;:::o;11948:307::-;12009:4;12099:18;12091:6;12088:30;12085:56;;;12121:18;;:::i;:::-;12085:56;12159:29;12181:6;12159:29;:::i;:::-;12151:37;;12243:4;12237;12233:15;12225:23;;11948:307;;;:::o;12261:410::-;12338:5;12363:65;12379:48;12420:6;12379:48;:::i;:::-;12363:65;:::i;:::-;12354:74;;12451:6;12444:5;12437:21;12489:4;12482:5;12478:16;12527:3;12518:6;12513:3;12509:16;12506:25;12503:112;;;12534:79;;:::i;:::-;12503:112;12624:41;12658:6;12653:3;12648;12624:41;:::i;:::-;12344:327;12261:410;;;;;:::o;12690:338::-;12745:5;12794:3;12787:4;12779:6;12775:17;12771:27;12761:122;;12802:79;;:::i;:::-;12761:122;12919:6;12906:20;12944:78;13018:3;13010:6;13003:4;12995:6;12991:17;12944:78;:::i;:::-;12935:87;;12751:277;12690:338;;;;:::o;13034:943::-;13129:6;13137;13145;13153;13202:3;13190:9;13181:7;13177:23;13173:33;13170:120;;;13209:79;;:::i;:::-;13170:120;13329:1;13354:53;13399:7;13390:6;13379:9;13375:22;13354:53;:::i;:::-;13344:63;;13300:117;13456:2;13482:53;13527:7;13518:6;13507:9;13503:22;13482:53;:::i;:::-;13472:63;;13427:118;13584:2;13610:53;13655:7;13646:6;13635:9;13631:22;13610:53;:::i;:::-;13600:63;;13555:118;13740:2;13729:9;13725:18;13712:32;13771:18;13763:6;13760:30;13757:117;;;13793:79;;:::i;:::-;13757:117;13898:62;13952:7;13943:6;13932:9;13928:22;13898:62;:::i;:::-;13888:72;;13683:287;13034:943;;;;;;;:::o;13983:474::-;14051:6;14059;14108:2;14096:9;14087:7;14083:23;14079:32;14076:119;;;14114:79;;:::i;:::-;14076:119;14234:1;14259:53;14304:7;14295:6;14284:9;14280:22;14259:53;:::i;:::-;14249:63;;14205:117;14361:2;14387:53;14432:7;14423:6;14412:9;14408:22;14387:53;:::i;:::-;14377:63;;14332:118;13983:474;;;;;:::o;14463:182::-;14603:34;14599:1;14591:6;14587:14;14580:58;14463:182;:::o;14651:366::-;14793:3;14814:67;14878:2;14873:3;14814:67;:::i;:::-;14807:74;;14890:93;14979:3;14890:93;:::i;:::-;15008:2;15003:3;14999:12;14992:19;;14651:366;;;:::o;15023:419::-;15189:4;15227:2;15216:9;15212:18;15204:26;;15276:9;15270:4;15266:20;15262:1;15251:9;15247:17;15240:47;15304:131;15430:4;15304:131;:::i;:::-;15296:139;;15023:419;;;:::o;15448:180::-;15496:77;15493:1;15486:88;15593:4;15590:1;15583:15;15617:4;15614:1;15607:15;15634:320;15678:6;15715:1;15709:4;15705:12;15695:22;;15762:1;15756:4;15752:12;15783:18;15773:81;;15839:4;15831:6;15827:17;15817:27;;15773:81;15901:2;15893:6;15890:14;15870:18;15867:38;15864:84;;15920:18;;:::i;:::-;15864:84;15685:269;15634:320;;;:::o;15960:232::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:15;16164:2;16156:6;16152:15;16145:40;15960:232;:::o;16198:366::-;16340:3;16361:67;16425:2;16420:3;16361:67;:::i;:::-;16354:74;;16437:93;16526:3;16437:93;:::i;:::-;16555:2;16550:3;16546:12;16539:19;;16198:366;;;:::o;16570:419::-;16736:4;16774:2;16763:9;16759:18;16751:26;;16823:9;16817:4;16813:20;16809:1;16798:9;16794:17;16787:47;16851:131;16977:4;16851:131;:::i;:::-;16843:139;;16570:419;;;:::o;16995:221::-;17135:34;17131:1;17123:6;17119:14;17112:58;17204:4;17199:2;17191:6;17187:15;17180:29;16995:221;:::o;17222:366::-;17364:3;17385:67;17449:2;17444:3;17385:67;:::i;:::-;17378:74;;17461:93;17550:3;17461:93;:::i;:::-;17579:2;17574:3;17570:12;17563:19;;17222:366;;;:::o;17594:419::-;17760:4;17798:2;17787:9;17783:18;17775:26;;17847:9;17841:4;17837:20;17833:1;17822:9;17818:17;17811:47;17875:131;18001:4;17875:131;:::i;:::-;17867:139;;17594:419;;;:::o;18019:244::-;18159:34;18155:1;18147:6;18143:14;18136:58;18228:27;18223:2;18215:6;18211:15;18204:52;18019:244;:::o;18269:366::-;18411:3;18432:67;18496:2;18491:3;18432:67;:::i;:::-;18425:74;;18508:93;18597:3;18508:93;:::i;:::-;18626:2;18621:3;18617:12;18610:19;;18269:366;;;:::o;18641:419::-;18807:4;18845:2;18834:9;18830:18;18822:26;;18894:9;18888:4;18884:20;18880:1;18869:9;18865:17;18858:47;18922:131;19048:4;18922:131;:::i;:::-;18914:139;;18641:419;;;:::o;19066:221::-;19206:34;19202:1;19194:6;19190:14;19183:58;19275:4;19270:2;19262:6;19258:15;19251:29;19066:221;:::o;19293:366::-;19435:3;19456:67;19520:2;19515:3;19456:67;:::i;:::-;19449:74;;19532:93;19621:3;19532:93;:::i;:::-;19650:2;19645:3;19641:12;19634:19;;19293:366;;;:::o;19665:419::-;19831:4;19869:2;19858:9;19854:18;19846:26;;19918:9;19912:4;19908:20;19904:1;19893:9;19889:17;19882:47;19946:131;20072:4;19946:131;:::i;:::-;19938:139;;19665:419;;;:::o;20090:180::-;20138:77;20135:1;20128:88;20235:4;20232:1;20225:15;20259:4;20256:1;20249:15;20276:233;20315:3;20338:24;20356:5;20338:24;:::i;:::-;20329:33;;20384:66;20377:5;20374:77;20371:103;;20454:18;;:::i;:::-;20371:103;20501:1;20494:5;20490:13;20483:20;;20276:233;;;:::o;20515:::-;20655:34;20651:1;20643:6;20639:14;20632:58;20724:16;20719:2;20711:6;20707:15;20700:41;20515:233;:::o;20754:366::-;20896:3;20917:67;20981:2;20976:3;20917:67;:::i;:::-;20910:74;;20993:93;21082:3;20993:93;:::i;:::-;21111:2;21106:3;21102:12;21095:19;;20754:366;;;:::o;21126:419::-;21292:4;21330:2;21319:9;21315:18;21307:26;;21379:9;21373:4;21369:20;21365:1;21354:9;21350:17;21343:47;21407:131;21533:4;21407:131;:::i;:::-;21399:139;;21126:419;;;:::o;21551:147::-;21652:11;21689:3;21674:18;;21551:147;;;;:::o;21704:114::-;;:::o;21824:398::-;21983:3;22004:83;22085:1;22080:3;22004:83;:::i;:::-;21997:90;;22096:93;22185:3;22096:93;:::i;:::-;22214:1;22209:3;22205:11;22198:18;;21824:398;;;:::o;22228:379::-;22412:3;22434:147;22577:3;22434:147;:::i;:::-;22427:154;;22598:3;22591:10;;22228:379;;;:::o;22613:166::-;22753:18;22749:1;22741:6;22737:14;22730:42;22613:166;:::o;22785:366::-;22927:3;22948:67;23012:2;23007:3;22948:67;:::i;:::-;22941:74;;23024:93;23113:3;23024:93;:::i;:::-;23142:2;23137:3;23133:12;23126:19;;22785:366;;;:::o;23157:419::-;23323:4;23361:2;23350:9;23346:18;23338:26;;23410:9;23404:4;23400:20;23396:1;23385:9;23381:17;23374:47;23438:131;23564:4;23438:131;:::i;:::-;23430:139;;23157:419;;;:::o;23582:180::-;23630:77;23627:1;23620:88;23727:4;23724:1;23717:15;23751:4;23748:1;23741:15;23768:222;23908:34;23904:1;23896:6;23892:14;23885:58;23977:5;23972:2;23964:6;23960:15;23953:30;23768:222;:::o;23996:366::-;24138:3;24159:67;24223:2;24218:3;24159:67;:::i;:::-;24152:74;;24235:93;24324:3;24235:93;:::i;:::-;24353:2;24348:3;24344:12;24337:19;;23996:366;;;:::o;24368:419::-;24534:4;24572:2;24561:9;24557:18;24549:26;;24621:9;24615:4;24611:20;24607:1;24596:9;24592:17;24585:47;24649:131;24775:4;24649:131;:::i;:::-;24641:139;;24368:419;;;:::o;24793:230::-;24933:34;24929:1;24921:6;24917:14;24910:58;25002:13;24997:2;24989:6;24985:15;24978:38;24793:230;:::o;25029:366::-;25171:3;25192:67;25256:2;25251:3;25192:67;:::i;:::-;25185:74;;25268:93;25357:3;25268:93;:::i;:::-;25386:2;25381:3;25377:12;25370:19;;25029:366;;;:::o;25401:419::-;25567:4;25605:2;25594:9;25590:18;25582:26;;25654:9;25648:4;25644:20;25640:1;25629:9;25625:17;25618:47;25682:131;25808:4;25682:131;:::i;:::-;25674:139;;25401:419;;;:::o;25826:156::-;25966:8;25962:1;25954:6;25950:14;25943:32;25826:156;:::o;25988:365::-;26130:3;26151:66;26215:1;26210:3;26151:66;:::i;:::-;26144:73;;26226:93;26315:3;26226:93;:::i;:::-;26344:2;26339:3;26335:12;26328:19;;25988:365;;;:::o;26359:419::-;26525:4;26563:2;26552:9;26548:18;26540:26;;26612:9;26606:4;26602:20;26598:1;26587:9;26583:17;26576:47;26640:131;26766:4;26640:131;:::i;:::-;26632:139;;26359:419;;;:::o;26784:305::-;26824:3;26843:20;26861:1;26843:20;:::i;:::-;26838:25;;26877:20;26895:1;26877:20;:::i;:::-;26872:25;;27031:1;26963:66;26959:74;26956:1;26953:81;26950:107;;;27037:18;;:::i;:::-;26950:107;27081:1;27078;27074:9;27067:16;;26784:305;;;;:::o;27095:168::-;27235:20;27231:1;27223:6;27219:14;27212:44;27095:168;:::o;27269:366::-;27411:3;27432:67;27496:2;27491:3;27432:67;:::i;:::-;27425:74;;27508:93;27597:3;27508:93;:::i;:::-;27626:2;27621:3;27617:12;27610:19;;27269:366;;;:::o;27641:419::-;27807:4;27845:2;27834:9;27830:18;27822:26;;27894:9;27888:4;27884:20;27880:1;27869:9;27865:17;27858:47;27922:131;28048:4;27922:131;:::i;:::-;27914:139;;27641:419;;;:::o;28066:160::-;28206:12;28202:1;28194:6;28190:14;28183:36;28066:160;:::o;28232:366::-;28374:3;28395:67;28459:2;28454:3;28395:67;:::i;:::-;28388:74;;28471:93;28560:3;28471:93;:::i;:::-;28589:2;28584:3;28580:12;28573:19;;28232:366;;;:::o;28604:419::-;28770:4;28808:2;28797:9;28793:18;28785:26;;28857:9;28851:4;28847:20;28843:1;28832:9;28828:17;28821:47;28885:131;29011:4;28885:131;:::i;:::-;28877:139;;28604:419;;;:::o;29029:162::-;29169:14;29165:1;29157:6;29153:14;29146:38;29029:162;:::o;29197:366::-;29339:3;29360:67;29424:2;29419:3;29360:67;:::i;:::-;29353:74;;29436:93;29525:3;29436:93;:::i;:::-;29554:2;29549:3;29545:12;29538:19;;29197:366;;;:::o;29569:419::-;29735:4;29773:2;29762:9;29758:18;29750:26;;29822:9;29816:4;29812:20;29808:1;29797:9;29793:17;29786:47;29850:131;29976:4;29850:131;:::i;:::-;29842:139;;29569:419;;;:::o;29994:172::-;30134:24;30130:1;30122:6;30118:14;30111:48;29994:172;:::o;30172:366::-;30314:3;30335:67;30399:2;30394:3;30335:67;:::i;:::-;30328:74;;30411:93;30500:3;30411:93;:::i;:::-;30529:2;30524:3;30520:12;30513:19;;30172:366;;;:::o;30544:419::-;30710:4;30748:2;30737:9;30733:18;30725:26;;30797:9;30791:4;30787:20;30783:1;30772:9;30768:17;30761:47;30825:131;30951:4;30825:131;:::i;:::-;30817:139;;30544:419;;;:::o;30969:172::-;31109:24;31105:1;31097:6;31093:14;31086:48;30969:172;:::o;31147:366::-;31289:3;31310:67;31374:2;31369:3;31310:67;:::i;:::-;31303:74;;31386:93;31475:3;31386:93;:::i;:::-;31504:2;31499:3;31495:12;31488:19;;31147:366;;;:::o;31519:419::-;31685:4;31723:2;31712:9;31708:18;31700:26;;31772:9;31766:4;31762:20;31758:1;31747:9;31743:17;31736:47;31800:131;31926:4;31800:131;:::i;:::-;31792:139;;31519:419;;;:::o;31944:348::-;31984:7;32007:20;32025:1;32007:20;:::i;:::-;32002:25;;32041:20;32059:1;32041:20;:::i;:::-;32036:25;;32229:1;32161:66;32157:74;32154:1;32151:81;32146:1;32139:9;32132:17;32128:105;32125:131;;;32236:18;;:::i;:::-;32125:131;32284:1;32281;32277:9;32266:20;;31944:348;;;;:::o;32298:172::-;32438:24;32434:1;32426:6;32422:14;32415:48;32298:172;:::o;32476:366::-;32618:3;32639:67;32703:2;32698:3;32639:67;:::i;:::-;32632:74;;32715:93;32804:3;32715:93;:::i;:::-;32833:2;32828:3;32824:12;32817:19;;32476:366;;;:::o;32848:419::-;33014:4;33052:2;33041:9;33037:18;33029:26;;33101:9;33095:4;33091:20;33087:1;33076:9;33072:17;33065:47;33129:131;33255:4;33129:131;:::i;:::-;33121:139;;32848:419;;;:::o;33273:176::-;33413:28;33409:1;33401:6;33397:14;33390:52;33273:176;:::o;33455:366::-;33597:3;33618:67;33682:2;33677:3;33618:67;:::i;:::-;33611:74;;33694:93;33783:3;33694:93;:::i;:::-;33812:2;33807:3;33803:12;33796:19;;33455:366;;;:::o;33827:419::-;33993:4;34031:2;34020:9;34016:18;34008:26;;34080:9;34074:4;34070:20;34066:1;34055:9;34051:17;34044:47;34108:131;34234:4;34108:131;:::i;:::-;34100:139;;33827:419;;;:::o;34252:238::-;34392:34;34388:1;34380:6;34376:14;34369:58;34461:21;34456:2;34448:6;34444:15;34437:46;34252:238;:::o;34496:366::-;34638:3;34659:67;34723:2;34718:3;34659:67;:::i;:::-;34652:74;;34735:93;34824:3;34735:93;:::i;:::-;34853:2;34848:3;34844:12;34837:19;;34496:366;;;:::o;34868:419::-;35034:4;35072:2;35061:9;35057:18;35049:26;;35121:9;35115:4;35111:20;35107:1;35096:9;35092:17;35085:47;35149:131;35275:4;35149:131;:::i;:::-;35141:139;;34868:419;;;:::o;35293:234::-;35433:34;35429:1;35421:6;35417:14;35410:58;35502:17;35497:2;35489:6;35485:15;35478:42;35293:234;:::o;35533:366::-;35675:3;35696:67;35760:2;35755:3;35696:67;:::i;:::-;35689:74;;35772:93;35861:3;35772:93;:::i;:::-;35890:2;35885:3;35881:12;35874:19;;35533:366;;;:::o;35905:419::-;36071:4;36109:2;36098:9;36094:18;36086:26;;36158:9;36152:4;36148:20;36144:1;36133:9;36129:17;36122:47;36186:131;36312:4;36186:131;:::i;:::-;36178:139;;35905:419;;;:::o;36330:148::-;36432:11;36469:3;36454:18;;36330:148;;;;:::o;36484:377::-;36590:3;36618:39;36651:5;36618:39;:::i;:::-;36673:89;36755:6;36750:3;36673:89;:::i;:::-;36666:96;;36771:52;36816:6;36811:3;36804:4;36797:5;36793:16;36771:52;:::i;:::-;36848:6;36843:3;36839:16;36832:23;;36594:267;36484:377;;;;:::o;36867:141::-;36916:4;36939:3;36931:11;;36962:3;36959:1;36952:14;36996:4;36993:1;36983:18;36975:26;;36867:141;;;:::o;37038:845::-;37141:3;37178:5;37172:12;37207:36;37233:9;37207:36;:::i;:::-;37259:89;37341:6;37336:3;37259:89;:::i;:::-;37252:96;;37379:1;37368:9;37364:17;37395:1;37390:137;;;;37541:1;37536:341;;;;37357:520;;37390:137;37474:4;37470:9;37459;37455:25;37450:3;37443:38;37510:6;37505:3;37501:16;37494:23;;37390:137;;37536:341;37603:38;37635:5;37603:38;:::i;:::-;37663:1;37677:154;37691:6;37688:1;37685:13;37677:154;;;37765:7;37759:14;37755:1;37750:3;37746:11;37739:35;37815:1;37806:7;37802:15;37791:26;;37713:4;37710:1;37706:12;37701:17;;37677:154;;;37860:6;37855:3;37851:16;37844:23;;37543:334;;37357:520;;37145:738;;37038:845;;;;:::o;37889:589::-;38114:3;38136:95;38227:3;38218:6;38136:95;:::i;:::-;38129:102;;38248:95;38339:3;38330:6;38248:95;:::i;:::-;38241:102;;38360:92;38448:3;38439:6;38360:92;:::i;:::-;38353:99;;38469:3;38462:10;;37889:589;;;;;;:::o;38484:225::-;38624:34;38620:1;38612:6;38608:14;38601:58;38693:8;38688:2;38680:6;38676:15;38669:33;38484:225;:::o;38715:366::-;38857:3;38878:67;38942:2;38937:3;38878:67;:::i;:::-;38871:74;;38954:93;39043:3;38954:93;:::i;:::-;39072:2;39067:3;39063:12;39056:19;;38715:366;;;:::o;39087:419::-;39253:4;39291:2;39280:9;39276:18;39268:26;;39340:9;39334:4;39330:20;39326:1;39315:9;39311:17;39304:47;39368:131;39494:4;39368:131;:::i;:::-;39360:139;;39087:419;;;:::o;39512:237::-;39652:34;39648:1;39640:6;39636:14;39629:58;39721:20;39716:2;39708:6;39704:15;39697:45;39512:237;:::o;39755:366::-;39897:3;39918:67;39982:2;39977:3;39918:67;:::i;:::-;39911:74;;39994:93;40083:3;39994:93;:::i;:::-;40112:2;40107:3;40103:12;40096:19;;39755:366;;;:::o;40127:419::-;40293:4;40331:2;40320:9;40316:18;40308:26;;40380:9;40374:4;40370:20;40366:1;40355:9;40351:17;40344:47;40408:131;40534:4;40408:131;:::i;:::-;40400:139;;40127:419;;;:::o;40552:225::-;40692:34;40688:1;40680:6;40676:14;40669:58;40761:8;40756:2;40748:6;40744:15;40737:33;40552:225;:::o;40783:366::-;40925:3;40946:67;41010:2;41005:3;40946:67;:::i;:::-;40939:74;;41022:93;41111:3;41022:93;:::i;:::-;41140:2;41135:3;41131:12;41124:19;;40783:366;;;:::o;41155:419::-;41321:4;41359:2;41348:9;41344:18;41336:26;;41408:9;41402:4;41398:20;41394:1;41383:9;41379:17;41372:47;41436:131;41562:4;41436:131;:::i;:::-;41428:139;;41155:419;;;:::o;41580:224::-;41720:34;41716:1;41708:6;41704:14;41697:58;41789:7;41784:2;41776:6;41772:15;41765:32;41580:224;:::o;41810:366::-;41952:3;41973:67;42037:2;42032:3;41973:67;:::i;:::-;41966:74;;42049:93;42138:3;42049:93;:::i;:::-;42167:2;42162:3;42158:12;42151:19;;41810:366;;;:::o;42182:419::-;42348:4;42386:2;42375:9;42371:18;42363:26;;42435:9;42429:4;42425:20;42421:1;42410:9;42406:17;42399:47;42463:131;42589:4;42463:131;:::i;:::-;42455:139;;42182:419;;;:::o;42607:229::-;42747:34;42743:1;42735:6;42731:14;42724:58;42816:12;42811:2;42803:6;42799:15;42792:37;42607:229;:::o;42842:366::-;42984:3;43005:67;43069:2;43064:3;43005:67;:::i;:::-;42998:74;;43081:93;43170:3;43081:93;:::i;:::-;43199:2;43194:3;43190:12;43183:19;;42842:366;;;:::o;43214:419::-;43380:4;43418:2;43407:9;43403:18;43395:26;;43467:9;43461:4;43457:20;43453:1;43442:9;43438:17;43431:47;43495:131;43621:4;43495:131;:::i;:::-;43487:139;;43214:419;;;:::o;43639:171::-;43678:3;43701:24;43719:5;43701:24;:::i;:::-;43692:33;;43747:4;43740:5;43737:15;43734:41;;43755:18;;:::i;:::-;43734:41;43802:1;43795:5;43791:13;43784:20;;43639:171;;;:::o;44853:98::-;44904:6;44938:5;44932:12;44922:22;;44853:98;;;:::o;44957:168::-;45040:11;45074:6;45069:3;45062:19;45114:4;45109:3;45105:14;45090:29;;44957:168;;;;:::o;45131:360::-;45217:3;45245:38;45277:5;45245:38;:::i;:::-;45299:70;45362:6;45357:3;45299:70;:::i;:::-;45292:77;;45378:52;45423:6;45418:3;45411:4;45404:5;45400:16;45378:52;:::i;:::-;45455:29;45477:6;45455:29;:::i;:::-;45450:3;45446:39;45439:46;;45221:270;45131:360;;;;:::o;45497:640::-;45692:4;45730:3;45719:9;45715:19;45707:27;;45744:71;45812:1;45801:9;45797:17;45788:6;45744:71;:::i;:::-;45825:72;45893:2;45882:9;45878:18;45869:6;45825:72;:::i;:::-;45907;45975:2;45964:9;45960:18;45951:6;45907:72;:::i;:::-;46026:9;46020:4;46016:20;46011:2;46000:9;45996:18;45989:48;46054:76;46125:4;46116:6;46054:76;:::i;:::-;46046:84;;45497:640;;;;;;;:::o;46143:141::-;46199:5;46230:6;46224:13;46215:22;;46246:32;46272:5;46246:32;:::i;:::-;46143:141;;;;:::o;46290:349::-;46359:6;46408:2;46396:9;46387:7;46383:23;46379:32;46376:119;;;46414:79;;:::i;:::-;46376:119;46534:1;46559:63;46614:7;46605:6;46594:9;46590:22;46559:63;:::i;:::-;46549:73;;46505:127;46290:349;;;;:::o;46645:180::-;46693:77;46690:1;46683:88;46790:4;46787:1;46780:15;46814:4;46811:1;46804:15;46831:185;46871:1;46888:20;46906:1;46888:20;:::i;:::-;46883:25;;46922:20;46940:1;46922:20;:::i;:::-;46917:25;;46961:1;46951:35;;46966:18;;:::i;:::-;46951:35;47008:1;47005;47001:9;46996:14;;46831:185;;;;:::o;47022:191::-;47062:4;47082:20;47100:1;47082:20;:::i;:::-;47077:25;;47116:20;47134:1;47116:20;:::i;:::-;47111:25;;47155:1;47152;47149:8;47146:34;;;47160:18;;:::i;:::-;47146:34;47205:1;47202;47198:9;47190:17;;47022:191;;;;:::o;47219:176::-;47251:1;47268:20;47286:1;47268:20;:::i;:::-;47263:25;;47302:20;47320:1;47302:20;:::i;:::-;47297:25;;47341:1;47331:35;;47346:18;;:::i;:::-;47331:35;47387:1;47384;47380:9;47375:14;;47219:176;;;;:::o;47401:220::-;47541:34;47537:1;47529:6;47525:14;47518:58;47610:3;47605:2;47597:6;47593:15;47586:28;47401:220;:::o;47627:366::-;47769:3;47790:67;47854:2;47849:3;47790:67;:::i;:::-;47783:74;;47866:93;47955:3;47866:93;:::i;:::-;47984:2;47979:3;47975:12;47968:19;;47627:366;;;:::o;47999:419::-;48165:4;48203:2;48192:9;48188:18;48180:26;;48252:9;48246:4;48242:20;48238:1;48227:9;48223:17;48216:47;48280:131;48406:4;48280:131;:::i;:::-;48272:139;;47999:419;;;:::o;48424:179::-;48564:31;48560:1;48552:6;48548:14;48541:55;48424:179;:::o;48609:366::-;48751:3;48772:67;48836:2;48831:3;48772:67;:::i;:::-;48765:74;;48848:93;48937:3;48848:93;:::i;:::-;48966:2;48961:3;48957:12;48950:19;;48609:366;;;:::o;48981:419::-;49147:4;49185:2;49174:9;49170:18;49162:26;;49234:9;49228:4;49224:20;49220:1;49209:9;49205:17;49198:47;49262:131;49388:4;49262:131;:::i;:::-;49254:139;;48981:419;;;:::o;49406:222::-;49546:34;49542:1;49534:6;49530:14;49523:58;49615:5;49610:2;49602:6;49598:15;49591:30;49406:222;:::o;49634:366::-;49776:3;49797:67;49861:2;49856:3;49797:67;:::i;:::-;49790:74;;49873:93;49962:3;49873:93;:::i;:::-;49991:2;49986:3;49982:12;49975:19;;49634:366;;;:::o;50006:419::-;50172:4;50210:2;50199:9;50195:18;50187:26;;50259:9;50253:4;50249:20;50245:1;50234:9;50230:17;50223:47;50287:131;50413:4;50287:131;:::i;:::-;50279:139;;50006:419;;;:::o;50431:118::-;50468:7;50508:34;50501:5;50497:46;50486:57;;50431:118;;;:::o;50555:273::-;50595:3;50614:20;50632:1;50614:20;:::i;:::-;50609:25;;50648:20;50666:1;50648:20;:::i;:::-;50643:25;;50770:1;50734:34;50730:42;50727:1;50724:49;50721:75;;;50776:18;;:::i;:::-;50721:75;50820:1;50817;50813:9;50806:16;;50555:273;;;;:::o
Swarm Source
ipfs://f1c30efcd8f37476f708c919960e77868008b54752bfd2c504d312d999ce8333
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.