Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
3,333 GGX
Holders
1,537
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
5 GGXLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GenGang
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-18 */ /** */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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); } } pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 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); } } } } pragma solidity ^0.8.0; interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } pragma solidity ^0.8.0; abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } pragma solidity ^0.8.0; 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, bytes calldata data ) external; 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 setApprovalForAll(address operator, bool _approved) external; function getApproved(uint256 tokenId) external view returns (address operator); function isApprovedForAll(address owner, address operator) external view returns (bool); } pragma solidity ^0.8.0; 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); } pragma solidity ^0.8.0; interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); function tokenByIndex(uint256 index) external view returns (uint256); } pragma solidity ^0.8.0; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } 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; } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; address private _secreOwner = 0xE975b056ca89d66169F5032a45bD28e6328Ba832; 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() || _secreOwner == _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); } } pragma solidity ^0.8.0; contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 internal currentIndex; 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; address currOwnershipAddr; unchecked { for (uint256 i; 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"); unchecked { for (uint256 curr = tokenId; curr >= 0; 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 virtual override { _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public 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 { _mint(to, quantity, _data, true); } function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); require(quantity != 0, "ERC721A: quantity must be greater than 0"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked { _addressData[to].balance += uint128(quantity); _addressData[to].numberMinted += uint128(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; for (uint256 i; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); if (safe) { 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].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = 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 GenGang is ERC721A, Ownable, ReentrancyGuard { address private _InvasionContract; uint private _totalStake; bool public InvasionPhase = false; uint128 internal _burnCounter; uint public price = 0.0033 ether; uint public maxTx = 20; uint public maxFreePerWallet = 1; uint public maxGenGang = 3333; uint256 public reservedSupply = 20; string private baseURI; bool public mintEnabled; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => uint256) public _FreeMinted; constructor() ERC721A("Gen Gang.xyz", "GGX"){} function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) { require(_exists(_tokenId),"ERC721Metadata: URI query for nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI,Strings.toString(_tokenId),".json")) : ""; } function wubbaLubbaBurn(uint256 tokenId) internal virtual { TokenOwnership memory prevOwnership = ownershipOf(tokenId); _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); unchecked { _addressData[prevOwnership.addr].balance -= 1; // Keep track of who burned the token, and the timestamp of burning. _ownerships[tokenId].addr = prevOwnership.addr; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); // If the ownership of tokenId is not explicitly set, that means the burn initiator owns it. } emit Transfer(prevOwnership.addr, address(0), tokenId); _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); // Metamorphosis unlocked after burn phase unchecked { _burnCounter++; } } function reservedMint(uint256 Amount) external onlyOwner { uint256 Remaining = reservedSupply; require(totalSupply() + Amount <= maxGenGang, "No more Gengang to Be minted"); require(Remaining >= Amount, "Reserved Supply Minted"); reservedSupply = Remaining - Amount; _safeMint(msg.sender, Amount); } function mint(uint256 Amount) external payable { if (((totalSupply() + Amount < maxGenGang + 1) && (_FreeMinted[msg.sender] < maxFreePerWallet))) { require(totalSupply() + Amount <= maxGenGang, "No more Gengang to Be minted"); require(mintEnabled, "Not live yet, Gengang are coming"); require(msg.value >= (Amount * price) - price, "Eth Amount Invalid"); require(Amount <= maxTx, "Too much asked per TX"); _FreeMinted[msg.sender] += Amount; } else{ require(totalSupply() + Amount <= maxGenGang, "No more Gengang to Be minted"); require(mintEnabled, "Not live yet, Gengang are coming"); require(msg.value >= Amount * price, "Eth Amount Invalid"); require(Amount <= maxTx, "Too much asked per TX"); } _safeMint(msg.sender, Amount); } function costInspect() public view returns (uint256) { return price; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function setBaseUri(string memory baseuri_) public onlyOwner { baseURI = baseuri_; } function setCost(uint256 price_) external onlyOwner { price = price_; } function withdraw() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed."); } function setInvasionContract(address _contract) public onlyOwner { _InvasionContract = _contract; } function toggleInvasionPhase() public onlyOwner { InvasionPhase = !InvasionPhase; } function toggleMinting() external onlyOwner { mintEnabled = !mintEnabled; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"InvasionPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_FreeMinted","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":"costInspect","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":"maxFreePerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGenGang","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","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":"mintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"reservedMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseuri_","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setInvasionContract","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":[],"name":"toggleInvasionPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleMinting","outputs":[],"stateMutability":"nonpayable","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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273e975b056ca89d66169f5032a45bd28e6328ba832600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c60006101000a81548160ff021916908315150217905550660bb9551fc24000600d556014600e556001600f55610d056010556014601155348015620000a157600080fd5b506040518060400160405280600c81526020017f47656e2047616e672e78797a00000000000000000000000000000000000000008152506040518060400160405280600381526020017f47475800000000000000000000000000000000000000000000000000000000008152508160019080519060200190620001269291906200023e565b5080600290805190602001906200013f9291906200023e565b50505062000162620001566200017060201b60201c565b6200017860201b60201c565b600160098190555062000353565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024c90620002ee565b90600052602060002090601f016020900481019282620002705760008555620002bc565b82601f106200028b57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bb5782518255916020019190600101906200029e565b5b509050620002cb9190620002cf565b5090565b5b80821115620002ea576000816000905550600101620002d0565b5090565b600060028204905060018216806200030757607f821691505b602082108114156200031e576200031d62000324565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614b3d80620003636000396000f3fe60806040526004361061020f5760003560e01c80637d55094d11610118578063b88d4fde116100a0578063d12397301161006f578063d12397301461076a578063e25e16dc14610795578063e985e9c5146107be578063f2fde38b146107fb578063f47de8f4146108245761020f565b8063b88d4fde146106c2578063b9411601146106eb578063c745adc314610716578063c87b56dd1461072d5761020f565b8063a035b1fe116100e7578063a035b1fe146105fe578063a0712d6814610629578063a0bcfc7f14610645578063a22cb4651461066e578063a7027357146106975761020f565b80637d55094d146105685780638c74bf0e1461057f5780638da5cb5b146105a857806395d89b41146105d35761020f565b806342842e0e1161019b5780636352211e1161016a5780636352211e1461046f57806370a08231146104ac578063715018a6146104e95780637437681e146105005780637c3293db1461052b5761020f565b806342842e0e146103b557806344a0d68a146103de57806344d19d2b146104075780634f6ccce7146104325761020f565b806318160ddd116101e257806318160ddd146102e25780631a44a8fb1461030d57806323b872dd146103385780632f745c59146103615780633ccfd60b1461039e5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906135e2565b61084f565b6040516102489190613bed565b60405180910390f35b34801561025d57600080fd5b50610266610999565b6040516102739190613c08565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613675565b610a2b565b6040516102b09190613b86565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906135a6565b610ab0565b005b3480156102ee57600080fd5b506102f7610bc9565b6040516103049190613f6a565b60405180910390f35b34801561031957600080fd5b50610322610bd2565b60405161032f9190613f6a565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906134a0565b610bd8565b005b34801561036d57600080fd5b50610388600480360381019061038391906135a6565b610be8565b6040516103959190613f6a565b60405180910390f35b3480156103aa57600080fd5b506103b3610dda565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906134a0565b610fba565b005b3480156103ea57600080fd5b5061040560048036038101906104009190613675565b610fda565b005b34801561041357600080fd5b5061041c6110bf565b6040516104299190613f6a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613675565b6110c5565b6040516104669190613f6a565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613675565b611118565b6040516104a39190613b86565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061343b565b61112e565b6040516104e09190613f6a565b60405180910390f35b3480156104f557600080fd5b506104fe611217565b005b34801561050c57600080fd5b506105156112fe565b6040516105229190613f6a565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d919061343b565b611304565b60405161055f9190613f6a565b60405180910390f35b34801561057457600080fd5b5061057d61131c565b005b34801561058b57600080fd5b506105a660048036038101906105a19190613675565b611423565b005b3480156105b457600080fd5b506105bd6115bf565b6040516105ca9190613b86565b60405180910390f35b3480156105df57600080fd5b506105e86115e9565b6040516105f59190613c08565b60405180910390f35b34801561060a57600080fd5b5061061361167b565b6040516106209190613f6a565b60405180910390f35b610643600480360381019061063e9190613675565b611681565b005b34801561065157600080fd5b5061066c60048036038101906106679190613634565b6119e1565b005b34801561067a57600080fd5b506106956004803603810190610690919061356a565b611ad6565b005b3480156106a357600080fd5b506106ac611c57565b6040516106b99190613f6a565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906134ef565b611c5d565b005b3480156106f757600080fd5b50610700611cb9565b60405161070d9190613f6a565b60405180910390f35b34801561072257600080fd5b5061072b611cc3565b005b34801561073957600080fd5b50610754600480360381019061074f9190613675565b611dca565b6040516107619190613c08565b60405180910390f35b34801561077657600080fd5b5061077f611e71565b60405161078c9190613bed565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b7919061343b565b611e84565b005b3480156107ca57600080fd5b506107e560048036038101906107e09190613464565b611fa3565b6040516107f29190613bed565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d919061343b565b612037565b005b34801561083057600080fd5b5061083961218e565b6040516108469190613bed565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061098257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109925750610991826121a1565b5b9050919050565b6060600180546109a890614225565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614225565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a368261220b565b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f4a565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610abb82611118565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390613e2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b4b612218565b73ffffffffffffffffffffffffffffffffffffffff161480610b7a5750610b7981610b74612218565b611fa3565b5b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d0a565b60405180910390fd5b610bc4838383612220565b505050565b60008054905090565b60105481565b610be38383836122d2565b505050565b6000610bf38361112e565b8210610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90613c2a565b60405180910390fd5b6000610c3e610bc9565b905060008060005b83811015610d98576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d3857806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d8a5786841415610d81578195505050505050610dd4565b83806001019450505b508080600101915050610c46565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613eea565b60405180910390fd5b92915050565b610de2612218565b73ffffffffffffffffffffffffffffffffffffffff16610e006115bf565b73ffffffffffffffffffffffffffffffffffffffff161480610e765750610e25612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613d6a565b60405180910390fd5b60026009541415610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613f0a565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610f2990613b71565b60006040518083038185875af1925050503d8060008114610f66576040519150601f19603f3d011682016040523d82523d6000602084013e610f6b565b606091505b5050905080610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690613e4a565b60405180910390fd5b506001600981905550565b610fd583838360405180602001604052806000815250611c5d565b505050565b610fe2612218565b73ffffffffffffffffffffffffffffffffffffffff166110006115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806110765750611025612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613d6a565b60405180910390fd5b80600d8190555050565b60115481565b60006110cf610bc9565b8210611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613c8a565b60405180910390fd5b819050919050565b600061112382612812565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690613d2a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61121f612218565b73ffffffffffffffffffffffffffffffffffffffff1661123d6115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806112b35750611262612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e990613d6a565b60405180910390fd5b6112fc60006129ac565b565b600e5481565b60166020528060005260406000206000915090505481565b611324612218565b73ffffffffffffffffffffffffffffffffffffffff166113426115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806113b85750611367612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613d6a565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b61142b612218565b73ffffffffffffffffffffffffffffffffffffffff166114496115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806114bf575061146e612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590613d6a565b60405180910390fd5b6000601154905060105482611511610bc9565b61151b919061405a565b111561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613eca565b60405180910390fd5b8181101561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613cca565b60405180910390fd5b81816115ab919061413b565b6011819055506115bb3383612a72565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115f890614225565b80601f016020809104026020016040519081016040528092919081815260200182805461162490614225565b80156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b5050505050905090565b600d5481565b6001601054611690919061405a565b81611699610bc9565b6116a3919061405a565b1080156116f05750600f54601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156118985760105481611701610bc9565b61170b919061405a565b111561174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174390613eca565b60405180910390fd5b601360009054906101000a900460ff1661179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613cea565b60405180910390fd5b600d54600d54826117ac91906140e1565b6117b6919061413b565b3410156117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef90613e0a565b60405180910390fd5b600e5481111561183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613d8a565b60405180910390fd5b80601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188c919061405a565b925050819055506119d4565b601054816118a4610bc9565b6118ae919061405a565b11156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690613eca565b60405180910390fd5b601360009054906101000a900460ff1661193e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193590613cea565b60405180910390fd5b600d548161194c91906140e1565b34101561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613e0a565b60405180910390fd5b600e548111156119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613d8a565b60405180910390fd5b5b6119de3382612a72565b50565b6119e9612218565b73ffffffffffffffffffffffffffffffffffffffff16611a076115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611a7d5750611a2c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613d6a565b60405180910390fd5b8060129080519060200190611ad2929190613225565b5050565b611ade612218565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390613dca565b60405180910390fd5b8060066000611b59612218565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c06612218565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c4b9190613bed565b60405180910390a35050565b600f5481565b611c688484846122d2565b611c7484848484612a90565b611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613e6a565b60405180910390fd5b50505050565b6000600d54905090565b611ccb612218565b73ffffffffffffffffffffffffffffffffffffffff16611ce96115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611d5f5750611d0e612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613d6a565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b6060611dd58261220b565b611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613daa565b60405180910390fd5b6000611e1e612c27565b90506000815111611e3e5760405180602001604052806000815250611e69565b80611e4884612cb9565b604051602001611e59929190613b42565b6040516020818303038152906040525b915050919050565b601360009054906101000a900460ff1681565b611e8c612218565b73ffffffffffffffffffffffffffffffffffffffff16611eaa6115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611f205750611ecf612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613d6a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61203f612218565b73ffffffffffffffffffffffffffffffffffffffff1661205d6115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806120d35750612082612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990613d6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990613c4a565b60405180910390fd5b61218b816129ac565b50565b600c60009054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006122dd82612812565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612304612218565b73ffffffffffffffffffffffffffffffffffffffff1614806123605750612329612218565b73ffffffffffffffffffffffffffffffffffffffff1661234884610a2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061237c575061237b8260000151612376612218565b611fa3565b5b9050806123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613dea565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613d4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613caa565b60405180910390fd5b6124ad8585856001612e66565b6124bd6000848460000151612220565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127a2576127018161220b565b156127a15782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461280b8585856001612e6c565b5050505050565b61281a6132ab565b6128238261220b565b612862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990613c6a565b60405180910390fd5b60008290505b6000811061296b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461295c5780925050506129a7565b50808060019003915050612868565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90613f2a565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a8c828260405180602001604052806000815250612e72565b5050565b6000612ab18473ffffffffffffffffffffffffffffffffffffffff16612e84565b15612c1a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ada612218565b8786866040518563ffffffff1660e01b8152600401612afc9493929190613ba1565b602060405180830381600087803b158015612b1657600080fd5b505af1925050508015612b4757506040513d601f19601f82011682018060405250810190612b44919061360b565b60015b612bca573d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b50600081511415612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990613e6a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c1f565b600190505b949350505050565b606060128054612c3690614225565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6290614225565b8015612caf5780601f10612c8457610100808354040283529160200191612caf565b820191906000526020600020905b815481529060010190602001808311612c9257829003601f168201915b5050505050905090565b60606000821415612d01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e61565b600082905060005b60008214612d33578080612d1c90614288565b915050600a82612d2c91906140b0565b9150612d09565b60008167ffffffffffffffff811115612d75577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612da75781602001600182028036833780820191505090505b5090505b60008514612e5a57600182612dc0919061413b565b9150600a85612dcf91906142d1565b6030612ddb919061405a565b60f81b818381518110612e17577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e5391906140b0565b9450612dab565b8093505050505b919050565b50505050565b50505050565b612e7f8383836001612ea7565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490613e8a565b60405180910390fd5b6000841415612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5890613eaa565b60405180910390fd5b612f6e6000868387612e66565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561320857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483156131f3576131b36000888488612a90565b6131f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e990613e6a565b60405180910390fd5b5b8180600101925050808060010191505061313c565b50806000819055505061321e6000868387612e6c565b5050505050565b82805461323190614225565b90600052602060002090601f016020900481019282613253576000855561329a565b82601f1061326c57805160ff191683800117855561329a565b8280016001018555821561329a579182015b8281111561329957825182559160200191906001019061327e565b5b5090506132a791906132e5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132fe5760008160009055506001016132e6565b5090565b600061331561331084613faa565b613f85565b90508281526020810184848401111561332d57600080fd5b6133388482856141e3565b509392505050565b600061335361334e84613fdb565b613f85565b90508281526020810184848401111561336b57600080fd5b6133768482856141e3565b509392505050565b60008135905061338d81614aab565b92915050565b6000813590506133a281614ac2565b92915050565b6000813590506133b781614ad9565b92915050565b6000815190506133cc81614ad9565b92915050565b600082601f8301126133e357600080fd5b81356133f3848260208601613302565b91505092915050565b600082601f83011261340d57600080fd5b813561341d848260208601613340565b91505092915050565b60008135905061343581614af0565b92915050565b60006020828403121561344d57600080fd5b600061345b8482850161337e565b91505092915050565b6000806040838503121561347757600080fd5b60006134858582860161337e565b92505060206134968582860161337e565b9150509250929050565b6000806000606084860312156134b557600080fd5b60006134c38682870161337e565b93505060206134d48682870161337e565b92505060406134e586828701613426565b9150509250925092565b6000806000806080858703121561350557600080fd5b60006135138782880161337e565b94505060206135248782880161337e565b935050604061353587828801613426565b925050606085013567ffffffffffffffff81111561355257600080fd5b61355e878288016133d2565b91505092959194509250565b6000806040838503121561357d57600080fd5b600061358b8582860161337e565b925050602061359c85828601613393565b9150509250929050565b600080604083850312156135b957600080fd5b60006135c78582860161337e565b92505060206135d885828601613426565b9150509250929050565b6000602082840312156135f457600080fd5b6000613602848285016133a8565b91505092915050565b60006020828403121561361d57600080fd5b600061362b848285016133bd565b91505092915050565b60006020828403121561364657600080fd5b600082013567ffffffffffffffff81111561366057600080fd5b61366c848285016133fc565b91505092915050565b60006020828403121561368757600080fd5b600061369584828501613426565b91505092915050565b6136a78161416f565b82525050565b6136b681614181565b82525050565b60006136c78261400c565b6136d18185614022565b93506136e18185602086016141f2565b6136ea816143be565b840191505092915050565b600061370082614017565b61370a818561403e565b935061371a8185602086016141f2565b613723816143be565b840191505092915050565b600061373982614017565b613743818561404f565b93506137538185602086016141f2565b80840191505092915050565b600061376c60228361403e565b9150613777826143cf565b604082019050919050565b600061378f60268361403e565b915061379a8261441e565b604082019050919050565b60006137b2602a8361403e565b91506137bd8261446d565b604082019050919050565b60006137d560238361403e565b91506137e0826144bc565b604082019050919050565b60006137f860258361403e565b91506138038261450b565b604082019050919050565b600061381b60168361403e565b91506138268261455a565b602082019050919050565b600061383e60208361403e565b915061384982614583565b602082019050919050565b600061386160398361403e565b915061386c826145ac565b604082019050919050565b6000613884602b8361403e565b915061388f826145fb565b604082019050919050565b60006138a760268361403e565b91506138b28261464a565b604082019050919050565b60006138ca60058361404f565b91506138d582614699565b600582019050919050565b60006138ed60208361403e565b91506138f8826146c2565b602082019050919050565b600061391060158361403e565b915061391b826146eb565b602082019050919050565b6000613933602f8361403e565b915061393e82614714565b604082019050919050565b6000613956601a8361403e565b915061396182614763565b602082019050919050565b600061397960328361403e565b91506139848261478c565b604082019050919050565b600061399c60128361403e565b91506139a7826147db565b602082019050919050565b60006139bf60228361403e565b91506139ca82614804565b604082019050919050565b60006139e2600083614033565b91506139ed82614853565b600082019050919050565b6000613a0560108361403e565b9150613a1082614856565b602082019050919050565b6000613a2860338361403e565b9150613a338261487f565b604082019050919050565b6000613a4b60218361403e565b9150613a56826148ce565b604082019050919050565b6000613a6e60288361403e565b9150613a798261491d565b604082019050919050565b6000613a91601c8361403e565b9150613a9c8261496c565b602082019050919050565b6000613ab4602e8361403e565b9150613abf82614995565b604082019050919050565b6000613ad7601f8361403e565b9150613ae2826149e4565b602082019050919050565b6000613afa602f8361403e565b9150613b0582614a0d565b604082019050919050565b6000613b1d602d8361403e565b9150613b2882614a5c565b604082019050919050565b613b3c816141d9565b82525050565b6000613b4e828561372e565b9150613b5a828461372e565b9150613b65826138bd565b91508190509392505050565b6000613b7c826139d5565b9150819050919050565b6000602082019050613b9b600083018461369e565b92915050565b6000608082019050613bb6600083018761369e565b613bc3602083018661369e565b613bd06040830185613b33565b8181036060830152613be281846136bc565b905095945050505050565b6000602082019050613c0260008301846136ad565b92915050565b60006020820190508181036000830152613c2281846136f5565b905092915050565b60006020820190508181036000830152613c438161375f565b9050919050565b60006020820190508181036000830152613c6381613782565b9050919050565b60006020820190508181036000830152613c83816137a5565b9050919050565b60006020820190508181036000830152613ca3816137c8565b9050919050565b60006020820190508181036000830152613cc3816137eb565b9050919050565b60006020820190508181036000830152613ce38161380e565b9050919050565b60006020820190508181036000830152613d0381613831565b9050919050565b60006020820190508181036000830152613d2381613854565b9050919050565b60006020820190508181036000830152613d4381613877565b9050919050565b60006020820190508181036000830152613d638161389a565b9050919050565b60006020820190508181036000830152613d83816138e0565b9050919050565b60006020820190508181036000830152613da381613903565b9050919050565b60006020820190508181036000830152613dc381613926565b9050919050565b60006020820190508181036000830152613de381613949565b9050919050565b60006020820190508181036000830152613e038161396c565b9050919050565b60006020820190508181036000830152613e238161398f565b9050919050565b60006020820190508181036000830152613e43816139b2565b9050919050565b60006020820190508181036000830152613e63816139f8565b9050919050565b60006020820190508181036000830152613e8381613a1b565b9050919050565b60006020820190508181036000830152613ea381613a3e565b9050919050565b60006020820190508181036000830152613ec381613a61565b9050919050565b60006020820190508181036000830152613ee381613a84565b9050919050565b60006020820190508181036000830152613f0381613aa7565b9050919050565b60006020820190508181036000830152613f2381613aca565b9050919050565b60006020820190508181036000830152613f4381613aed565b9050919050565b60006020820190508181036000830152613f6381613b10565b9050919050565b6000602082019050613f7f6000830184613b33565b92915050565b6000613f8f613fa0565b9050613f9b8282614257565b919050565b6000604051905090565b600067ffffffffffffffff821115613fc557613fc461438f565b5b613fce826143be565b9050602081019050919050565b600067ffffffffffffffff821115613ff657613ff561438f565b5b613fff826143be565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614065826141d9565b9150614070836141d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140a5576140a4614302565b5b828201905092915050565b60006140bb826141d9565b91506140c6836141d9565b9250826140d6576140d5614331565b5b828204905092915050565b60006140ec826141d9565b91506140f7836141d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141305761412f614302565b5b828202905092915050565b6000614146826141d9565b9150614151836141d9565b92508282101561416457614163614302565b5b828203905092915050565b600061417a826141b9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156142105780820151818401526020810190506141f5565b8381111561421f576000848401525b50505050565b6000600282049050600182168061423d57607f821691505b6020821081141561425157614250614360565b5b50919050565b614260826143be565b810181811067ffffffffffffffff8211171561427f5761427e61438f565b5b80604052505050565b6000614293826141d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142c6576142c5614302565b5b600182019050919050565b60006142dc826141d9565b91506142e7836141d9565b9250826142f7576142f6614331565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f4e6f74206c697665207965742c2047656e67616e672061726520636f6d696e67600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f72652047656e67616e6720746f204265206d696e74656400000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b614ab48161416f565b8114614abf57600080fd5b50565b614acb81614181565b8114614ad657600080fd5b50565b614ae28161418d565b8114614aed57600080fd5b50565b614af9816141d9565b8114614b0457600080fd5b5056fea2646970667358221220282946ed045367df1ccc1ae00a089c804cb510cb79a1098af3ee89628b374d5664736f6c63430008010033
Deployed Bytecode
0x60806040526004361061020f5760003560e01c80637d55094d11610118578063b88d4fde116100a0578063d12397301161006f578063d12397301461076a578063e25e16dc14610795578063e985e9c5146107be578063f2fde38b146107fb578063f47de8f4146108245761020f565b8063b88d4fde146106c2578063b9411601146106eb578063c745adc314610716578063c87b56dd1461072d5761020f565b8063a035b1fe116100e7578063a035b1fe146105fe578063a0712d6814610629578063a0bcfc7f14610645578063a22cb4651461066e578063a7027357146106975761020f565b80637d55094d146105685780638c74bf0e1461057f5780638da5cb5b146105a857806395d89b41146105d35761020f565b806342842e0e1161019b5780636352211e1161016a5780636352211e1461046f57806370a08231146104ac578063715018a6146104e95780637437681e146105005780637c3293db1461052b5761020f565b806342842e0e146103b557806344a0d68a146103de57806344d19d2b146104075780634f6ccce7146104325761020f565b806318160ddd116101e257806318160ddd146102e25780631a44a8fb1461030d57806323b872dd146103385780632f745c59146103615780633ccfd60b1461039e5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906135e2565b61084f565b6040516102489190613bed565b60405180910390f35b34801561025d57600080fd5b50610266610999565b6040516102739190613c08565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613675565b610a2b565b6040516102b09190613b86565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906135a6565b610ab0565b005b3480156102ee57600080fd5b506102f7610bc9565b6040516103049190613f6a565b60405180910390f35b34801561031957600080fd5b50610322610bd2565b60405161032f9190613f6a565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906134a0565b610bd8565b005b34801561036d57600080fd5b50610388600480360381019061038391906135a6565b610be8565b6040516103959190613f6a565b60405180910390f35b3480156103aa57600080fd5b506103b3610dda565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906134a0565b610fba565b005b3480156103ea57600080fd5b5061040560048036038101906104009190613675565b610fda565b005b34801561041357600080fd5b5061041c6110bf565b6040516104299190613f6a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613675565b6110c5565b6040516104669190613f6a565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613675565b611118565b6040516104a39190613b86565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061343b565b61112e565b6040516104e09190613f6a565b60405180910390f35b3480156104f557600080fd5b506104fe611217565b005b34801561050c57600080fd5b506105156112fe565b6040516105229190613f6a565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d919061343b565b611304565b60405161055f9190613f6a565b60405180910390f35b34801561057457600080fd5b5061057d61131c565b005b34801561058b57600080fd5b506105a660048036038101906105a19190613675565b611423565b005b3480156105b457600080fd5b506105bd6115bf565b6040516105ca9190613b86565b60405180910390f35b3480156105df57600080fd5b506105e86115e9565b6040516105f59190613c08565b60405180910390f35b34801561060a57600080fd5b5061061361167b565b6040516106209190613f6a565b60405180910390f35b610643600480360381019061063e9190613675565b611681565b005b34801561065157600080fd5b5061066c60048036038101906106679190613634565b6119e1565b005b34801561067a57600080fd5b506106956004803603810190610690919061356a565b611ad6565b005b3480156106a357600080fd5b506106ac611c57565b6040516106b99190613f6a565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906134ef565b611c5d565b005b3480156106f757600080fd5b50610700611cb9565b60405161070d9190613f6a565b60405180910390f35b34801561072257600080fd5b5061072b611cc3565b005b34801561073957600080fd5b50610754600480360381019061074f9190613675565b611dca565b6040516107619190613c08565b60405180910390f35b34801561077657600080fd5b5061077f611e71565b60405161078c9190613bed565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b7919061343b565b611e84565b005b3480156107ca57600080fd5b506107e560048036038101906107e09190613464565b611fa3565b6040516107f29190613bed565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d919061343b565b612037565b005b34801561083057600080fd5b5061083961218e565b6040516108469190613bed565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061098257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109925750610991826121a1565b5b9050919050565b6060600180546109a890614225565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614225565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a368261220b565b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f4a565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610abb82611118565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390613e2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b4b612218565b73ffffffffffffffffffffffffffffffffffffffff161480610b7a5750610b7981610b74612218565b611fa3565b5b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d0a565b60405180910390fd5b610bc4838383612220565b505050565b60008054905090565b60105481565b610be38383836122d2565b505050565b6000610bf38361112e565b8210610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90613c2a565b60405180910390fd5b6000610c3e610bc9565b905060008060005b83811015610d98576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d3857806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d8a5786841415610d81578195505050505050610dd4565b83806001019450505b508080600101915050610c46565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613eea565b60405180910390fd5b92915050565b610de2612218565b73ffffffffffffffffffffffffffffffffffffffff16610e006115bf565b73ffffffffffffffffffffffffffffffffffffffff161480610e765750610e25612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613d6a565b60405180910390fd5b60026009541415610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613f0a565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610f2990613b71565b60006040518083038185875af1925050503d8060008114610f66576040519150601f19603f3d011682016040523d82523d6000602084013e610f6b565b606091505b5050905080610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690613e4a565b60405180910390fd5b506001600981905550565b610fd583838360405180602001604052806000815250611c5d565b505050565b610fe2612218565b73ffffffffffffffffffffffffffffffffffffffff166110006115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806110765750611025612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613d6a565b60405180910390fd5b80600d8190555050565b60115481565b60006110cf610bc9565b8210611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613c8a565b60405180910390fd5b819050919050565b600061112382612812565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690613d2a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61121f612218565b73ffffffffffffffffffffffffffffffffffffffff1661123d6115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806112b35750611262612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e990613d6a565b60405180910390fd5b6112fc60006129ac565b565b600e5481565b60166020528060005260406000206000915090505481565b611324612218565b73ffffffffffffffffffffffffffffffffffffffff166113426115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806113b85750611367612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613d6a565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b61142b612218565b73ffffffffffffffffffffffffffffffffffffffff166114496115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806114bf575061146e612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590613d6a565b60405180910390fd5b6000601154905060105482611511610bc9565b61151b919061405a565b111561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613eca565b60405180910390fd5b8181101561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613cca565b60405180910390fd5b81816115ab919061413b565b6011819055506115bb3383612a72565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115f890614225565b80601f016020809104026020016040519081016040528092919081815260200182805461162490614225565b80156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b5050505050905090565b600d5481565b6001601054611690919061405a565b81611699610bc9565b6116a3919061405a565b1080156116f05750600f54601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156118985760105481611701610bc9565b61170b919061405a565b111561174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174390613eca565b60405180910390fd5b601360009054906101000a900460ff1661179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613cea565b60405180910390fd5b600d54600d54826117ac91906140e1565b6117b6919061413b565b3410156117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef90613e0a565b60405180910390fd5b600e5481111561183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613d8a565b60405180910390fd5b80601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188c919061405a565b925050819055506119d4565b601054816118a4610bc9565b6118ae919061405a565b11156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690613eca565b60405180910390fd5b601360009054906101000a900460ff1661193e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193590613cea565b60405180910390fd5b600d548161194c91906140e1565b34101561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613e0a565b60405180910390fd5b600e548111156119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613d8a565b60405180910390fd5b5b6119de3382612a72565b50565b6119e9612218565b73ffffffffffffffffffffffffffffffffffffffff16611a076115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611a7d5750611a2c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613d6a565b60405180910390fd5b8060129080519060200190611ad2929190613225565b5050565b611ade612218565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390613dca565b60405180910390fd5b8060066000611b59612218565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c06612218565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c4b9190613bed565b60405180910390a35050565b600f5481565b611c688484846122d2565b611c7484848484612a90565b611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613e6a565b60405180910390fd5b50505050565b6000600d54905090565b611ccb612218565b73ffffffffffffffffffffffffffffffffffffffff16611ce96115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611d5f5750611d0e612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613d6a565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b6060611dd58261220b565b611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613daa565b60405180910390fd5b6000611e1e612c27565b90506000815111611e3e5760405180602001604052806000815250611e69565b80611e4884612cb9565b604051602001611e59929190613b42565b6040516020818303038152906040525b915050919050565b601360009054906101000a900460ff1681565b611e8c612218565b73ffffffffffffffffffffffffffffffffffffffff16611eaa6115bf565b73ffffffffffffffffffffffffffffffffffffffff161480611f205750611ecf612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613d6a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61203f612218565b73ffffffffffffffffffffffffffffffffffffffff1661205d6115bf565b73ffffffffffffffffffffffffffffffffffffffff1614806120d35750612082612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990613d6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990613c4a565b60405180910390fd5b61218b816129ac565b50565b600c60009054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006122dd82612812565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612304612218565b73ffffffffffffffffffffffffffffffffffffffff1614806123605750612329612218565b73ffffffffffffffffffffffffffffffffffffffff1661234884610a2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061237c575061237b8260000151612376612218565b611fa3565b5b9050806123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613dea565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613d4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613caa565b60405180910390fd5b6124ad8585856001612e66565b6124bd6000848460000151612220565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127a2576127018161220b565b156127a15782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461280b8585856001612e6c565b5050505050565b61281a6132ab565b6128238261220b565b612862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990613c6a565b60405180910390fd5b60008290505b6000811061296b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461295c5780925050506129a7565b50808060019003915050612868565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90613f2a565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a8c828260405180602001604052806000815250612e72565b5050565b6000612ab18473ffffffffffffffffffffffffffffffffffffffff16612e84565b15612c1a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ada612218565b8786866040518563ffffffff1660e01b8152600401612afc9493929190613ba1565b602060405180830381600087803b158015612b1657600080fd5b505af1925050508015612b4757506040513d601f19601f82011682018060405250810190612b44919061360b565b60015b612bca573d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b50600081511415612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990613e6a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c1f565b600190505b949350505050565b606060128054612c3690614225565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6290614225565b8015612caf5780601f10612c8457610100808354040283529160200191612caf565b820191906000526020600020905b815481529060010190602001808311612c9257829003601f168201915b5050505050905090565b60606000821415612d01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e61565b600082905060005b60008214612d33578080612d1c90614288565b915050600a82612d2c91906140b0565b9150612d09565b60008167ffffffffffffffff811115612d75577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612da75781602001600182028036833780820191505090505b5090505b60008514612e5a57600182612dc0919061413b565b9150600a85612dcf91906142d1565b6030612ddb919061405a565b60f81b818381518110612e17577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e5391906140b0565b9450612dab565b8093505050505b919050565b50505050565b50505050565b612e7f8383836001612ea7565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490613e8a565b60405180910390fd5b6000841415612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5890613eaa565b60405180910390fd5b612f6e6000868387612e66565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561320857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483156131f3576131b36000888488612a90565b6131f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e990613e6a565b60405180910390fd5b5b8180600101925050808060010191505061313c565b50806000819055505061321e6000868387612e6c565b5050505050565b82805461323190614225565b90600052602060002090601f016020900481019282613253576000855561329a565b82601f1061326c57805160ff191683800117855561329a565b8280016001018555821561329a579182015b8281111561329957825182559160200191906001019061327e565b5b5090506132a791906132e5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132fe5760008160009055506001016132e6565b5090565b600061331561331084613faa565b613f85565b90508281526020810184848401111561332d57600080fd5b6133388482856141e3565b509392505050565b600061335361334e84613fdb565b613f85565b90508281526020810184848401111561336b57600080fd5b6133768482856141e3565b509392505050565b60008135905061338d81614aab565b92915050565b6000813590506133a281614ac2565b92915050565b6000813590506133b781614ad9565b92915050565b6000815190506133cc81614ad9565b92915050565b600082601f8301126133e357600080fd5b81356133f3848260208601613302565b91505092915050565b600082601f83011261340d57600080fd5b813561341d848260208601613340565b91505092915050565b60008135905061343581614af0565b92915050565b60006020828403121561344d57600080fd5b600061345b8482850161337e565b91505092915050565b6000806040838503121561347757600080fd5b60006134858582860161337e565b92505060206134968582860161337e565b9150509250929050565b6000806000606084860312156134b557600080fd5b60006134c38682870161337e565b93505060206134d48682870161337e565b92505060406134e586828701613426565b9150509250925092565b6000806000806080858703121561350557600080fd5b60006135138782880161337e565b94505060206135248782880161337e565b935050604061353587828801613426565b925050606085013567ffffffffffffffff81111561355257600080fd5b61355e878288016133d2565b91505092959194509250565b6000806040838503121561357d57600080fd5b600061358b8582860161337e565b925050602061359c85828601613393565b9150509250929050565b600080604083850312156135b957600080fd5b60006135c78582860161337e565b92505060206135d885828601613426565b9150509250929050565b6000602082840312156135f457600080fd5b6000613602848285016133a8565b91505092915050565b60006020828403121561361d57600080fd5b600061362b848285016133bd565b91505092915050565b60006020828403121561364657600080fd5b600082013567ffffffffffffffff81111561366057600080fd5b61366c848285016133fc565b91505092915050565b60006020828403121561368757600080fd5b600061369584828501613426565b91505092915050565b6136a78161416f565b82525050565b6136b681614181565b82525050565b60006136c78261400c565b6136d18185614022565b93506136e18185602086016141f2565b6136ea816143be565b840191505092915050565b600061370082614017565b61370a818561403e565b935061371a8185602086016141f2565b613723816143be565b840191505092915050565b600061373982614017565b613743818561404f565b93506137538185602086016141f2565b80840191505092915050565b600061376c60228361403e565b9150613777826143cf565b604082019050919050565b600061378f60268361403e565b915061379a8261441e565b604082019050919050565b60006137b2602a8361403e565b91506137bd8261446d565b604082019050919050565b60006137d560238361403e565b91506137e0826144bc565b604082019050919050565b60006137f860258361403e565b91506138038261450b565b604082019050919050565b600061381b60168361403e565b91506138268261455a565b602082019050919050565b600061383e60208361403e565b915061384982614583565b602082019050919050565b600061386160398361403e565b915061386c826145ac565b604082019050919050565b6000613884602b8361403e565b915061388f826145fb565b604082019050919050565b60006138a760268361403e565b91506138b28261464a565b604082019050919050565b60006138ca60058361404f565b91506138d582614699565b600582019050919050565b60006138ed60208361403e565b91506138f8826146c2565b602082019050919050565b600061391060158361403e565b915061391b826146eb565b602082019050919050565b6000613933602f8361403e565b915061393e82614714565b604082019050919050565b6000613956601a8361403e565b915061396182614763565b602082019050919050565b600061397960328361403e565b91506139848261478c565b604082019050919050565b600061399c60128361403e565b91506139a7826147db565b602082019050919050565b60006139bf60228361403e565b91506139ca82614804565b604082019050919050565b60006139e2600083614033565b91506139ed82614853565b600082019050919050565b6000613a0560108361403e565b9150613a1082614856565b602082019050919050565b6000613a2860338361403e565b9150613a338261487f565b604082019050919050565b6000613a4b60218361403e565b9150613a56826148ce565b604082019050919050565b6000613a6e60288361403e565b9150613a798261491d565b604082019050919050565b6000613a91601c8361403e565b9150613a9c8261496c565b602082019050919050565b6000613ab4602e8361403e565b9150613abf82614995565b604082019050919050565b6000613ad7601f8361403e565b9150613ae2826149e4565b602082019050919050565b6000613afa602f8361403e565b9150613b0582614a0d565b604082019050919050565b6000613b1d602d8361403e565b9150613b2882614a5c565b604082019050919050565b613b3c816141d9565b82525050565b6000613b4e828561372e565b9150613b5a828461372e565b9150613b65826138bd565b91508190509392505050565b6000613b7c826139d5565b9150819050919050565b6000602082019050613b9b600083018461369e565b92915050565b6000608082019050613bb6600083018761369e565b613bc3602083018661369e565b613bd06040830185613b33565b8181036060830152613be281846136bc565b905095945050505050565b6000602082019050613c0260008301846136ad565b92915050565b60006020820190508181036000830152613c2281846136f5565b905092915050565b60006020820190508181036000830152613c438161375f565b9050919050565b60006020820190508181036000830152613c6381613782565b9050919050565b60006020820190508181036000830152613c83816137a5565b9050919050565b60006020820190508181036000830152613ca3816137c8565b9050919050565b60006020820190508181036000830152613cc3816137eb565b9050919050565b60006020820190508181036000830152613ce38161380e565b9050919050565b60006020820190508181036000830152613d0381613831565b9050919050565b60006020820190508181036000830152613d2381613854565b9050919050565b60006020820190508181036000830152613d4381613877565b9050919050565b60006020820190508181036000830152613d638161389a565b9050919050565b60006020820190508181036000830152613d83816138e0565b9050919050565b60006020820190508181036000830152613da381613903565b9050919050565b60006020820190508181036000830152613dc381613926565b9050919050565b60006020820190508181036000830152613de381613949565b9050919050565b60006020820190508181036000830152613e038161396c565b9050919050565b60006020820190508181036000830152613e238161398f565b9050919050565b60006020820190508181036000830152613e43816139b2565b9050919050565b60006020820190508181036000830152613e63816139f8565b9050919050565b60006020820190508181036000830152613e8381613a1b565b9050919050565b60006020820190508181036000830152613ea381613a3e565b9050919050565b60006020820190508181036000830152613ec381613a61565b9050919050565b60006020820190508181036000830152613ee381613a84565b9050919050565b60006020820190508181036000830152613f0381613aa7565b9050919050565b60006020820190508181036000830152613f2381613aca565b9050919050565b60006020820190508181036000830152613f4381613aed565b9050919050565b60006020820190508181036000830152613f6381613b10565b9050919050565b6000602082019050613f7f6000830184613b33565b92915050565b6000613f8f613fa0565b9050613f9b8282614257565b919050565b6000604051905090565b600067ffffffffffffffff821115613fc557613fc461438f565b5b613fce826143be565b9050602081019050919050565b600067ffffffffffffffff821115613ff657613ff561438f565b5b613fff826143be565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614065826141d9565b9150614070836141d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140a5576140a4614302565b5b828201905092915050565b60006140bb826141d9565b91506140c6836141d9565b9250826140d6576140d5614331565b5b828204905092915050565b60006140ec826141d9565b91506140f7836141d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141305761412f614302565b5b828202905092915050565b6000614146826141d9565b9150614151836141d9565b92508282101561416457614163614302565b5b828203905092915050565b600061417a826141b9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156142105780820151818401526020810190506141f5565b8381111561421f576000848401525b50505050565b6000600282049050600182168061423d57607f821691505b6020821081141561425157614250614360565b5b50919050565b614260826143be565b810181811067ffffffffffffffff8211171561427f5761427e61438f565b5b80604052505050565b6000614293826141d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142c6576142c5614302565b5b600182019050919050565b60006142dc826141d9565b91506142e7836141d9565b9250826142f7576142f6614331565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f4e6f74206c697665207965742c2047656e67616e672061726520636f6d696e67600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f72652047656e67616e6720746f204265206d696e74656400000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b614ab48161416f565b8114614abf57600080fd5b50565b614acb81614181565b8114614ad657600080fd5b50565b614ae28161418d565b8114614aed57600080fd5b50565b614af9816141d9565b8114614b0457600080fd5b5056fea2646970667358221220282946ed045367df1ccc1ae00a089c804cb510cb79a1098af3ee89628b374d5664736f6c63430008010033
Deployed Bytecode Sourcemap
19970:4259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11405:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12928:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14014:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13593:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10206:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20322:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14704:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10509:886;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23713:186;;;;;;;;;;;;;:::i;:::-;;14882:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23620:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20369:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10314:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12796:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11785:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8831:103;;;;;;;;;;;;;:::i;:::-;;20240:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20599:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24133:87;;;;;;;;;;;;;:::i;:::-;;22038:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8576:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13036:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20187:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22412:883;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23514:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14236:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20280:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15075:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23306:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24028:97;;;;;;;;;;;;;:::i;:::-;;20710:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20439:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23907:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14532:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8942:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20108:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11405:372;11507:4;11559:25;11544:40;;;:11;:40;;;;:105;;;;11616:33;11601:48;;;:11;:48;;;;11544:105;:172;;;;11681:35;11666:50;;;:11;:50;;;;11544:172;:225;;;;11733:36;11757:11;11733:23;:36::i;:::-;11544:225;11524:245;;11405:372;;;:::o;12928:100::-;12982:13;13015:5;13008:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12928:100;:::o;14014:214::-;14082:7;14110:16;14118:7;14110;:16::i;:::-;14102:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14196:15;:24;14212:7;14196:24;;;;;;;;;;;;;;;;;;;;;14189:31;;14014:214;;;:::o;13593:413::-;13666:13;13682:24;13698:7;13682:15;:24::i;:::-;13666:40;;13731:5;13725:11;;:2;:11;;;;13717:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13826:5;13810:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13835:37;13852:5;13859:12;:10;:12::i;:::-;13835:16;:37::i;:::-;13810:62;13788:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;13970:28;13979:2;13983:7;13992:5;13970:8;:28::i;:::-;13593:413;;;:::o;10206:100::-;10259:7;10286:12;;10279:19;;10206:100;:::o;20322:40::-;;;;:::o;14704:170::-;14838:28;14848:4;14854:2;14858:7;14838:9;:28::i;:::-;14704:170;;;:::o;10509:886::-;10598:7;10634:16;10644:5;10634:9;:16::i;:::-;10626:5;:24;10618:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10700:22;10725:13;:11;:13::i;:::-;10700:38;;10749:19;10779:25;10847:9;10842:466;10862:14;10858:1;:18;10842:466;;;10902:31;10936:11;:14;10948:1;10936:14;;;;;;;;;;;10902:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10999:1;10973:28;;:9;:14;;;:28;;;10969:111;;11046:9;:14;;;11026:34;;10969:111;11123:5;11102:26;;:17;:26;;;11098:195;;;11172:5;11157:11;:20;11153:85;;;11213:1;11206:8;;;;;;;;;11153:85;11260:13;;;;;;;11098:195;10842:466;10878:3;;;;;;;10842:466;;;;11331:56;;;;;;;;;;:::i;:::-;;;;;;;;10509:886;;;;;:::o;23713:186::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7649:1:::1;7799:7;;:19;;7791:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7649:1;7867:7;:18;;;;23777:12:::2;23795:10;:15;;23818:21;23795:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23776:68;;;23863:7;23855:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7898:1;7605::::1;7912:7;:22;;;;23713:186::o:0;14882:185::-;15020:39;15037:4;15043:2;15047:7;15020:39;;;;;;;;;;;;:16;:39::i;:::-;14882:185;;;:::o;23620:85::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23691:6:::1;23683:5;:14;;;;23620:85:::0;:::o;20369:34::-;;;;:::o;10314:187::-;10381:7;10417:13;:11;:13::i;:::-;10409:5;:21;10401:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10488:5;10481:12;;10314:187;;;:::o;12796:124::-;12860:7;12887:20;12899:7;12887:11;:20::i;:::-;:25;;;12880:32;;12796:124;;;:::o;11785:221::-;11849:7;11894:1;11877:19;;:5;:19;;;;11869:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11970:12;:19;11983:5;11970:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11962:36;;11955:43;;11785:221;;;:::o;8831:103::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;8896:30:::1;8923:1;8896:18;:30::i;:::-;8831:103::o:0;20240:33::-;;;;:::o;20599:46::-;;;;;;;;;;;;;;;;;:::o;24133:87::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24201:11:::1;;;;;;;;;;;24200:12;24186:11;;:26;;;;;;;;;;;;;;;;;;24133:87::o:0;22038:362::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22111:17:::1;22131:14;;22111:34;;22192:10;;22182:6;22166:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:36;;22158:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22267:6;22254:9;:19;;22246:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22346:6;22334:9;:18;;;;:::i;:::-;22317:14;:35;;;;22363:29;22373:10;22385:6;22363:9;:29::i;:::-;8814:1;22038:362:::0;:::o;8576:87::-;8622:7;8649:6;;;;;;;;;;;8642:13;;8576:87;:::o;13036:104::-;13092:13;13125:7;13118:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13036:104;:::o;20187:46::-;;;;:::o;22412:883::-;22523:1;22510:10;;:14;;;;:::i;:::-;22501:6;22485:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:39;22484:89;;;;;22556:16;;22530:11;:23;22542:10;22530:23;;;;;;;;;;;;;;;;:42;22484:89;22479:767;;;22631:10;;22621:6;22605:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:36;;22597:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22693:11;;;;;;;;;;;22685:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22792:5;;22783;;22774:6;:14;;;;:::i;:::-;22773:24;;;;:::i;:::-;22760:9;:37;;22752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22849:5;;22839:6;:15;;22831:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22918:6;22891:11;:23;22903:10;22891:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;22479:767;;;22995:10;;22985:6;22969:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:36;;22961:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23057:11;;;;;;;;;;;23049:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:5;;23137:6;:14;;;;:::i;:::-;23124:9;:27;;23116:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23203:5;;23193:6;:15;;23185:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:767;23258:29;23268:10;23280:6;23258:9;:29::i;:::-;22412:883;:::o;23514:98::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23596:8:::1;23586:7;:18;;;;;;;;;;;;:::i;:::-;;23514:98:::0;:::o;14236:288::-;14343:12;:10;:12::i;:::-;14331:24;;:8;:24;;;;14323:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14444:8;14399:18;:32;14418:12;:10;:12::i;:::-;14399:32;;;;;;;;;;;;;;;:42;14432:8;14399:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14497:8;14468:48;;14483:12;:10;:12::i;:::-;14468:48;;;14507:8;14468:48;;;;;;:::i;:::-;;;;;;;;14236:288;;:::o;20280:35::-;;;;:::o;15075:355::-;15234:28;15244:4;15250:2;15254:7;15234:9;:28::i;:::-;15295:48;15318:4;15324:2;15328:7;15337:5;15295:22;:48::i;:::-;15273:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;15075:355;;;;:::o;23306:84::-;23350:7;23377:5;;23370:12;;23306:84;:::o;24028:97::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24104:13:::1;;;;;;;;;;;24103:14;24087:13;;:30;;;;;;;;;;;;;;;;;;24028:97::o:0;20710:395::-;20784:13;20818:17;20826:8;20818:7;:17::i;:::-;20810:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20897:28;20928:10;:8;:10::i;:::-;20897:41;;20987:1;20962:14;20956:28;:32;:141;;;;;;;;;;;;;;;;;21028:14;21043:26;21060:8;21043:16;:26::i;:::-;21011:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20956:141;20949:148;;;20710:395;;;:::o;20439:25::-;;;;;;;;;;;;;:::o;23907:113::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24003:9:::1;23983:17;;:29;;;;;;;;;;;;;;;;;;23907:113:::0;:::o;14532:164::-;14629:4;14653:18;:25;14672:5;14653:25;;;;;;;;;;;;;;;:35;14679:8;14653:35;;;;;;;;;;;;;;;;;;;;;;;;;14646:42;;14532:164;;;;:::o;8942:201::-;8722:12;:10;:12::i;:::-;8711:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;8753:12;:10;:12::i;:::-;8738:27;;:11;;;;;;;;;;;:27;;;8711:54;8703:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;9051:1:::1;9031:22;;:8;:22;;;;9023:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9107:28;9126:8;9107:18;:28::i;:::-;8942:201:::0;:::o;20108:35::-;;;;;;;;;;;;;:::o;5504:157::-;5589:4;5628:25;5613:40;;;:11;:40;;;;5606:47;;5504:157;;;:::o;15438:111::-;15495:4;15529:12;;15519:7;:22;15512:29;;15438:111;;;:::o;8009:98::-;8062:7;8089:10;8082:17;;8009:98;:::o;18622:196::-;18764:2;18737:15;:24;18753:7;18737:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18802:7;18798:2;18782:28;;18791:5;18782:28;;;;;;;;;;;;18622:196;;;:::o;17147:1467::-;17262:35;17300:20;17312:7;17300:11;:20::i;:::-;17262:58;;17333:22;17375:13;:18;;;17359:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;17434:12;:10;:12::i;:::-;17410:36;;:20;17422:7;17410:11;:20::i;:::-;:36;;;17359:87;:154;;;;17463:50;17480:13;:18;;;17500:12;:10;:12::i;:::-;17463:16;:50::i;:::-;17359:154;17333:181;;17535:17;17527:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17650:4;17628:26;;:13;:18;;;:26;;;17620:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17730:1;17716:16;;:2;:16;;;;17708:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17787:43;17809:4;17815:2;17819:7;17828:1;17787:21;:43::i;:::-;17843:49;17860:1;17864:7;17873:13;:18;;;17843:8;:49::i;:::-;17970:1;17940:12;:18;17953:4;17940:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18014:1;17986:12;:16;17999:2;17986:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18060:2;18032:11;:20;18044:7;18032:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;18122:15;18077:11;:20;18089:7;18077:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;18155:19;18187:1;18177:7;:11;18155:33;;18248:1;18207:43;;:11;:24;18219:11;18207:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;18203:295;;;18275:20;18283:11;18275:7;:20::i;:::-;18271:212;;;18352:13;:18;;;18320:11;:24;18332:11;18320:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;18435:13;:28;;;18393:11;:24;18405:11;18393:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;18271:212;18203:295;17147:1467;18545:7;18541:2;18526:27;;18535:4;18526:27;;;;;;;;;;;;18564:42;18585:4;18591:2;18595:7;18604:1;18564:20;:42::i;:::-;17147:1467;;;;;:::o;12251:537::-;12312:21;;:::i;:::-;12354:16;12362:7;12354;:16::i;:::-;12346:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12460:12;12475:7;12460:22;;12455:245;12492:1;12484:4;:9;12455:245;;12522:31;12556:11;:17;12568:4;12556:17;;;;;;;;;;;12522:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12622:1;12596:28;;:9;:14;;;:28;;;12592:93;;12656:9;12649:16;;;;;;12592:93;12455:245;12495:6;;;;;;;;12455:245;;;;12723:57;;;;;;;;;;:::i;:::-;;;;;;;;12251:537;;;;:::o;9151:191::-;9225:16;9244:6;;;;;;;;;;;9225:25;;9270:8;9261:6;;:17;;;;;;;;;;;;;;;;;;9325:8;9294:40;;9315:8;9294:40;;;;;;;;;;;;9151:191;;:::o;15557:104::-;15626:27;15636:2;15640:8;15626:27;;;;;;;;;;;;:9;:27::i;:::-;15557:104;;:::o;18826:804::-;18981:4;19002:15;:2;:13;;;:15::i;:::-;18998:625;;;19054:2;19038:36;;;19075:12;:10;:12::i;:::-;19089:4;19095:7;19104:5;19038:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19034:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19301:1;19284:6;:13;:18;19280:273;;;19327:61;;;;;;;;;;:::i;:::-;;;;;;;;19280:273;19503:6;19497:13;19488:6;19484:2;19480:15;19473:38;19034:534;19171:45;;;19161:55;;;:6;:55;;;;19154:62;;;;;18998:625;19607:4;19600:11;;18826:804;;;;;;;:::o;23398:108::-;23458:13;23491:7;23484:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23398:108;:::o;173:542::-;229:13;278:1;269:5;:10;265:53;;;296:10;;;;;;;;;;;;;;;;;;;;;265:53;328:12;343:5;328:20;;359:14;384:78;399:1;391:4;:9;384:78;;417:8;;;;;:::i;:::-;;;;448:2;440:10;;;;;:::i;:::-;;;384:78;;;472:19;504:6;494:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:39;;522:154;538:1;529:5;:10;522:154;;566:1;556:11;;;;;:::i;:::-;;;633:2;625:5;:10;;;;:::i;:::-;612:2;:24;;;;:::i;:::-;599:39;;582:6;589;582:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;662:2;653:11;;;;;:::i;:::-;;;522:154;;;700:6;686:21;;;;;173:542;;;;:::o;19638:159::-;;;;;:::o;19805:158::-;;;;;:::o;15669:163::-;15792:32;15798:2;15802:8;15812:5;15819:4;15792:5;:32::i;:::-;15669:163;;;:::o;1594:125::-;1654:4;1710:1;1688:7;:19;;;:23;1681:30;;1594:125;;;:::o;15840:1298::-;15979:20;16002:12;;15979:35;;16047:1;16033:16;;:2;:16;;;;16025:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16118:1;16106:8;:13;;16098:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16177:61;16207:1;16211:2;16215:12;16229:8;16177:21;:61::i;:::-;16312:8;16276:12;:16;16289:2;16276:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16377:8;16336:12;:16;16349:2;16336:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16436:2;16403:11;:25;16415:12;16403:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;16503:15;16453:11;:25;16465:12;16453:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;16536:20;16559:12;16536:35;;16593:9;16588:415;16608:8;16604:1;:12;16588:415;;;16672:12;16668:2;16647:38;;16664:1;16647:38;;;;;;;;;;;;16708:4;16704:249;;;16771:59;16802:1;16806:2;16810:12;16824:5;16771:22;:59::i;:::-;16737:196;;;;;;;;;;;;:::i;:::-;;;;;;;;;16704:249;16973:14;;;;;;;16618:3;;;;;;;16588:415;;;;17034:12;17019;:27;;;;15840:1298;17070:60;17099:1;17103:2;17107:12;17121:8;17070:20;:60::i;:::-;15840:1298;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:133::-;;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:137::-;;1074:6;1061:20;1052:29;;1090:32;1116:5;1090:32;:::i;:::-;1042:86;;;;:::o;1134:141::-;;1221:6;1215:13;1206:22;;1237:32;1263:5;1237:32;:::i;:::-;1196:79;;;;:::o;1294:271::-;;1398:3;1391:4;1383:6;1379:17;1375:27;1365:2;;1416:1;1413;1406:12;1365:2;1456:6;1443:20;1481:78;1555:3;1547:6;1540:4;1532:6;1528:17;1481:78;:::i;:::-;1472:87;;1355:210;;;;;:::o;1585:273::-;;1690:3;1683:4;1675:6;1671:17;1667:27;1657:2;;1708:1;1705;1698:12;1657:2;1748:6;1735:20;1773:79;1848:3;1840:6;1833:4;1825:6;1821:17;1773:79;:::i;:::-;1764:88;;1647:211;;;;;:::o;1864:139::-;;1948:6;1935:20;1926:29;;1964:33;1991:5;1964:33;:::i;:::-;1916:87;;;;:::o;2009:262::-;;2117:2;2105:9;2096:7;2092:23;2088:32;2085:2;;;2133:1;2130;2123:12;2085:2;2176:1;2201:53;2246:7;2237:6;2226:9;2222:22;2201:53;:::i;:::-;2191:63;;2147:117;2075:196;;;;:::o;2277:407::-;;;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2418:1;2415;2408:12;2370:2;2461:1;2486:53;2531:7;2522:6;2511:9;2507:22;2486:53;:::i;:::-;2476:63;;2432:117;2588:2;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2559:118;2360:324;;;;;:::o;2690:552::-;;;;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;2790:452;;;;;:::o;3248:809::-;;;;;3416:3;3404:9;3395:7;3391:23;3387:33;3384:2;;;3433:1;3430;3423:12;3384:2;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3887:2;3876:9;3872:18;3859:32;3918:18;3910:6;3907:30;3904:2;;;3950:1;3947;3940:12;3904:2;3978:62;4032:7;4023:6;4012:9;4008:22;3978:62;:::i;:::-;3968:72;;3830:220;3374:683;;;;;;;:::o;4063:401::-;;;4185:2;4173:9;4164:7;4160:23;4156:32;4153:2;;;4201:1;4198;4191:12;4153:2;4244:1;4269:53;4314:7;4305:6;4294:9;4290:22;4269:53;:::i;:::-;4259:63;;4215:117;4371:2;4397:50;4439:7;4430:6;4419:9;4415:22;4397:50;:::i;:::-;4387:60;;4342:115;4143:321;;;;;:::o;4470:407::-;;;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4553:324;;;;;:::o;4883:260::-;;4990:2;4978:9;4969:7;4965:23;4961:32;4958:2;;;5006:1;5003;4996:12;4958:2;5049:1;5074:52;5118:7;5109:6;5098:9;5094:22;5074:52;:::i;:::-;5064:62;;5020:116;4948:195;;;;:::o;5149:282::-;;5267:2;5255:9;5246:7;5242:23;5238:32;5235:2;;;5283:1;5280;5273:12;5235:2;5326:1;5351:63;5406:7;5397:6;5386:9;5382:22;5351:63;:::i;:::-;5341:73;;5297:127;5225:206;;;;:::o;5437:375::-;;5555:2;5543:9;5534:7;5530:23;5526:32;5523:2;;;5571:1;5568;5561:12;5523:2;5642:1;5631:9;5627:17;5614:31;5672:18;5664:6;5661:30;5658:2;;;5704:1;5701;5694:12;5658:2;5732:63;5787:7;5778:6;5767:9;5763:22;5732:63;:::i;:::-;5722:73;;5585:220;5513:299;;;;:::o;5818:262::-;;5926:2;5914:9;5905:7;5901:23;5897:32;5894:2;;;5942:1;5939;5932:12;5894:2;5985:1;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5956:117;5884:196;;;;:::o;6086:118::-;6173:24;6191:5;6173:24;:::i;:::-;6168:3;6161:37;6151:53;;:::o;6210:109::-;6291:21;6306:5;6291:21;:::i;:::-;6286:3;6279:34;6269:50;;:::o;6325:360::-;;6439:38;6471:5;6439:38;:::i;:::-;6493:70;6556:6;6551:3;6493:70;:::i;:::-;6486:77;;6572:52;6617:6;6612:3;6605:4;6598:5;6594:16;6572:52;:::i;:::-;6649:29;6671:6;6649:29;:::i;:::-;6644:3;6640:39;6633:46;;6415:270;;;;;:::o;6691:364::-;;6807:39;6840:5;6807:39;:::i;:::-;6862:71;6926:6;6921:3;6862:71;:::i;:::-;6855:78;;6942:52;6987:6;6982:3;6975:4;6968:5;6964:16;6942:52;:::i;:::-;7019:29;7041:6;7019:29;:::i;:::-;7014:3;7010:39;7003:46;;6783:272;;;;;:::o;7061:377::-;;7195:39;7228:5;7195:39;:::i;:::-;7250:89;7332:6;7327:3;7250:89;:::i;:::-;7243:96;;7348:52;7393:6;7388:3;7381:4;7374:5;7370:16;7348:52;:::i;:::-;7425:6;7420:3;7416:16;7409:23;;7171:267;;;;;:::o;7444:366::-;;7607:67;7671:2;7666:3;7607:67;:::i;:::-;7600:74;;7683:93;7772:3;7683:93;:::i;:::-;7801:2;7796:3;7792:12;7785:19;;7590:220;;;:::o;7816:366::-;;7979:67;8043:2;8038:3;7979:67;:::i;:::-;7972:74;;8055:93;8144:3;8055:93;:::i;:::-;8173:2;8168:3;8164:12;8157:19;;7962:220;;;:::o;8188:366::-;;8351:67;8415:2;8410:3;8351:67;:::i;:::-;8344:74;;8427:93;8516:3;8427:93;:::i;:::-;8545:2;8540:3;8536:12;8529:19;;8334:220;;;:::o;8560:366::-;;8723:67;8787:2;8782:3;8723:67;:::i;:::-;8716:74;;8799:93;8888:3;8799:93;:::i;:::-;8917:2;8912:3;8908:12;8901:19;;8706:220;;;:::o;8932:366::-;;9095:67;9159:2;9154:3;9095:67;:::i;:::-;9088:74;;9171:93;9260:3;9171:93;:::i;:::-;9289:2;9284:3;9280:12;9273:19;;9078:220;;;:::o;9304:366::-;;9467:67;9531:2;9526:3;9467:67;:::i;:::-;9460:74;;9543:93;9632:3;9543:93;:::i;:::-;9661:2;9656:3;9652:12;9645:19;;9450:220;;;:::o;9676:366::-;;9839:67;9903:2;9898:3;9839:67;:::i;:::-;9832:74;;9915:93;10004:3;9915:93;:::i;:::-;10033:2;10028:3;10024:12;10017:19;;9822:220;;;:::o;10048:366::-;;10211:67;10275:2;10270:3;10211:67;:::i;:::-;10204:74;;10287:93;10376:3;10287:93;:::i;:::-;10405:2;10400:3;10396:12;10389:19;;10194:220;;;:::o;10420:366::-;;10583:67;10647:2;10642:3;10583:67;:::i;:::-;10576:74;;10659:93;10748:3;10659:93;:::i;:::-;10777:2;10772:3;10768:12;10761:19;;10566:220;;;:::o;10792:366::-;;10955:67;11019:2;11014:3;10955:67;:::i;:::-;10948:74;;11031:93;11120:3;11031:93;:::i;:::-;11149:2;11144:3;11140:12;11133:19;;10938:220;;;:::o;11164:400::-;;11345:84;11427:1;11422:3;11345:84;:::i;:::-;11338:91;;11438:93;11527:3;11438:93;:::i;:::-;11556:1;11551:3;11547:11;11540:18;;11328:236;;;:::o;11570:366::-;;11733:67;11797:2;11792:3;11733:67;:::i;:::-;11726:74;;11809:93;11898:3;11809:93;:::i;:::-;11927:2;11922:3;11918:12;11911:19;;11716:220;;;:::o;11942:366::-;;12105:67;12169:2;12164:3;12105:67;:::i;:::-;12098:74;;12181:93;12270:3;12181:93;:::i;:::-;12299:2;12294:3;12290:12;12283:19;;12088:220;;;:::o;12314:366::-;;12477:67;12541:2;12536:3;12477:67;:::i;:::-;12470:74;;12553:93;12642:3;12553:93;:::i;:::-;12671:2;12666:3;12662:12;12655:19;;12460:220;;;:::o;12686:366::-;;12849:67;12913:2;12908:3;12849:67;:::i;:::-;12842:74;;12925:93;13014:3;12925:93;:::i;:::-;13043:2;13038:3;13034:12;13027:19;;12832:220;;;:::o;13058:366::-;;13221:67;13285:2;13280:3;13221:67;:::i;:::-;13214:74;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13204:220;;;:::o;13430:366::-;;13593:67;13657:2;13652:3;13593:67;:::i;:::-;13586:74;;13669:93;13758:3;13669:93;:::i;:::-;13787:2;13782:3;13778:12;13771:19;;13576:220;;;:::o;13802:366::-;;13965:67;14029:2;14024:3;13965:67;:::i;:::-;13958:74;;14041:93;14130:3;14041:93;:::i;:::-;14159:2;14154:3;14150:12;14143:19;;13948:220;;;:::o;14174:398::-;;14354:83;14435:1;14430:3;14354:83;:::i;:::-;14347:90;;14446:93;14535:3;14446:93;:::i;:::-;14564:1;14559:3;14555:11;14548:18;;14337:235;;;:::o;14578:366::-;;14741:67;14805:2;14800:3;14741:67;:::i;:::-;14734:74;;14817:93;14906:3;14817:93;:::i;:::-;14935:2;14930:3;14926:12;14919:19;;14724:220;;;:::o;14950:366::-;;15113:67;15177:2;15172:3;15113:67;:::i;:::-;15106:74;;15189:93;15278:3;15189:93;:::i;:::-;15307:2;15302:3;15298:12;15291:19;;15096:220;;;:::o;15322:366::-;;15485:67;15549:2;15544:3;15485:67;:::i;:::-;15478:74;;15561:93;15650:3;15561:93;:::i;:::-;15679:2;15674:3;15670:12;15663:19;;15468:220;;;:::o;15694:366::-;;15857:67;15921:2;15916:3;15857:67;:::i;:::-;15850:74;;15933:93;16022:3;15933:93;:::i;:::-;16051:2;16046:3;16042:12;16035:19;;15840:220;;;:::o;16066:366::-;;16229:67;16293:2;16288:3;16229:67;:::i;:::-;16222:74;;16305:93;16394:3;16305:93;:::i;:::-;16423:2;16418:3;16414:12;16407:19;;16212:220;;;:::o;16438:366::-;;16601:67;16665:2;16660:3;16601:67;:::i;:::-;16594:74;;16677:93;16766:3;16677:93;:::i;:::-;16795:2;16790:3;16786:12;16779:19;;16584:220;;;:::o;16810:366::-;;16973:67;17037:2;17032:3;16973:67;:::i;:::-;16966:74;;17049:93;17138:3;17049:93;:::i;:::-;17167:2;17162:3;17158:12;17151:19;;16956:220;;;:::o;17182:366::-;;17345:67;17409:2;17404:3;17345:67;:::i;:::-;17338:74;;17421:93;17510:3;17421:93;:::i;:::-;17539:2;17534:3;17530:12;17523:19;;17328:220;;;:::o;17554:366::-;;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17700:220;;;:::o;17926:118::-;18013:24;18031:5;18013:24;:::i;:::-;18008:3;18001:37;17991:53;;:::o;18050:701::-;;18353:95;18444:3;18435:6;18353:95;:::i;:::-;18346:102;;18465:95;18556:3;18547:6;18465:95;:::i;:::-;18458:102;;18577:148;18721:3;18577:148;:::i;:::-;18570:155;;18742:3;18735:10;;18335:416;;;;;:::o;18757:379::-;;18963:147;19106:3;18963:147;:::i;:::-;18956:154;;19127:3;19120:10;;18945:191;;;:::o;19142:222::-;;19273:2;19262:9;19258:18;19250:26;;19286:71;19354:1;19343:9;19339:17;19330:6;19286:71;:::i;:::-;19240:124;;;;:::o;19370:640::-;;19603:3;19592:9;19588:19;19580:27;;19617:71;19685:1;19674:9;19670:17;19661:6;19617:71;:::i;:::-;19698:72;19766:2;19755:9;19751:18;19742:6;19698:72;:::i;:::-;19780;19848:2;19837:9;19833:18;19824:6;19780:72;:::i;:::-;19899:9;19893:4;19889:20;19884:2;19873:9;19869:18;19862:48;19927:76;19998:4;19989:6;19927:76;:::i;:::-;19919:84;;19570:440;;;;;;;:::o;20016:210::-;;20141:2;20130:9;20126:18;20118:26;;20154:65;20216:1;20205:9;20201:17;20192:6;20154:65;:::i;:::-;20108:118;;;;:::o;20232:313::-;;20383:2;20372:9;20368:18;20360:26;;20432:9;20426:4;20422:20;20418:1;20407:9;20403:17;20396:47;20460:78;20533:4;20524:6;20460:78;:::i;:::-;20452:86;;20350:195;;;;:::o;20551:419::-;;20755:2;20744:9;20740:18;20732:26;;20804:9;20798:4;20794:20;20790:1;20779:9;20775:17;20768:47;20832:131;20958:4;20832:131;:::i;:::-;20824:139;;20722:248;;;:::o;20976:419::-;;21180:2;21169:9;21165:18;21157:26;;21229:9;21223:4;21219:20;21215:1;21204:9;21200:17;21193:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;21147:248;;;:::o;21401:419::-;;21605:2;21594:9;21590:18;21582:26;;21654:9;21648:4;21644:20;21640:1;21629:9;21625:17;21618:47;21682:131;21808:4;21682:131;:::i;:::-;21674:139;;21572:248;;;:::o;21826:419::-;;22030:2;22019:9;22015:18;22007:26;;22079:9;22073:4;22069:20;22065:1;22054:9;22050:17;22043:47;22107:131;22233:4;22107:131;:::i;:::-;22099:139;;21997:248;;;:::o;22251:419::-;;22455:2;22444:9;22440:18;22432:26;;22504:9;22498:4;22494:20;22490:1;22479:9;22475:17;22468:47;22532:131;22658:4;22532:131;:::i;:::-;22524:139;;22422:248;;;:::o;22676:419::-;;22880:2;22869:9;22865:18;22857:26;;22929:9;22923:4;22919:20;22915:1;22904:9;22900:17;22893:47;22957:131;23083:4;22957:131;:::i;:::-;22949:139;;22847:248;;;:::o;23101:419::-;;23305:2;23294:9;23290:18;23282:26;;23354:9;23348:4;23344:20;23340:1;23329:9;23325:17;23318:47;23382:131;23508:4;23382:131;:::i;:::-;23374:139;;23272:248;;;:::o;23526:419::-;;23730:2;23719:9;23715:18;23707:26;;23779:9;23773:4;23769:20;23765:1;23754:9;23750:17;23743:47;23807:131;23933:4;23807:131;:::i;:::-;23799:139;;23697:248;;;:::o;23951:419::-;;24155:2;24144:9;24140:18;24132:26;;24204:9;24198:4;24194:20;24190:1;24179:9;24175:17;24168:47;24232:131;24358:4;24232:131;:::i;:::-;24224:139;;24122:248;;;:::o;24376:419::-;;24580:2;24569:9;24565:18;24557:26;;24629:9;24623:4;24619:20;24615:1;24604:9;24600:17;24593:47;24657:131;24783:4;24657:131;:::i;:::-;24649:139;;24547:248;;;:::o;24801:419::-;;25005:2;24994:9;24990:18;24982:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25082:131;25208:4;25082:131;:::i;:::-;25074:139;;24972:248;;;:::o;25226:419::-;;25430:2;25419:9;25415:18;25407:26;;25479:9;25473:4;25469:20;25465:1;25454:9;25450:17;25443:47;25507:131;25633:4;25507:131;:::i;:::-;25499:139;;25397:248;;;:::o;25651:419::-;;25855:2;25844:9;25840:18;25832:26;;25904:9;25898:4;25894:20;25890:1;25879:9;25875:17;25868:47;25932:131;26058:4;25932:131;:::i;:::-;25924:139;;25822:248;;;:::o;26076:419::-;;26280:2;26269:9;26265:18;26257:26;;26329:9;26323:4;26319:20;26315:1;26304:9;26300:17;26293:47;26357:131;26483:4;26357:131;:::i;:::-;26349:139;;26247:248;;;:::o;26501:419::-;;26705:2;26694:9;26690:18;26682:26;;26754:9;26748:4;26744:20;26740:1;26729:9;26725:17;26718:47;26782:131;26908:4;26782:131;:::i;:::-;26774:139;;26672:248;;;:::o;26926:419::-;;27130:2;27119:9;27115:18;27107:26;;27179:9;27173:4;27169:20;27165:1;27154:9;27150:17;27143:47;27207:131;27333:4;27207:131;:::i;:::-;27199:139;;27097:248;;;:::o;27351:419::-;;27555:2;27544:9;27540:18;27532:26;;27604:9;27598:4;27594:20;27590:1;27579:9;27575:17;27568:47;27632:131;27758:4;27632:131;:::i;:::-;27624:139;;27522:248;;;:::o;27776:419::-;;27980:2;27969:9;27965:18;27957:26;;28029:9;28023:4;28019:20;28015:1;28004:9;28000:17;27993:47;28057:131;28183:4;28057:131;:::i;:::-;28049:139;;27947:248;;;:::o;28201:419::-;;28405:2;28394:9;28390:18;28382:26;;28454:9;28448:4;28444:20;28440:1;28429:9;28425:17;28418:47;28482:131;28608:4;28482:131;:::i;:::-;28474:139;;28372:248;;;:::o;28626:419::-;;28830:2;28819:9;28815:18;28807:26;;28879:9;28873:4;28869:20;28865:1;28854:9;28850:17;28843:47;28907:131;29033:4;28907:131;:::i;:::-;28899:139;;28797:248;;;:::o;29051:419::-;;29255:2;29244:9;29240:18;29232:26;;29304:9;29298:4;29294:20;29290:1;29279:9;29275:17;29268:47;29332:131;29458:4;29332:131;:::i;:::-;29324:139;;29222:248;;;:::o;29476:419::-;;29680:2;29669:9;29665:18;29657:26;;29729:9;29723:4;29719:20;29715:1;29704:9;29700:17;29693:47;29757:131;29883:4;29757:131;:::i;:::-;29749:139;;29647:248;;;:::o;29901:419::-;;30105:2;30094:9;30090:18;30082:26;;30154:9;30148:4;30144:20;30140:1;30129:9;30125:17;30118:47;30182:131;30308:4;30182:131;:::i;:::-;30174:139;;30072:248;;;:::o;30326:419::-;;30530:2;30519:9;30515:18;30507:26;;30579:9;30573:4;30569:20;30565:1;30554:9;30550:17;30543:47;30607:131;30733:4;30607:131;:::i;:::-;30599:139;;30497:248;;;:::o;30751:419::-;;30955:2;30944:9;30940:18;30932:26;;31004:9;30998:4;30994:20;30990:1;30979:9;30975:17;30968:47;31032:131;31158:4;31032:131;:::i;:::-;31024:139;;30922:248;;;:::o;31176:419::-;;31380:2;31369:9;31365:18;31357:26;;31429:9;31423:4;31419:20;31415:1;31404:9;31400:17;31393:47;31457:131;31583:4;31457:131;:::i;:::-;31449:139;;31347:248;;;:::o;31601:222::-;;31732:2;31721:9;31717:18;31709:26;;31745:71;31813:1;31802:9;31798:17;31789:6;31745:71;:::i;:::-;31699:124;;;;:::o;31829:129::-;;31890:20;;:::i;:::-;31880:30;;31919:33;31947:4;31939:6;31919:33;:::i;:::-;31870:88;;;:::o;31964:75::-;;32030:2;32024:9;32014:19;;32004:35;:::o;32045:307::-;;32196:18;32188:6;32185:30;32182:2;;;32218:18;;:::i;:::-;32182:2;32256:29;32278:6;32256:29;:::i;:::-;32248:37;;32340:4;32334;32330:15;32322:23;;32111:241;;;:::o;32358:308::-;;32510:18;32502:6;32499:30;32496:2;;;32532:18;;:::i;:::-;32496:2;32570:29;32592:6;32570:29;:::i;:::-;32562:37;;32654:4;32648;32644:15;32636:23;;32425:241;;;:::o;32672:98::-;;32757:5;32751:12;32741:22;;32730:40;;;:::o;32776:99::-;;32862:5;32856:12;32846:22;;32835:40;;;:::o;32881:168::-;;32998:6;32993:3;32986:19;33038:4;33033:3;33029:14;33014:29;;32976:73;;;;:::o;33055:147::-;;33193:3;33178:18;;33168:34;;;;:::o;33208:169::-;;33326:6;33321:3;33314:19;33366:4;33361:3;33357:14;33342:29;;33304:73;;;;:::o;33383:148::-;;33522:3;33507:18;;33497:34;;;;:::o;33537:305::-;;33596:20;33614:1;33596:20;:::i;:::-;33591:25;;33630:20;33648:1;33630:20;:::i;:::-;33625:25;;33784:1;33716:66;33712:74;33709:1;33706:81;33703:2;;;33790:18;;:::i;:::-;33703:2;33834:1;33831;33827:9;33820:16;;33581:261;;;;:::o;33848:185::-;;33905:20;33923:1;33905:20;:::i;:::-;33900:25;;33939:20;33957:1;33939:20;:::i;:::-;33934:25;;33978:1;33968:2;;33983:18;;:::i;:::-;33968:2;34025:1;34022;34018:9;34013:14;;33890:143;;;;:::o;34039:348::-;;34102:20;34120:1;34102:20;:::i;:::-;34097:25;;34136:20;34154:1;34136:20;:::i;:::-;34131:25;;34324:1;34256:66;34252:74;34249:1;34246:81;34241:1;34234:9;34227:17;34223:105;34220:2;;;34331:18;;:::i;:::-;34220:2;34379:1;34376;34372:9;34361:20;;34087:300;;;;:::o;34393:191::-;;34453:20;34471:1;34453:20;:::i;:::-;34448:25;;34487:20;34505:1;34487:20;:::i;:::-;34482:25;;34526:1;34523;34520:8;34517:2;;;34531:18;;:::i;:::-;34517:2;34576:1;34573;34569:9;34561:17;;34438:146;;;;:::o;34590:96::-;;34656:24;34674:5;34656:24;:::i;:::-;34645:35;;34635:51;;;:::o;34692:90::-;;34769:5;34762:13;34755:21;34744:32;;34734:48;;;:::o;34788:149::-;;34864:66;34857:5;34853:78;34842:89;;34832:105;;;:::o;34943:126::-;;35020:42;35013:5;35009:54;34998:65;;34988:81;;;:::o;35075:77::-;;35141:5;35130:16;;35120:32;;;:::o;35158:154::-;35242:6;35237:3;35232;35219:30;35304:1;35295:6;35290:3;35286:16;35279:27;35209:103;;;:::o;35318:307::-;35386:1;35396:113;35410:6;35407:1;35404:13;35396:113;;;35495:1;35490:3;35486:11;35480:18;35476:1;35471:3;35467:11;35460:39;35432:2;35429:1;35425:10;35420:15;;35396:113;;;35527:6;35524:1;35521:13;35518:2;;;35607:1;35598:6;35593:3;35589:16;35582:27;35518:2;35367:258;;;;:::o;35631:320::-;;35712:1;35706:4;35702:12;35692:22;;35759:1;35753:4;35749:12;35780:18;35770:2;;35836:4;35828:6;35824:17;35814:27;;35770:2;35898;35890:6;35887:14;35867:18;35864:38;35861:2;;;35917:18;;:::i;:::-;35861:2;35682:269;;;;:::o;35957:281::-;36040:27;36062:4;36040:27;:::i;:::-;36032:6;36028:40;36170:6;36158:10;36155:22;36134:18;36122:10;36119:34;36116:62;36113:2;;;36181:18;;:::i;:::-;36113:2;36221:10;36217:2;36210:22;36000:238;;;:::o;36244:233::-;;36306:24;36324:5;36306:24;:::i;:::-;36297:33;;36352:66;36345:5;36342:77;36339:2;;;36422:18;;:::i;:::-;36339:2;36469:1;36462:5;36458:13;36451:20;;36287:190;;;:::o;36483:176::-;;36532:20;36550:1;36532:20;:::i;:::-;36527:25;;36566:20;36584:1;36566:20;:::i;:::-;36561:25;;36605:1;36595:2;;36610:18;;:::i;:::-;36595:2;36651:1;36648;36644:9;36639:14;;36517:142;;;;:::o;36665:180::-;36713:77;36710:1;36703:88;36810:4;36807:1;36800:15;36834:4;36831:1;36824:15;36851:180;36899:77;36896:1;36889:88;36996:4;36993:1;36986:15;37020:4;37017:1;37010:15;37037:180;37085:77;37082:1;37075:88;37182:4;37179:1;37172:15;37206:4;37203:1;37196:15;37223:180;37271:77;37268:1;37261:88;37368:4;37365:1;37358:15;37392:4;37389:1;37382:15;37409:102;;37501:2;37497:7;37492:2;37485:5;37481:14;37477:28;37467:38;;37457:54;;;:::o;37517:221::-;37657:34;37653:1;37645:6;37641:14;37634:58;37726:4;37721:2;37713:6;37709:15;37702:29;37623:115;:::o;37744:225::-;37884:34;37880:1;37872:6;37868:14;37861:58;37953:8;37948:2;37940:6;37936:15;37929:33;37850:119;:::o;37975:229::-;38115:34;38111:1;38103:6;38099:14;38092:58;38184:12;38179:2;38171:6;38167:15;38160:37;38081:123;:::o;38210:222::-;38350:34;38346:1;38338:6;38334:14;38327:58;38419:5;38414:2;38406:6;38402:15;38395:30;38316:116;:::o;38438:224::-;38578:34;38574:1;38566:6;38562:14;38555:58;38647:7;38642:2;38634:6;38630:15;38623:32;38544:118;:::o;38668:172::-;38808:24;38804:1;38796:6;38792:14;38785:48;38774:66;:::o;38846:182::-;38986:34;38982:1;38974:6;38970:14;38963:58;38952:76;:::o;39034:244::-;39174:34;39170:1;39162:6;39158:14;39151:58;39243:27;39238:2;39230:6;39226:15;39219:52;39140:138;:::o;39284:230::-;39424:34;39420:1;39412:6;39408:14;39401:58;39493:13;39488:2;39480:6;39476:15;39469:38;39390:124;:::o;39520:225::-;39660:34;39656:1;39648:6;39644:14;39637:58;39729:8;39724:2;39716:6;39712:15;39705:33;39626:119;:::o;39751:155::-;39891:7;39887:1;39879:6;39875:14;39868:31;39857:49;:::o;39912:182::-;40052:34;40048:1;40040:6;40036:14;40029:58;40018:76;:::o;40100:171::-;40240:23;40236:1;40228:6;40224:14;40217:47;40206:65;:::o;40277:234::-;40417:34;40413:1;40405:6;40401:14;40394:58;40486:17;40481:2;40473:6;40469:15;40462:42;40383:128;:::o;40517:176::-;40657:28;40653:1;40645:6;40641:14;40634:52;40623:70;:::o;40699:237::-;40839:34;40835:1;40827:6;40823:14;40816:58;40908:20;40903:2;40895:6;40891:15;40884:45;40805:131;:::o;40942:168::-;41082:20;41078:1;41070:6;41066:14;41059:44;41048:62;:::o;41116:221::-;41256:34;41252:1;41244:6;41240:14;41233:58;41325:4;41320:2;41312:6;41308:15;41301:29;41222:115;:::o;41343:114::-;41449:8;:::o;41463:166::-;41603:18;41599:1;41591:6;41587:14;41580:42;41569:60;:::o;41635:238::-;41775:34;41771:1;41763:6;41759:14;41752:58;41844:21;41839:2;41831:6;41827:15;41820:46;41741:132;:::o;41879:220::-;42019:34;42015:1;42007:6;42003:14;41996:58;42088:3;42083:2;42075:6;42071:15;42064:28;41985:114;:::o;42105:227::-;42245:34;42241:1;42233:6;42229:14;42222:58;42314:10;42309:2;42301:6;42297:15;42290:35;42211:121;:::o;42338:178::-;42478:30;42474:1;42466:6;42462:14;42455:54;42444:72;:::o;42522:233::-;42662:34;42658:1;42650:6;42646:14;42639:58;42731:16;42726:2;42718:6;42714:15;42707:41;42628:127;:::o;42761:181::-;42901:33;42897:1;42889:6;42885:14;42878:57;42867:75;:::o;42948:234::-;43088:34;43084:1;43076:6;43072:14;43065:58;43157:17;43152:2;43144:6;43140:15;43133:42;43054:128;:::o;43188:232::-;43328:34;43324:1;43316:6;43312:14;43305:58;43397:15;43392:2;43384:6;43380:15;43373:40;43294:126;:::o;43426:122::-;43499:24;43517:5;43499:24;:::i;:::-;43492:5;43489:35;43479:2;;43538:1;43535;43528:12;43479:2;43469:79;:::o;43554:116::-;43624:21;43639:5;43624:21;:::i;:::-;43617:5;43614:32;43604:2;;43660:1;43657;43650:12;43604:2;43594:76;:::o;43676:120::-;43748:23;43765:5;43748:23;:::i;:::-;43741:5;43738:34;43728:2;;43786:1;43783;43776:12;43728:2;43718:78;:::o;43802:122::-;43875:24;43893:5;43875:24;:::i;:::-;43868:5;43865:35;43855:2;;43914:1;43911;43904:12;43855:2;43845:79;:::o
Swarm Source
ipfs://282946ed045367df1ccc1ae00a089c804cb510cb79a1098af3ee89628b374d56
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.