More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 869 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Crowd Sale | 17687416 | 573 days ago | IN | 0.0005 ETH | 0.00242215 | ||||
Crowd Sale | 17687414 | 573 days ago | IN | 0.0005 ETH | 0.00247924 | ||||
Crowd Sale | 17687411 | 573 days ago | IN | 0.0005 ETH | 0.0026364 | ||||
Crowd Sale | 17687409 | 573 days ago | IN | 0.0005 ETH | 0.00266654 | ||||
Crowd Sale | 17687401 | 573 days ago | IN | 0.0005 ETH | 0.00233268 | ||||
Crowd Sale | 17687391 | 573 days ago | IN | 0.0005 ETH | 0.00253659 | ||||
Add Nft To List | 17687386 | 573 days ago | IN | 0 ETH | 0.01611083 | ||||
Crowd Sale | 17608408 | 584 days ago | IN | 0.15 ETH | 0.00117598 | ||||
Crowd Sale | 17608402 | 584 days ago | IN | 0.15 ETH | 0.00125498 | ||||
Crowd Sale | 17608393 | 584 days ago | IN | 0.15 ETH | 0.00121531 | ||||
Crowd Sale | 17603740 | 585 days ago | IN | 0.15 ETH | 0.00116013 | ||||
Crowd Sale | 17488041 | 601 days ago | IN | 0.15 ETH | 0.00143959 | ||||
Crowd Sale | 17488034 | 601 days ago | IN | 0.15 ETH | 0.00140745 | ||||
Crowd Sale | 17488028 | 601 days ago | IN | 0.15 ETH | 0.00147162 | ||||
Crowd Sale | 17487773 | 601 days ago | IN | 0.15 ETH | 0.00166068 | ||||
Crowd Sale | 15739478 | 846 days ago | IN | 0.4 ETH | 0.00149286 | ||||
Remove From Whit... | 15725947 | 848 days ago | IN | 0 ETH | 0.00090298 | ||||
Public Sale | 15707709 | 851 days ago | IN | 0.1875 ETH | 0.00216873 | ||||
Public Sale | 15707503 | 851 days ago | IN | 0.1875 ETH | 0.00203481 | ||||
Public Sale | 15707417 | 851 days ago | IN | 0.1875 ETH | 0.00205294 | ||||
Public Sale | 15694678 | 853 days ago | IN | 0.1875 ETH | 0.00056519 | ||||
Public Sale | 15689992 | 853 days ago | IN | 0.1875 ETH | 0.0019282 | ||||
Add To Whitelist | 15689519 | 853 days ago | IN | 0 ETH | 0.00090412 | ||||
Public Sale | 15689330 | 853 days ago | IN | 0.3 ETH | 0.00114164 | ||||
Public Sale | 15689212 | 853 days ago | IN | 0.3 ETH | 0.00104801 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17687416 | 573 days ago | 0.0005 ETH | ||||
17687414 | 573 days ago | 0.0005 ETH | ||||
17687411 | 573 days ago | 0.0005 ETH | ||||
17687409 | 573 days ago | 0.0005 ETH | ||||
17687401 | 573 days ago | 0.0005 ETH | ||||
17687391 | 573 days ago | 0.0005 ETH | ||||
17608408 | 584 days ago | 0.15 ETH | ||||
17608402 | 584 days ago | 0.15 ETH | ||||
17608393 | 584 days ago | 0.15 ETH | ||||
17603740 | 585 days ago | 0.15 ETH | ||||
17488041 | 601 days ago | 0.15 ETH | ||||
17488034 | 601 days ago | 0.15 ETH | ||||
17488028 | 601 days ago | 0.15 ETH | ||||
17487773 | 601 days ago | 0.15 ETH | ||||
15739478 | 846 days ago | 0.4 ETH | ||||
15707709 | 851 days ago | 0.1875 ETH | ||||
15707503 | 851 days ago | 0.1875 ETH | ||||
15707417 | 851 days ago | 0.1875 ETH | ||||
15694678 | 853 days ago | 0.1875 ETH | ||||
15689992 | 853 days ago | 0.1875 ETH | ||||
15689330 | 853 days ago | 0.3 ETH | ||||
15689212 | 853 days ago | 0.3 ETH | ||||
15689186 | 853 days ago | 0.3 ETH | ||||
15689086 | 853 days ago | 0.3 ETH | ||||
15686208 | 854 days ago | 0.1875 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
InitialCoinOffering
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-07 */ // SPDX-License-Identifier: UNLICENSE pragma solidity 0.8.4; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } contract InitialCoinOffering is Ownable, ReentrancyGuard, ERC721Holder, Pausable { enum Sale { preSale, publicSale, crowdSale} address public collarQuest; uint128 public maxBuy = 2; uint128 constant DIVISOR = 10000; uint public currentSaleId = 0; uint[3] public discount = [5000,2500,0]; struct Timestamp { uint64 startTime; uint64 endTime; } struct NFTList { address nftAddress; uint price; bool isActive; } struct WhitelistInfo { mapping(uint => uint8) buyCount; bool isWhitelisted; } Timestamp[2] public timestamp; mapping(uint => NFTList) public listedOnSale; mapping(address => WhitelistInfo) public whiteList; event Buy( address indexed account, uint indexed nftId, uint price, uint64 timestamp, uint8 saleType ); event AddedNFTs( address indexed nftAddress, uint indexed nftId, uint64 timestamp ); event RemovedNFTs( address indexed nftAddress, uint indexed nftId, uint64 timestamp ); constructor(address collarQuest_) { collarQuest = collarQuest_; } modifier onlyWhitelister() { require(whiteList[_msgSender()].isWhitelisted, "Only whitelist"); _; } /** * @dev setting presale duration. */ function setPresaleTimestamp( Timestamp calldata timestamp_) external onlyOwner { require(timestamp[uint(Sale.publicSale)].endTime == 0, "InitialCoinOffering :: setPresaleTimestamp : public sale end time == 0"); require((timestamp_.startTime > 0) && (timestamp_.startTime > getBlockTimestamp()), "InitialCoinOffering :: setPresaleTimestamp : start time > block.timestamp"); require(timestamp_.endTime > timestamp_.startTime, "InitialCoinOffering :: setPresaleTimestamp : end time > start time"); timestamp[uint(Sale.preSale)] = timestamp_; } /** * @dev setting public sale duration. */ function setPublicSaleTimestamp( Timestamp calldata timestamp_) external onlyOwner { require(timestamp[uint(Sale.preSale)].endTime > 0, "InitialCoinOffering :: setPublicSaleTimestamp : presale end time > 0"); require((timestamp_.startTime > 0) && (timestamp_.startTime > timestamp[uint(Sale.preSale)].endTime), "InitialCoinOffering :: setPublicSaleTimestamp : start time > presale end time"); require(timestamp_.endTime > timestamp_.startTime, "InitialCoinOffering :: setPublicSaleTimestamp : end time > start time"); currentSaleId++; timestamp[uint(Sale.publicSale)] = timestamp_; } /** * @dev reset both public and presale. */ function resetSale() external onlyOwner { require(timestamp[uint(Sale.publicSale)].endTime < getBlockTimestamp(),"InitialCoinOffering :: resetSale : wait till public sale end"); timestamp[uint(Sale.publicSale)] = Timestamp(0,0); timestamp[uint(Sale.preSale)] = Timestamp(0,0); } /** * @dev setting maximum buy count for whitelisters in presale. */ function updateMaxBuy( uint128 maxBuy_) external onlyOwner { require(maxBuy_ != 0, "InitialCoinOffering :: updateMaxBuy : maxBuy != 0"); maxBuy = maxBuy_; } /** * @dev update collar quest nft address. */ function updateCollarQuest( address collarQuest_) external onlyOwner { require(collarQuest_ != address(0),"InitialCoinOffering :: updateCollarQuest : collarQuest_ != zero address"); collarQuest = collarQuest_; } /** * @dev add nft to the sale list. */ function addNftToList( uint[] memory nftId, uint[] memory price) external onlyOwner { require(nftId.length == price.length, "invalid length"); for(uint i=0;i<nftId.length;i++) { require(price[i] > 0,"InitialCoinOffering :: addNftToList : price > 0"); require(!listedOnSale[nftId[i]].isActive,"InitialCoinOffering :: addNftToList : not active"); listedOnSale[nftId[i]] = NFTList( address(collarQuest), price[i], true ); IERC721(collarQuest).safeTransferFrom( owner(), address(this), nftId[i] ); emit AddedNFTs( collarQuest, nftId[i], uint64(block.timestamp) ); } } /** * @dev update price of NFT added to the sale list. */ function updateNftPrice( uint[] memory nftId, uint[] memory price) external onlyOwner { require(nftId.length == price.length, "InitialCoinOffering :: updateNftPrice : invalid length"); for(uint i=0;i<nftId.length;i++) { require(price[i] > 0,"InitialCoinOffering :: updateNftPrice : price > 0"); require(listedOnSale[nftId[i]].isActive,"InitialCoinOffering :: updateNftPrice : not active"); listedOnSale[nftId[i]].price = price[i]; } } /** * @dev update discount of NFT added to the sale list. */ function updateNftDiscount(uint sale, uint16 newDiscount) external onlyOwner { require((newDiscount > 0) && (newDiscount < DIVISOR),"InitialCoinOffering :: updateNftDiscount : price > 0"); require(sale < discount.length,"InitialCoinOffering :: updateNftDiscount : price > 0"); discount[sale] = newDiscount; } /** * @dev remove NFT from the sale list */ function removeNftToList( uint[] memory nftId) external onlyOwner { require(nftId.length > 0, "InitialCoinOffering :: removeNftToList : length must be higher than zero"); for(uint i=0;i<nftId.length;i++) { require(listedOnSale[nftId[i]].isActive,"InitialCoinOffering :: removeNftToList : nft should be active on sale"); listedOnSale[nftId[i]].isActive = false; IERC721(collarQuest).safeTransferFrom( address(this), owner(), nftId[i] ); emit RemovedNFTs( collarQuest, nftId[i], uint64(block.timestamp) ); } } /** * @dev add whitelist address. */ function addToWhitelist(address[] calldata addresses) external onlyOwner { require(addresses.length > 0,"InitialCoinOffering :: addToWhitelist : addresses length"); for(uint8 i=0; i<addresses.length; i++) { if(!whiteList[addresses[i]].isWhitelisted) { whiteList[addresses[i]].isWhitelisted = true; } } } /** * @dev remove whitelist address. */ function removeFromWhitelist(address[] calldata addresses) external onlyOwner { require(addresses.length > 0,"InitialCoinOffering :: removeFromWhitelist : addresses length"); for(uint8 i=0; i<addresses.length; i++) { if(whiteList[addresses[i]].isWhitelisted) { whiteList[addresses[i]].isWhitelisted = false; } } } /** * @dev whitelist addresses can buy NFTs on presale at discount price. */ function preSale( uint nftId) external payable onlyWhitelister whenNotPaused nonReentrant { require(!_isContract(_msgSender()),"InitialCoinOffering :: preSale : not a contract "); require( (timestamp[uint(Sale.preSale)].startTime > 0) && (timestamp[uint(Sale.preSale)].startTime <= getBlockTimestamp()) && (timestamp[uint(Sale.preSale)].endTime >= getBlockTimestamp()), "InitialCoinOffering :: preSale : presale sale not yet started or sale ended" ); require(listedOnSale[nftId].isActive,"InitialCoinOffering :: preSale : nft is not active"); require(getBuyerCount(_msgSender(),currentSaleId) < maxBuy,"InitialCoinOffering :: preSale : buyCount < maxBuy"); require(IERC721(listedOnSale[nftId].nftAddress).ownerOf(nftId) == address(this),"InitialCoinOffering :: preSale : NFT is not owned by contract"); whiteList[_msgSender()].buyCount[currentSaleId]++; listedOnSale[nftId].isActive = false; uint value = getDiscountPrice( nftId, uint8(Sale.preSale)); require(msg.value == value,"InitialCoinOffering :: preSale : invalid price value"); _buy(_msgSender(), nftId, value, uint8(Sale.preSale)); } /** * @dev both public and whitelisted address can buy NFTs at discount price. */ function publicSale( uint nftId) external payable whenNotPaused nonReentrant { require(!_isContract(_msgSender()),"InitialCoinOffering :: publicSale : address should not be a contract address"); require( (timestamp[uint(Sale.publicSale)].startTime > 0) && (timestamp[uint(Sale.publicSale)].startTime <= getBlockTimestamp()) && (timestamp[uint(Sale.publicSale)].endTime >= getBlockTimestamp()), "InitialCoinOffering :: publicSale : public sale not yet started or sale ended" ); require(listedOnSale[nftId].isActive,"InitialCoinOffering :: publicSale : nft is not active"); require(IERC721(listedOnSale[nftId].nftAddress).ownerOf(nftId) == address(this),"InitialCoinOffering :: publicSale : NFT is not owned by contract"); uint value = getDiscountPrice(nftId,uint8(Sale.publicSale)); require(msg.value == value,"InitialCoinOffering :: publicSale : invalid price value"); listedOnSale[nftId].isActive = false; _buy(_msgSender(), nftId, value, uint8(Sale.publicSale)); } /** * @dev Can only buy nft token without any discount offer. */ function crowdSale( uint nftId) external payable whenNotPaused nonReentrant { require(!_isContract(_msgSender()),"InitialCoinOffering :: crowdSale : address should not be a contract address"); require( (timestamp[uint(Sale.publicSale)].endTime > 0) && (timestamp[uint(Sale.publicSale)].endTime <= getBlockTimestamp()), "InitialCoinOffering :: crowdSale : public sale is not ended" ); require(listedOnSale[nftId].isActive,"InitialCoinOffering :: crowdSale : nft is not active"); require(IERC721(listedOnSale[nftId].nftAddress).ownerOf(nftId) == address(this),"InitialCoinOffering :: crowdSale : NFT is not owned by contract"); uint value = getDiscountPrice(nftId,uint8(Sale.crowdSale)); require(msg.value == value,"InitialCoinOffering :: crowdSale : invalid price value"); listedOnSale[nftId].isActive = false; _buy(_msgSender(), nftId, value, uint8(Sale.crowdSale)); } /** * @dev Allow owner to claim locked ETH on the contract. */ function emergencyRelease( uint amount) public onlyOwner { address self = address(this); require(self.balance >= amount, "InitialCoinOffering :: emergencyRelease : insufficient balance"); _send(payable(owner()),amount); } /** * @dev Pauses the sale. */ function pause() public onlyOwner { _pause(); } /** * @dev Unpause the sale. */ function unpause() public onlyOwner { _unpause(); } /** * @dev Transfers offer token to owner. */ function _buy( address buyer, uint nftId, uint value, uint8 saleType) private { _send(payable(owner()),value); IERC721(listedOnSale[nftId].nftAddress).safeTransferFrom( address(this), buyer, nftId ); emit Buy( buyer, nftId, value, uint64(block.timestamp), saleType ); } /** * @dev Send ether to the recipient address. */ function _send(address payable recipient, uint256 amount) private { 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"); } /** * @dev Returns discount price. */ function getDiscountPrice(uint nftId, uint sale) public view returns (uint discountPrice) { discountPrice = listedOnSale[nftId].price * (DIVISOR - discount[sale]) / DIVISOR; } /** * @dev Returns buyer count. */ function getBuyerCount(address buyer, uint saleId) public view returns (uint256) { return whiteList[buyer].buyCount[saleId]; } /** * @dev Returns current block time. */ function getBlockTimestamp() private view returns (uint256) { return block.timestamp; } /** * @dev Returns true if caller is an contract. */ function _isContract(address account) private view returns (bool) { return account.code.length > 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"collarQuest_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"AddedNFTs","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"},{"indexed":false,"internalType":"uint8","name":"saleType","type":"uint8"}],"name":"Buy","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"RemovedNFTs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"nftId","type":"uint256[]"},{"internalType":"uint256[]","name":"price","type":"uint256[]"}],"name":"addNftToList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collarQuest","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"crowdSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"currentSaleId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"discount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"saleId","type":"uint256"}],"name":"getBuyerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"sale","type":"uint256"}],"name":"getDiscountPrice","outputs":[{"internalType":"uint256","name":"discountPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"listedOnSale","outputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"preSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"publicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"nftId","type":"uint256[]"}],"name":"removeNftToList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"startTime","type":"uint64"},{"internalType":"uint64","name":"endTime","type":"uint64"}],"internalType":"struct InitialCoinOffering.Timestamp","name":"timestamp_","type":"tuple"}],"name":"setPresaleTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"startTime","type":"uint64"},{"internalType":"uint64","name":"endTime","type":"uint64"}],"internalType":"struct InitialCoinOffering.Timestamp","name":"timestamp_","type":"tuple"}],"name":"setPublicSaleTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timestamp","outputs":[{"internalType":"uint64","name":"startTime","type":"uint64"},{"internalType":"uint64","name":"endTime","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collarQuest_","type":"address"}],"name":"updateCollarQuest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"maxBuy_","type":"uint128"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sale","type":"uint256"},{"internalType":"uint16","name":"newDiscount","type":"uint16"}],"name":"updateNftDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"nftId","type":"uint256[]"},{"internalType":"uint256[]","name":"price","type":"uint256[]"}],"name":"updateNftPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"isWhitelisted","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
600380546001600160801b03191660021781556000600481905560e060405261138860809081526109c460a05260c091909152620000419160059190620000fc565b503480156200004f57600080fd5b506040516200340e3803806200340e83398101604081905262000072916200015c565b6200007d33620000ac565b60018055600280546001600160a01b03909216610100026001600160a81b03199092169190911790556200018c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b826003810192821562000133579160200282015b8281111562000133578251829061ffff1690559160200191906001019062000110565b506200014192915062000145565b5090565b5b8082111562000141576000815560010162000146565b6000602082840312156200016e578081fd5b81516001600160a01b038116811462000185578182fd5b9392505050565b613272806200019c6000396000f3fe6080604052600436106101d85760003560e01c8063715018a611610102578063b4d6598811610095578063e0ffa0af11610064578063e0ffa0af146105a9578063f2fde38b14610619578063f462f5e514610639578063fa370c411461065957600080fd5b8063b4d659881461052f578063c1e1d9541461054f578063cc6b2c0f14610564578063d50a64aa1461058457600080fd5b80638b0987c1116100d15780638b0987c1146104845780638da5cb5b146104ca57806397b9f864146104fc578063b287c8ed1461051c57600080fd5b8063715018a61461041a5780637ee27a0b1461042f5780637f6497831461044f5780638456cb591461046f57600080fd5b8063372c12b11161017a578063548db17411610149578063548db1741461038a5780635c975abb146103aa5780635ee2d5b6146103c257806370db69d6146103e257600080fd5b8063372c12b1146102ff57806339c28c62146103425780633f4ba83a1461036257806352878a401461037757600080fd5b8063150b7a02116101b6578063150b7a02146102655780632472348d146102a95780632e849894146102c957806333574eaf146102df57600080fd5b80630b1d07de146101dd578063131f4104146102105780631386dc1214610225575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612ee0565b610679565b6040519081526020015b60405180910390f35b61022361021e366004612ee0565b610690565b005b34801561023157600080fd5b50610245610240366004612ee0565b610b1a565b604080516001600160401b03938416815292909116602083015201610207565b34801561027157600080fd5b50610290610280366004612cb3565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610207565b3480156102b557600080fd5b506102236102c4366004612e42565b610b45565b3480156102d557600080fd5b506101fd60045481565b3480156102eb57600080fd5b506102236102fa366004612ef8565b610f31565b34801561030b57600080fd5b5061033261031a366004612c7b565b600b6020526000908152604090206001015460ff1681565b6040519015158152602001610207565b34801561034e57600080fd5b5061022361035d366004612ee0565b610fdc565b34801561036e57600080fd5b5061022361109d565b610223610385366004612ee0565b6110d1565b34801561039657600080fd5b506102236103a5366004612d99565b611420565b3480156103b657600080fd5b5060025460ff16610332565b3480156103ce57600080fd5b506101fd6103dd366004612f2d565b6115a8565b3480156103ee57600080fd5b50600354610402906001600160801b031681565b6040516001600160801b039091168152602001610207565b34801561042657600080fd5b50610223611609565b34801561043b57600080fd5b5061022361044a366004612e08565b61163d565b34801561045b57600080fd5b5061022361046a366004612d99565b611970565b34801561047b57600080fd5b50610223611af7565b34801561049057600080fd5b506101fd61049f366004612d6e565b6001600160a01b03919091166000908152600b60209081526040808320938352929052205460ff1690565b3480156104d657600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610207565b34801561050857600080fd5b50610223610517366004612ea2565b611b29565b61022361052a366004612ee0565b611dae565b34801561053b57600080fd5b5061022361054a366004612eb9565b612131565b34801561055b57600080fd5b506102236121ed565b34801561057057600080fd5b5061022361057f366004612e42565b6122e5565b34801561059057600080fd5b506002546104e49061010090046001600160a01b031681565b3480156105b557600080fd5b506105f26105c4366004612ee0565b600a602052600090815260409020805460018201546002909201546001600160a01b03909116919060ff1683565b604080516001600160a01b0390941684526020840192909252151590820152606001610207565b34801561062557600080fd5b50610223610634366004612c7b565b61250e565b34801561064557600080fd5b50610223610654366004612ea2565b6125a9565b34801561066557600080fd5b50610223610674366004612c7b565b6127dc565b6005816003811061068957600080fd5b0154905081565b336000908152600b602052604090206001015460ff166106e85760405162461bcd60e51b815260206004820152600e60248201526d13db9b1e481dda1a5d195b1a5cdd60921b60448201526064015b60405180910390fd5b60025460ff161561070b5760405162461bcd60e51b81526004016106df90612f6a565b6002600154141561072e5760405162461bcd60e51b81526004016106df9061300b565b6002600155610747335b6001600160a01b03163b151590565b1561079b5760405162461bcd60e51b815260206004820152603060248201526000805160206131dd83398151915260448201526f0103737ba10309031b7b73a3930b1ba160851b60648201526084016106df565b6008546001600160401b0316158015906107c35750426008600001546001600160401b031611155b80156107e4575042600860000154600160401b90046001600160401b031610155b6108585760405162461bcd60e51b815260206004820152604b60248201526000805160206131dd83398151915260448201527f2070726573616c652073616c65206e6f74207965742073746172746564206f7260648201526a081cd85b1948195b99195960aa1b608482015260a4016106df565b6000818152600a602052604090206002015460ff166108c25760405162461bcd60e51b815260206004820152603260248201526000805160206131dd833981519152604482015271206e6674206973206e6f742061637469766560701b60648201526084016106df565b600354600454336000908152600b6020908152604080832093835292905220546001600160801b039091169060ff16106109475760405162461bcd60e51b815260206004820152603260248201526000805160206131dd83398151915260448201527120627579436f756e74203c206d617842757960701b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190612c97565b6001600160a01b031614610a3a5760405162461bcd60e51b815260206004820152603d60248201526000805160206131dd83398151915260448201527f204e4654206973206e6f74206f776e656420627920636f6e747261637400000060648201526084016106df565b336000908152600b6020908152604080832060045484529091528120805460ff1691610a65836130e3565b825460ff9182166101009390930a9283029190920219909116179055506000818152600a60205260408120600201805460ff19169055610aa982825b60ff166115a8565b9050803414610b055760405162461bcd60e51b815260206004820152603460248201526000805160206131dd83398151915260448201527320696e76616c69642070726963652076616c756560601b60648201526084016106df565b610b1233838360006128ba565b505060018055565b60088160028110610b2a57600080fd5b01546001600160401b038082169250600160401b9091041682565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016106df90612f94565b8051825114610bb15760405162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840d8cadccee8d60931b60448201526064016106df565b60005b8251811015610f2c576000828281518110610bdf57634e487b7160e01b600052603260045260246000fd5b602002602001015111610c4c5760405162461bcd60e51b815260206004820152602f60248201527f496e697469616c436f696e4f66666572696e67203a3a206164644e6674546f4c60448201526e0697374203a207072696365203e203608c1b60648201526084016106df565b600a6000848381518110610c7057634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff1615610cf75760405162461bcd60e51b815260206004820152603060248201527f496e697469616c436f696e4f66666572696e67203a3a206164644e6674546f4c60448201526f697374203a206e6f742061637469766560801b60648201526084016106df565b6040518060600160405280600260019054906101000a90046001600160a01b03166001600160a01b03168152602001838381518110610d4657634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200160011515815250600a6000858481518110610d7e57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040908101600020835181546001600160a01b039182166001600160a01b03199091161782559284015160018201559201516002928301805491151560ff1990921691909117905590546101009004166342842e0e610dfa6000546001600160a01b031690565b30868581518110610e1b57634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050828181518110610ead57634e487b7160e01b600052603260045260246000fd5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b03167fa2d24cf994f861ab4eaea65cb41852d7185de0f379a6e05b1415d99d3d0feb0842604051610f1291906001600160401b0391909116815260200190565b60405180910390a380610f24816130c8565b915050610bb4565b505050565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b81526004016106df90612f94565b60008161ffff16118015610f74575061271061ffff8216105b610f905760405162461bcd60e51b81526004016106df90612fc9565b60038210610fb05760405162461bcd60e51b81526004016106df90612fc9565b8061ffff1660058360038110610fd657634e487b7160e01b600052603260045260246000fd5b01555050565b6000546001600160a01b031633146110065760405162461bcd60e51b81526004016106df90612f94565b30803182111561107e5760405162461bcd60e51b815260206004820152603e60248201527f496e697469616c436f696e4f66666572696e67203a3a20656d657267656e637960448201527f52656c65617365203a20696e73756666696369656e742062616c616e6365000060648201526084016106df565b6110996110936000546001600160a01b031690565b836129a5565b5050565b6000546001600160a01b031633146110c75760405162461bcd60e51b81526004016106df90612f94565b6110cf612abe565b565b60025460ff16156110f45760405162461bcd60e51b81526004016106df90612f6a565b600260015414156111175760405162461bcd60e51b81526004016106df9061300b565b600260015561112533610738565b1561119a5760405162461bcd60e51b815260206004820152604b60248201526000805160206131fd83398151915260448201527f203a20616464726573732073686f756c64206e6f74206265206120636f6e747260648201526a616374206164647265737360a81b608482015260a4016106df565b600954600160401b90046001600160401b0316158015906111d0575042600860010154600160401b90046001600160401b031611155b6112305760405162461bcd60e51b815260206004820152603b60248201526000805160206131fd83398151915260448201527f203a207075626c69632073616c65206973206e6f7420656e646564000000000060648201526084016106df565b6000818152600a602052604090206002015460ff1661129c5760405162461bcd60e51b815260206004820152603460248201526000805160206131fd833981519152604482015273203a206e6674206973206e6f742061637469766560601b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190612c97565b6001600160a01b03161461138f5760405162461bcd60e51b815260206004820152603f60248201526000805160206131fd83398151915260448201527f203a204e4654206973206e6f74206f776e656420627920636f6e74726163740060648201526084016106df565b600061139c826002610aa1565b90508034146113fa5760405162461bcd60e51b815260206004820152603660248201526000805160206131fd833981519152604482015275203a20696e76616c69642070726963652076616c756560501b60648201526084016106df565b6000828152600a60205260409020600201805460ff19169055610b1233838360026128ba565b6000546001600160a01b0316331461144a5760405162461bcd60e51b81526004016106df90612f94565b806114bd5760405162461bcd60e51b815260206004820152603d60248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f766546726f60448201527f6d57686974656c697374203a20616464726573736573206c656e67746800000060648201526084016106df565b60005b60ff8116821115610f2c57600b600084848460ff168181106114f257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115079190612c7b565b6001600160a01b0316815260208101919091526040016000206001015460ff1615611596576000600b600085858560ff1681811061155557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061156a9190612c7b565b6001600160a01b031681526020810191909152604001600020600101805460ff19169115159190911790555b806115a0816130e3565b9150506114c0565b6000612710600583600381106115ce57634e487b7160e01b600052603260045260246000fd5b01546115dc906127106130b1565b6000858152600a60205260409020600101546115f89190613092565b6116029190613072565b9392505050565b6000546001600160a01b031633146116335760405162461bcd60e51b81526004016106df90612f94565b6110cf6000612b51565b6000546001600160a01b031633146116675760405162461bcd60e51b81526004016106df90612f94565b60008151116116ef5760405162461bcd60e51b815260206004820152604860248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f76654e667460448201527f546f4c697374203a206c656e677468206d75737420626520686967686572207460648201526768616e207a65726f60c01b608482015260a4016106df565b60005b815181101561109957600a600083838151811061171f57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff166117c05760405162461bcd60e51b815260206004820152604560248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f76654e667460448201527f546f4c697374203a206e66742073686f756c6420626520616374697665206f6e6064820152642073616c6560d81b608482015260a4016106df565b6000600a60008484815181106117e657634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002908101805492151560ff1990931692909217909155546001600160a01b03610100909104166342842e0e3061183f6000546001600160a01b031690565b85858151811061185f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156118b957600080fd5b505af11580156118cd573d6000803e3d6000fd5b505050508181815181106118f157634e487b7160e01b600052603260045260246000fd5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b03167fee752d8de254acc8141f384853477a72d4bdddf57932c8dfbb336ac2794c06d24260405161195691906001600160401b0391909116815260200190565b60405180910390a380611968816130c8565b9150506116f2565b6000546001600160a01b0316331461199a5760405162461bcd60e51b81526004016106df90612f94565b80611a0d5760405162461bcd60e51b815260206004820152603860248201527f496e697469616c436f696e4f66666572696e67203a3a20616464546f5768697460448201527f656c697374203a20616464726573736573206c656e677468000000000000000060648201526084016106df565b60005b60ff8116821115610f2c57600b600084848460ff16818110611a4257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a579190612c7b565b6001600160a01b0316815260208101919091526040016000206001015460ff16611ae5576001600b600085858560ff16818110611aa457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611ab99190612c7b565b6001600160a01b031681526020810191909152604001600020600101805460ff19169115159190911790555b80611aef816130e3565b915050611a10565b6000546001600160a01b03163314611b215760405162461bcd60e51b81526004016106df90612f94565b6110cf612ba1565b6000546001600160a01b03163314611b535760405162461bcd60e51b81526004016106df90612f94565b600854600160401b90046001600160401b0316611be65760405162461bcd60e51b8152602060048201526044602482018190527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c6963908201527f53616c6554696d657374616d70203a2070726573616c6520656e642074696d656064820152630203e20360e41b608482015260a4016106df565b6000611bf56020830183612f4e565b6001600160401b0316118015611c315750600854600160401b90046001600160401b0316611c266020830183612f4e565b6001600160401b0316115b611cb95760405162461bcd60e51b815260206004820152604d60248201527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c696360448201527f53616c6554696d657374616d70203a2073746172742074696d65203e2070726560648201526c73616c6520656e642074696d6560981b608482015260a4016106df565b611cc66020820182612f4e565b6001600160401b0316611cdf6040830160208401612f4e565b6001600160401b031611611d695760405162461bcd60e51b815260206004820152604560248201527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c696360448201527f53616c6554696d657374616d70203a20656e642074696d65203e2073746172746064820152642074696d6560d81b608482015260a4016106df565b60048054906000611d79836130c8565b90915550819050600860015b60028110611da357634e487b7160e01b600052603260045260246000fd5b01610f2c828261312f565b60025460ff1615611dd15760405162461bcd60e51b81526004016106df90612f6a565b60026001541415611df45760405162461bcd60e51b81526004016106df9061300b565b6002600155611e0233610738565b15611e785760405162461bcd60e51b815260206004820152604c602482015260008051602061321d83398151915260448201527f65203a20616464726573732073686f756c64206e6f74206265206120636f6e7460648201526b72616374206164647265737360a01b608482015260a4016106df565b6009546001600160401b031615801590611ea05750426008600101546001600160401b031611155b8015611ec1575042600860010154600160401b90046001600160401b031610155b611f375760405162461bcd60e51b815260206004820152604d602482015260008051602061321d83398151915260448201527f65203a207075626c69632073616c65206e6f742079657420737461727465642060648201526c1bdc881cd85b1948195b991959609a1b608482015260a4016106df565b6000818152600a602052604090206002015460ff16611fa45760405162461bcd60e51b8152602060048201526035602482015260008051602061321d83398151915260448201527465203a206e6674206973206e6f742061637469766560581b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b158015611ff557600080fd5b505afa158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d9190612c97565b6001600160a01b031614612099576040805162461bcd60e51b815260206004820152602481019190915260008051602061321d83398151915260448201527f65203a204e4654206973206e6f74206f776e656420627920636f6e747261637460648201526084016106df565b60006120a6826001610aa1565b905080341461210b5760405162461bcd60e51b8152602060048201526037602482015260008051602061321d83398151915260448201527f65203a20696e76616c69642070726963652076616c756500000000000000000060648201526084016106df565b6000828152600a60205260409020600201805460ff19169055610b1233838360016128ba565b6000546001600160a01b0316331461215b5760405162461bcd60e51b81526004016106df90612f94565b6001600160801b0381166121cb5760405162461bcd60e51b815260206004820152603160248201527f496e697469616c436f696e4f66666572696e67203a3a207570646174654d61786044820152700427579203a206d617842757920213d203607c1b60648201526084016106df565b600380546001600160801b0319166001600160801b0392909216919091179055565b6000546001600160a01b031633146122175760405162461bcd60e51b81526004016106df90612f94565b42600860010154600160401b90046001600160401b0316106122a15760405162461bcd60e51b815260206004820152603c60248201527f496e697469616c436f696e4f66666572696e67203a3a20726573657453616c6560448201527f203a20776169742074696c6c207075626c69632073616c6520656e640000000060648201526084016106df565b60408051808201825260008082526020918201819052600980546001600160801b031990811690915583518085019094528184529290910152600880549091169055565b6000546001600160a01b0316331461230f5760405162461bcd60e51b81526004016106df90612f94565b805182511461236d5760405162461bcd60e51b815260206004820152603660248201526000805160206131bd8339815191526044820152750a0e4d2c6ca407440d2dcecc2d8d2c840d8cadccee8d60531b60648201526084016106df565b60005b8251811015610f2c57600082828151811061239b57634e487b7160e01b600052603260045260246000fd5b6020026020010151116123f85760405162461bcd60e51b815260206004820152603160248201526000805160206131bd83398151915260448201527005072696365203a207072696365203e203607c1b60648201526084016106df565b600a600084838151811061241c57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff166124925760405162461bcd60e51b815260206004820152603260248201526000805160206131bd8339815191526044820152715072696365203a206e6f742061637469766560701b60648201526084016106df565b8181815181106124b257634e487b7160e01b600052603260045260246000fd5b6020026020010151600a60008584815181106124de57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600101819055508080612506906130c8565b915050612370565b6000546001600160a01b031633146125385760405162461bcd60e51b81526004016106df90612f94565b6001600160a01b03811661259d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106df565b6125a681612b51565b50565b6000546001600160a01b031633146125d35760405162461bcd60e51b81526004016106df90612f94565b600954600160401b90046001600160401b0316156126685760405162461bcd60e51b815260206004820152604660248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a207075626c69632073616c6520656e642074696d606482015265065203d3d20360d41b608482015260a4016106df565b60006126776020830183612f4e565b6001600160401b03161180156126a15750426126966020830183612f4e565b6001600160401b0316115b6127255760405162461bcd60e51b815260206004820152604960248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a2073746172742074696d65203e20626c6f636b2e606482015268074696d657374616d760bc1b608482015260a4016106df565b6127326020820182612f4e565b6001600160401b031661274b6040830160208401612f4e565b6001600160401b0316116127d25760405162461bcd60e51b815260206004820152604260248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a20656e642074696d65203e2073746172742074696064820152616d6560f01b608482015260a4016106df565b8060086000611d85565b6000546001600160a01b031633146128065760405162461bcd60e51b81526004016106df90612f94565b6001600160a01b0381166128925760405162461bcd60e51b815260206004820152604760248201527f496e697469616c436f696e4f66666572696e67203a3a20757064617465436f6c60448201527f6c61725175657374203a20636f6c6c617251756573745f20213d207a65726f206064820152666164647265737360c81b608482015260a4016106df565b600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6128cf6110936000546001600160a01b031690565b6000838152600a602052604090819020549051632142170760e11b81523060048201526001600160a01b03868116602483015260448201869052909116906342842e0e90606401600060405180830381600087803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b505060408051858152426001600160401b0316602082015260ff85168183015290518693506001600160a01b03881692507f3de0a834d0da0f18704909a6409a86bc77fa4255e623c395fa2b0b949c69fe939181900360600190a350505050565b804710156129f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106df565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a42576040519150601f19603f3d011682016040523d82523d6000602084013e612a47565b606091505b5050905080610f2c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106df565b60025460ff16612b075760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106df565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025460ff1615612bc45760405162461bcd60e51b81526004016106df90612f6a565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b343390565b600082601f830112612c09578081fd5b813560206001600160401b03821115612c2457612c24613119565b8160051b612c33828201613042565b838152828101908684018388018501891015612c4d578687fd5b8693505b85841015612c6f578035835260019390930192918401918401612c51565b50979650505050505050565b600060208284031215612c8c578081fd5b813561160281613192565b600060208284031215612ca8578081fd5b815161160281613192565b60008060008060808587031215612cc8578283fd5b8435612cd381613192565b9350602085810135612ce481613192565b93506040860135925060608601356001600160401b0380821115612d06578384fd5b818801915088601f830112612d19578384fd5b813581811115612d2b57612d2b613119565b612d3d601f8201601f19168501613042565b91508082528984828501011115612d52578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215612d80578182fd5b8235612d8b81613192565b946020939093013593505050565b60008060208385031215612dab578182fd5b82356001600160401b0380821115612dc1578384fd5b818501915085601f830112612dd4578384fd5b813581811115612de2578485fd5b8660208260051b8501011115612df6578485fd5b60209290920196919550909350505050565b600060208284031215612e19578081fd5b81356001600160401b03811115612e2e578182fd5b612e3a84828501612bf9565b949350505050565b60008060408385031215612e54578182fd5b82356001600160401b0380821115612e6a578384fd5b612e7686838701612bf9565b93506020850135915080821115612e8b578283fd5b50612e9885828601612bf9565b9150509250929050565b600060408284031215612eb3578081fd5b50919050565b600060208284031215612eca578081fd5b81356001600160801b0381168114611602578182fd5b600060208284031215612ef1578081fd5b5035919050565b60008060408385031215612f0a578182fd5b82359150602083013561ffff81168114612f22578182fd5b809150509250929050565b60008060408385031215612f3f578182fd5b50508035926020909101359150565b600060208284031215612f5f578081fd5b8135611602816131a7565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526034908201526000805160206131bd8339815191526040820152730446973636f756e74203a207072696365203e20360641b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b604051601f8201601f191681016001600160401b038111828210171561306a5761306a613119565b604052919050565b60008261308d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156130ac576130ac613103565b500290565b6000828210156130c3576130c3613103565b500390565b60006000198214156130dc576130dc613103565b5060010190565b600060ff821660ff8114156130fa576130fa613103565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b813561313a816131a7565b6001600160401b03811690508154816001600160401b031982161783556020840135613165816131a7565b6fffffffffffffffff00000000000000008160401b16836001600160801b03198416171784555050505050565b6001600160a01b03811681146125a657600080fd5b6001600160401b03811681146125a657600080fdfe496e697469616c436f696e4f66666572696e67203a3a207570646174654e6674496e697469616c436f696e4f66666572696e67203a3a2070726553616c65203a496e697469616c436f696e4f66666572696e67203a3a2063726f776453616c65496e697469616c436f696e4f66666572696e67203a3a207075626c696353616ca2646970667358221220fcf68c23bbcd6220bfe3314a383f755243370b74b8b6452fe1671e4421d8d50b64736f6c63430008040033000000000000000000000000674900b8fd8ee1b487d162d04c59300222d90466
Deployed Bytecode
0x6080604052600436106101d85760003560e01c8063715018a611610102578063b4d6598811610095578063e0ffa0af11610064578063e0ffa0af146105a9578063f2fde38b14610619578063f462f5e514610639578063fa370c411461065957600080fd5b8063b4d659881461052f578063c1e1d9541461054f578063cc6b2c0f14610564578063d50a64aa1461058457600080fd5b80638b0987c1116100d15780638b0987c1146104845780638da5cb5b146104ca57806397b9f864146104fc578063b287c8ed1461051c57600080fd5b8063715018a61461041a5780637ee27a0b1461042f5780637f6497831461044f5780638456cb591461046f57600080fd5b8063372c12b11161017a578063548db17411610149578063548db1741461038a5780635c975abb146103aa5780635ee2d5b6146103c257806370db69d6146103e257600080fd5b8063372c12b1146102ff57806339c28c62146103425780633f4ba83a1461036257806352878a401461037757600080fd5b8063150b7a02116101b6578063150b7a02146102655780632472348d146102a95780632e849894146102c957806333574eaf146102df57600080fd5b80630b1d07de146101dd578063131f4104146102105780631386dc1214610225575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612ee0565b610679565b6040519081526020015b60405180910390f35b61022361021e366004612ee0565b610690565b005b34801561023157600080fd5b50610245610240366004612ee0565b610b1a565b604080516001600160401b03938416815292909116602083015201610207565b34801561027157600080fd5b50610290610280366004612cb3565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610207565b3480156102b557600080fd5b506102236102c4366004612e42565b610b45565b3480156102d557600080fd5b506101fd60045481565b3480156102eb57600080fd5b506102236102fa366004612ef8565b610f31565b34801561030b57600080fd5b5061033261031a366004612c7b565b600b6020526000908152604090206001015460ff1681565b6040519015158152602001610207565b34801561034e57600080fd5b5061022361035d366004612ee0565b610fdc565b34801561036e57600080fd5b5061022361109d565b610223610385366004612ee0565b6110d1565b34801561039657600080fd5b506102236103a5366004612d99565b611420565b3480156103b657600080fd5b5060025460ff16610332565b3480156103ce57600080fd5b506101fd6103dd366004612f2d565b6115a8565b3480156103ee57600080fd5b50600354610402906001600160801b031681565b6040516001600160801b039091168152602001610207565b34801561042657600080fd5b50610223611609565b34801561043b57600080fd5b5061022361044a366004612e08565b61163d565b34801561045b57600080fd5b5061022361046a366004612d99565b611970565b34801561047b57600080fd5b50610223611af7565b34801561049057600080fd5b506101fd61049f366004612d6e565b6001600160a01b03919091166000908152600b60209081526040808320938352929052205460ff1690565b3480156104d657600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610207565b34801561050857600080fd5b50610223610517366004612ea2565b611b29565b61022361052a366004612ee0565b611dae565b34801561053b57600080fd5b5061022361054a366004612eb9565b612131565b34801561055b57600080fd5b506102236121ed565b34801561057057600080fd5b5061022361057f366004612e42565b6122e5565b34801561059057600080fd5b506002546104e49061010090046001600160a01b031681565b3480156105b557600080fd5b506105f26105c4366004612ee0565b600a602052600090815260409020805460018201546002909201546001600160a01b03909116919060ff1683565b604080516001600160a01b0390941684526020840192909252151590820152606001610207565b34801561062557600080fd5b50610223610634366004612c7b565b61250e565b34801561064557600080fd5b50610223610654366004612ea2565b6125a9565b34801561066557600080fd5b50610223610674366004612c7b565b6127dc565b6005816003811061068957600080fd5b0154905081565b336000908152600b602052604090206001015460ff166106e85760405162461bcd60e51b815260206004820152600e60248201526d13db9b1e481dda1a5d195b1a5cdd60921b60448201526064015b60405180910390fd5b60025460ff161561070b5760405162461bcd60e51b81526004016106df90612f6a565b6002600154141561072e5760405162461bcd60e51b81526004016106df9061300b565b6002600155610747335b6001600160a01b03163b151590565b1561079b5760405162461bcd60e51b815260206004820152603060248201526000805160206131dd83398151915260448201526f0103737ba10309031b7b73a3930b1ba160851b60648201526084016106df565b6008546001600160401b0316158015906107c35750426008600001546001600160401b031611155b80156107e4575042600860000154600160401b90046001600160401b031610155b6108585760405162461bcd60e51b815260206004820152604b60248201526000805160206131dd83398151915260448201527f2070726573616c652073616c65206e6f74207965742073746172746564206f7260648201526a081cd85b1948195b99195960aa1b608482015260a4016106df565b6000818152600a602052604090206002015460ff166108c25760405162461bcd60e51b815260206004820152603260248201526000805160206131dd833981519152604482015271206e6674206973206e6f742061637469766560701b60648201526084016106df565b600354600454336000908152600b6020908152604080832093835292905220546001600160801b039091169060ff16106109475760405162461bcd60e51b815260206004820152603260248201526000805160206131dd83398151915260448201527120627579436f756e74203c206d617842757960701b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190612c97565b6001600160a01b031614610a3a5760405162461bcd60e51b815260206004820152603d60248201526000805160206131dd83398151915260448201527f204e4654206973206e6f74206f776e656420627920636f6e747261637400000060648201526084016106df565b336000908152600b6020908152604080832060045484529091528120805460ff1691610a65836130e3565b825460ff9182166101009390930a9283029190920219909116179055506000818152600a60205260408120600201805460ff19169055610aa982825b60ff166115a8565b9050803414610b055760405162461bcd60e51b815260206004820152603460248201526000805160206131dd83398151915260448201527320696e76616c69642070726963652076616c756560601b60648201526084016106df565b610b1233838360006128ba565b505060018055565b60088160028110610b2a57600080fd5b01546001600160401b038082169250600160401b9091041682565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016106df90612f94565b8051825114610bb15760405162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840d8cadccee8d60931b60448201526064016106df565b60005b8251811015610f2c576000828281518110610bdf57634e487b7160e01b600052603260045260246000fd5b602002602001015111610c4c5760405162461bcd60e51b815260206004820152602f60248201527f496e697469616c436f696e4f66666572696e67203a3a206164644e6674546f4c60448201526e0697374203a207072696365203e203608c1b60648201526084016106df565b600a6000848381518110610c7057634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff1615610cf75760405162461bcd60e51b815260206004820152603060248201527f496e697469616c436f696e4f66666572696e67203a3a206164644e6674546f4c60448201526f697374203a206e6f742061637469766560801b60648201526084016106df565b6040518060600160405280600260019054906101000a90046001600160a01b03166001600160a01b03168152602001838381518110610d4657634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200160011515815250600a6000858481518110610d7e57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040908101600020835181546001600160a01b039182166001600160a01b03199091161782559284015160018201559201516002928301805491151560ff1990921691909117905590546101009004166342842e0e610dfa6000546001600160a01b031690565b30868581518110610e1b57634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050828181518110610ead57634e487b7160e01b600052603260045260246000fd5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b03167fa2d24cf994f861ab4eaea65cb41852d7185de0f379a6e05b1415d99d3d0feb0842604051610f1291906001600160401b0391909116815260200190565b60405180910390a380610f24816130c8565b915050610bb4565b505050565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b81526004016106df90612f94565b60008161ffff16118015610f74575061271061ffff8216105b610f905760405162461bcd60e51b81526004016106df90612fc9565b60038210610fb05760405162461bcd60e51b81526004016106df90612fc9565b8061ffff1660058360038110610fd657634e487b7160e01b600052603260045260246000fd5b01555050565b6000546001600160a01b031633146110065760405162461bcd60e51b81526004016106df90612f94565b30803182111561107e5760405162461bcd60e51b815260206004820152603e60248201527f496e697469616c436f696e4f66666572696e67203a3a20656d657267656e637960448201527f52656c65617365203a20696e73756666696369656e742062616c616e6365000060648201526084016106df565b6110996110936000546001600160a01b031690565b836129a5565b5050565b6000546001600160a01b031633146110c75760405162461bcd60e51b81526004016106df90612f94565b6110cf612abe565b565b60025460ff16156110f45760405162461bcd60e51b81526004016106df90612f6a565b600260015414156111175760405162461bcd60e51b81526004016106df9061300b565b600260015561112533610738565b1561119a5760405162461bcd60e51b815260206004820152604b60248201526000805160206131fd83398151915260448201527f203a20616464726573732073686f756c64206e6f74206265206120636f6e747260648201526a616374206164647265737360a81b608482015260a4016106df565b600954600160401b90046001600160401b0316158015906111d0575042600860010154600160401b90046001600160401b031611155b6112305760405162461bcd60e51b815260206004820152603b60248201526000805160206131fd83398151915260448201527f203a207075626c69632073616c65206973206e6f7420656e646564000000000060648201526084016106df565b6000818152600a602052604090206002015460ff1661129c5760405162461bcd60e51b815260206004820152603460248201526000805160206131fd833981519152604482015273203a206e6674206973206e6f742061637469766560601b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190612c97565b6001600160a01b03161461138f5760405162461bcd60e51b815260206004820152603f60248201526000805160206131fd83398151915260448201527f203a204e4654206973206e6f74206f776e656420627920636f6e74726163740060648201526084016106df565b600061139c826002610aa1565b90508034146113fa5760405162461bcd60e51b815260206004820152603660248201526000805160206131fd833981519152604482015275203a20696e76616c69642070726963652076616c756560501b60648201526084016106df565b6000828152600a60205260409020600201805460ff19169055610b1233838360026128ba565b6000546001600160a01b0316331461144a5760405162461bcd60e51b81526004016106df90612f94565b806114bd5760405162461bcd60e51b815260206004820152603d60248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f766546726f60448201527f6d57686974656c697374203a20616464726573736573206c656e67746800000060648201526084016106df565b60005b60ff8116821115610f2c57600b600084848460ff168181106114f257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115079190612c7b565b6001600160a01b0316815260208101919091526040016000206001015460ff1615611596576000600b600085858560ff1681811061155557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061156a9190612c7b565b6001600160a01b031681526020810191909152604001600020600101805460ff19169115159190911790555b806115a0816130e3565b9150506114c0565b6000612710600583600381106115ce57634e487b7160e01b600052603260045260246000fd5b01546115dc906127106130b1565b6000858152600a60205260409020600101546115f89190613092565b6116029190613072565b9392505050565b6000546001600160a01b031633146116335760405162461bcd60e51b81526004016106df90612f94565b6110cf6000612b51565b6000546001600160a01b031633146116675760405162461bcd60e51b81526004016106df90612f94565b60008151116116ef5760405162461bcd60e51b815260206004820152604860248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f76654e667460448201527f546f4c697374203a206c656e677468206d75737420626520686967686572207460648201526768616e207a65726f60c01b608482015260a4016106df565b60005b815181101561109957600a600083838151811061171f57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff166117c05760405162461bcd60e51b815260206004820152604560248201527f496e697469616c436f696e4f66666572696e67203a3a2072656d6f76654e667460448201527f546f4c697374203a206e66742073686f756c6420626520616374697665206f6e6064820152642073616c6560d81b608482015260a4016106df565b6000600a60008484815181106117e657634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002908101805492151560ff1990931692909217909155546001600160a01b03610100909104166342842e0e3061183f6000546001600160a01b031690565b85858151811061185f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156118b957600080fd5b505af11580156118cd573d6000803e3d6000fd5b505050508181815181106118f157634e487b7160e01b600052603260045260246000fd5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b03167fee752d8de254acc8141f384853477a72d4bdddf57932c8dfbb336ac2794c06d24260405161195691906001600160401b0391909116815260200190565b60405180910390a380611968816130c8565b9150506116f2565b6000546001600160a01b0316331461199a5760405162461bcd60e51b81526004016106df90612f94565b80611a0d5760405162461bcd60e51b815260206004820152603860248201527f496e697469616c436f696e4f66666572696e67203a3a20616464546f5768697460448201527f656c697374203a20616464726573736573206c656e677468000000000000000060648201526084016106df565b60005b60ff8116821115610f2c57600b600084848460ff16818110611a4257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a579190612c7b565b6001600160a01b0316815260208101919091526040016000206001015460ff16611ae5576001600b600085858560ff16818110611aa457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611ab99190612c7b565b6001600160a01b031681526020810191909152604001600020600101805460ff19169115159190911790555b80611aef816130e3565b915050611a10565b6000546001600160a01b03163314611b215760405162461bcd60e51b81526004016106df90612f94565b6110cf612ba1565b6000546001600160a01b03163314611b535760405162461bcd60e51b81526004016106df90612f94565b600854600160401b90046001600160401b0316611be65760405162461bcd60e51b8152602060048201526044602482018190527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c6963908201527f53616c6554696d657374616d70203a2070726573616c6520656e642074696d656064820152630203e20360e41b608482015260a4016106df565b6000611bf56020830183612f4e565b6001600160401b0316118015611c315750600854600160401b90046001600160401b0316611c266020830183612f4e565b6001600160401b0316115b611cb95760405162461bcd60e51b815260206004820152604d60248201527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c696360448201527f53616c6554696d657374616d70203a2073746172742074696d65203e2070726560648201526c73616c6520656e642074696d6560981b608482015260a4016106df565b611cc66020820182612f4e565b6001600160401b0316611cdf6040830160208401612f4e565b6001600160401b031611611d695760405162461bcd60e51b815260206004820152604560248201527f496e697469616c436f696e4f66666572696e67203a3a207365745075626c696360448201527f53616c6554696d657374616d70203a20656e642074696d65203e2073746172746064820152642074696d6560d81b608482015260a4016106df565b60048054906000611d79836130c8565b90915550819050600860015b60028110611da357634e487b7160e01b600052603260045260246000fd5b01610f2c828261312f565b60025460ff1615611dd15760405162461bcd60e51b81526004016106df90612f6a565b60026001541415611df45760405162461bcd60e51b81526004016106df9061300b565b6002600155611e0233610738565b15611e785760405162461bcd60e51b815260206004820152604c602482015260008051602061321d83398151915260448201527f65203a20616464726573732073686f756c64206e6f74206265206120636f6e7460648201526b72616374206164647265737360a01b608482015260a4016106df565b6009546001600160401b031615801590611ea05750426008600101546001600160401b031611155b8015611ec1575042600860010154600160401b90046001600160401b031610155b611f375760405162461bcd60e51b815260206004820152604d602482015260008051602061321d83398151915260448201527f65203a207075626c69632073616c65206e6f742079657420737461727465642060648201526c1bdc881cd85b1948195b991959609a1b608482015260a4016106df565b6000818152600a602052604090206002015460ff16611fa45760405162461bcd60e51b8152602060048201526035602482015260008051602061321d83398151915260448201527465203a206e6674206973206e6f742061637469766560581b60648201526084016106df565b6000818152600a6020526040908190205490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e9060240160206040518083038186803b158015611ff557600080fd5b505afa158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d9190612c97565b6001600160a01b031614612099576040805162461bcd60e51b815260206004820152602481019190915260008051602061321d83398151915260448201527f65203a204e4654206973206e6f74206f776e656420627920636f6e747261637460648201526084016106df565b60006120a6826001610aa1565b905080341461210b5760405162461bcd60e51b8152602060048201526037602482015260008051602061321d83398151915260448201527f65203a20696e76616c69642070726963652076616c756500000000000000000060648201526084016106df565b6000828152600a60205260409020600201805460ff19169055610b1233838360016128ba565b6000546001600160a01b0316331461215b5760405162461bcd60e51b81526004016106df90612f94565b6001600160801b0381166121cb5760405162461bcd60e51b815260206004820152603160248201527f496e697469616c436f696e4f66666572696e67203a3a207570646174654d61786044820152700427579203a206d617842757920213d203607c1b60648201526084016106df565b600380546001600160801b0319166001600160801b0392909216919091179055565b6000546001600160a01b031633146122175760405162461bcd60e51b81526004016106df90612f94565b42600860010154600160401b90046001600160401b0316106122a15760405162461bcd60e51b815260206004820152603c60248201527f496e697469616c436f696e4f66666572696e67203a3a20726573657453616c6560448201527f203a20776169742074696c6c207075626c69632073616c6520656e640000000060648201526084016106df565b60408051808201825260008082526020918201819052600980546001600160801b031990811690915583518085019094528184529290910152600880549091169055565b6000546001600160a01b0316331461230f5760405162461bcd60e51b81526004016106df90612f94565b805182511461236d5760405162461bcd60e51b815260206004820152603660248201526000805160206131bd8339815191526044820152750a0e4d2c6ca407440d2dcecc2d8d2c840d8cadccee8d60531b60648201526084016106df565b60005b8251811015610f2c57600082828151811061239b57634e487b7160e01b600052603260045260246000fd5b6020026020010151116123f85760405162461bcd60e51b815260206004820152603160248201526000805160206131bd83398151915260448201527005072696365203a207072696365203e203607c1b60648201526084016106df565b600a600084838151811061241c57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000206002015460ff166124925760405162461bcd60e51b815260206004820152603260248201526000805160206131bd8339815191526044820152715072696365203a206e6f742061637469766560701b60648201526084016106df565b8181815181106124b257634e487b7160e01b600052603260045260246000fd5b6020026020010151600a60008584815181106124de57634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001908152602001600020600101819055508080612506906130c8565b915050612370565b6000546001600160a01b031633146125385760405162461bcd60e51b81526004016106df90612f94565b6001600160a01b03811661259d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106df565b6125a681612b51565b50565b6000546001600160a01b031633146125d35760405162461bcd60e51b81526004016106df90612f94565b600954600160401b90046001600160401b0316156126685760405162461bcd60e51b815260206004820152604660248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a207075626c69632073616c6520656e642074696d606482015265065203d3d20360d41b608482015260a4016106df565b60006126776020830183612f4e565b6001600160401b03161180156126a15750426126966020830183612f4e565b6001600160401b0316115b6127255760405162461bcd60e51b815260206004820152604960248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a2073746172742074696d65203e20626c6f636b2e606482015268074696d657374616d760bc1b608482015260a4016106df565b6127326020820182612f4e565b6001600160401b031661274b6040830160208401612f4e565b6001600160401b0316116127d25760405162461bcd60e51b815260206004820152604260248201527f496e697469616c436f696e4f66666572696e67203a3a2073657450726573616c60448201527f6554696d657374616d70203a20656e642074696d65203e2073746172742074696064820152616d6560f01b608482015260a4016106df565b8060086000611d85565b6000546001600160a01b031633146128065760405162461bcd60e51b81526004016106df90612f94565b6001600160a01b0381166128925760405162461bcd60e51b815260206004820152604760248201527f496e697469616c436f696e4f66666572696e67203a3a20757064617465436f6c60448201527f6c61725175657374203a20636f6c6c617251756573745f20213d207a65726f206064820152666164647265737360c81b608482015260a4016106df565b600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6128cf6110936000546001600160a01b031690565b6000838152600a602052604090819020549051632142170760e11b81523060048201526001600160a01b03868116602483015260448201869052909116906342842e0e90606401600060405180830381600087803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b505060408051858152426001600160401b0316602082015260ff85168183015290518693506001600160a01b03881692507f3de0a834d0da0f18704909a6409a86bc77fa4255e623c395fa2b0b949c69fe939181900360600190a350505050565b804710156129f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106df565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a42576040519150601f19603f3d011682016040523d82523d6000602084013e612a47565b606091505b5050905080610f2c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106df565b60025460ff16612b075760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106df565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025460ff1615612bc45760405162461bcd60e51b81526004016106df90612f6a565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b343390565b600082601f830112612c09578081fd5b813560206001600160401b03821115612c2457612c24613119565b8160051b612c33828201613042565b838152828101908684018388018501891015612c4d578687fd5b8693505b85841015612c6f578035835260019390930192918401918401612c51565b50979650505050505050565b600060208284031215612c8c578081fd5b813561160281613192565b600060208284031215612ca8578081fd5b815161160281613192565b60008060008060808587031215612cc8578283fd5b8435612cd381613192565b9350602085810135612ce481613192565b93506040860135925060608601356001600160401b0380821115612d06578384fd5b818801915088601f830112612d19578384fd5b813581811115612d2b57612d2b613119565b612d3d601f8201601f19168501613042565b91508082528984828501011115612d52578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215612d80578182fd5b8235612d8b81613192565b946020939093013593505050565b60008060208385031215612dab578182fd5b82356001600160401b0380821115612dc1578384fd5b818501915085601f830112612dd4578384fd5b813581811115612de2578485fd5b8660208260051b8501011115612df6578485fd5b60209290920196919550909350505050565b600060208284031215612e19578081fd5b81356001600160401b03811115612e2e578182fd5b612e3a84828501612bf9565b949350505050565b60008060408385031215612e54578182fd5b82356001600160401b0380821115612e6a578384fd5b612e7686838701612bf9565b93506020850135915080821115612e8b578283fd5b50612e9885828601612bf9565b9150509250929050565b600060408284031215612eb3578081fd5b50919050565b600060208284031215612eca578081fd5b81356001600160801b0381168114611602578182fd5b600060208284031215612ef1578081fd5b5035919050565b60008060408385031215612f0a578182fd5b82359150602083013561ffff81168114612f22578182fd5b809150509250929050565b60008060408385031215612f3f578182fd5b50508035926020909101359150565b600060208284031215612f5f578081fd5b8135611602816131a7565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526034908201526000805160206131bd8339815191526040820152730446973636f756e74203a207072696365203e20360641b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b604051601f8201601f191681016001600160401b038111828210171561306a5761306a613119565b604052919050565b60008261308d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156130ac576130ac613103565b500290565b6000828210156130c3576130c3613103565b500390565b60006000198214156130dc576130dc613103565b5060010190565b600060ff821660ff8114156130fa576130fa613103565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b813561313a816131a7565b6001600160401b03811690508154816001600160401b031982161783556020840135613165816131a7565b6fffffffffffffffff00000000000000008160401b16836001600160801b03198416171784555050505050565b6001600160a01b03811681146125a657600080fd5b6001600160401b03811681146125a657600080fdfe496e697469616c436f696e4f66666572696e67203a3a207570646174654e6674496e697469616c436f696e4f66666572696e67203a3a2070726553616c65203a496e697469616c436f696e4f66666572696e67203a3a2063726f776453616c65496e697469616c436f696e4f66666572696e67203a3a207075626c696353616ca2646970667358221220fcf68c23bbcd6220bfe3314a383f755243370b74b8b6452fe1671e4421d8d50b64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000674900b8fd8ee1b487d162d04c59300222d90466
-----Decoded View---------------
Arg [0] : collarQuest_ (address): 0x674900B8fD8EE1B487d162d04C59300222D90466
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000674900b8fd8ee1b487d162d04c59300222d90466
Deployed Bytecode Sourcemap
14190:13324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14473:39;;;;;;;;;;-1:-1:-1;14473:39:0;;;;;:::i;:::-;;:::i;:::-;;;27279:25:1;;;27267:2;27252:18;14473:39:0;;;;;;;;21634:1262;;;;;;:::i;:::-;;:::i;:::-;;14826:29;;;;;;;;;;-1:-1:-1;14826:29:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;28099:15:1;;;28081:34;;28151:15;;;;28146:2;28131:18;;28124:43;28017:18;14826:29:0;27999:174:1;13976:207:0;;;;;;;;;;-1:-1:-1;13976:207:0;;;;;:::i;:::-;-1:-1:-1;;;13976:207:0;;;;;;;;;;-1:-1:-1;;;;;;7581:33:1;;;7563:52;;7551:2;7536:18;13976:207:0;7518:103:1;17979:848:0;;;;;;;;;;-1:-1:-1;17979:848:0;;;;;:::i;:::-;;:::i;14437:29::-;;;;;;;;;;;;;;;;19503:340;;;;;;;;;;-1:-1:-1;19503:340:0;;;;;:::i;:::-;;:::i;14919:50::-;;;;;;;;;;-1:-1:-1;14919:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7392:14:1;;7385:22;7367:41;;7355:2;7340:18;14919:50:0;7322:92:1;25302:263:0;;;;;;;;;;-1:-1:-1;25302:263:0;;;;;:::i;:::-;;:::i;25739:65::-;;;;;;;;;;;;;:::i;24209:1005::-;;;;;;:::i;:::-;;:::i;21142:390::-;;;;;;;;;;-1:-1:-1;21142:390:0;;;;;:::i;:::-;;:::i;9755:86::-;;;;;;;;;;-1:-1:-1;9826:7:0;;;;9755:86;;26753:189;;;;;;;;;;-1:-1:-1;26753:189:0;;;;;:::i;:::-;;:::i;14366:25::-;;;;;;;;;;-1:-1:-1;14366:25:0;;;;-1:-1:-1;;;;;14366:25:0;;;;;;-1:-1:-1;;;;;27074:47:1;;;27056:66;;27044:2;27029:18;14366:25:0;27011:117:1;7955:103:0;;;;;;;;;;;;;:::i;19912:723::-;;;;;;;;;;-1:-1:-1;19912:723:0;;;;;:::i;:::-;;:::i;20697:380::-;;;;;;;;;;-1:-1:-1;20697:380:0;;;;;:::i;:::-;;:::i;25621:61::-;;;;;;;;;;;;;:::i;27002:140::-;;;;;;;;;;-1:-1:-1;27002:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;27101:16:0;;;;27074:7;27101:16;;;:9;:16;;;;;;;;:33;;;;;;;;;;;27002:140;7304:87;;;;;;;;;;-1:-1:-1;7350:7:0;7377:6;-1:-1:-1;;;;;7377:6:0;7304:87;;;-1:-1:-1;;;;;6443:32:1;;;6425:51;;6413:2;6398:18;7304:87:0;6380:102:1;16316:635:0;;;;;;;;;;-1:-1:-1;16316:635:0;;;;;:::i;:::-;;:::i;23003:1116::-;;;;;;:::i;:::-;;:::i;17425:179::-;;;;;;;;;;-1:-1:-1;17425:179:0;;;;;:::i;:::-;;:::i;17021:310::-;;;;;;;;;;;;;:::i;18910:507::-;;;;;;;;;;-1:-1:-1;18910:507:0;;;;;:::i;:::-;;:::i;14333:26::-;;;;;;;;;;-1:-1:-1;14333:26:0;;;;;;;-1:-1:-1;;;;;14333:26:0;;;14868:44;;;;;;;;;;-1:-1:-1;14868:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14868:44:0;;;;;;;;;;;;;-1:-1:-1;;;;;7081:32:1;;;7063:51;;7145:2;7130:18;;7123:34;;;;7200:14;7193:22;7173:18;;;7166:50;7051:2;7036:18;14868:44:0;7018:204:1;8213:201:0;;;;;;;;;;-1:-1:-1;8213:201:0;;;;;:::i;:::-;;:::i;15663:584::-;;;;;;;;;;-1:-1:-1;15663:584:0;;;;;:::i;:::-;;:::i;17676:234::-;;;;;;;;;;-1:-1:-1;17676:234:0;;;;;:::i;:::-;;:::i;14473:39::-;;;;;;;;;;;;;;;-1:-1:-1;14473:39:0;:::o;21634:1262::-;6251:10;15522:23;;;;:9;:23;;;;;:37;;;;;15514:64;;;;-1:-1:-1;;;15514:64:0;;22989:2:1;15514:64:0;;;22971:21:1;23028:2;23008:18;;;23001:30;-1:-1:-1;;;23047:18:1;;;23040:44;23101:18;;15514:64:0;;;;;;;;;9826:7;;;;10080:9:::1;10072:38;;;;-1:-1:-1::0;;;10072:38:0::1;;;;;;;:::i;:::-;12592:1:::2;13190:7;;:19;;13182:63;;;;-1:-1:-1::0;;;13182:63:0::2;;;;;;;:::i;:::-;12592:1;13323:7;:18:::0;21744:25:::3;6251:10:::0;21756:12:::3;-1:-1:-1::0;;;;;27476:19:0;;:23;;;27392:115;21744:25:::3;21743:26;21735:86;;;::::0;-1:-1:-1;;;21735:86:0;;24170:2:1;21735:86:0::3;::::0;::::3;24152:21:1::0;24209:2;24189:18;;;24182:30;-1:-1:-1;;;;;;;;;;;24228:18:1;;;24221:62;-1:-1:-1;;;24299:18:1;;;24292:46;24355:19;;21735:86:0::3;24142:238:1::0;21735:86:0::3;21855:9;:39:::0;-1:-1:-1;;;;;21855:39:0::3;:43:::0;;;;21854:126:::3;;-1:-1:-1::0;27287:15:0;21917:9:::3;21932:12;21917:29;:39:::0;-1:-1:-1;;;;;21917:39:0::3;:62;;21854:126;:205;;;;-1:-1:-1::0;27287:15:0;21998:9:::3;22013:12;21998:29;:37:::0;-1:-1:-1;;;21998:37:0;::::3;-1:-1:-1::0;;;;;21998:37:0::3;:60;;21854:205;21832:330;;;::::0;-1:-1:-1;;;21832:330:0;;9918:2:1;21832:330:0::3;::::0;::::3;9900:21:1::0;9957:2;9937:18;;;9930:30;-1:-1:-1;;;;;;;;;;;9976:18:1;;;9969:62;10067:34;10047:18;;;10040:62;-1:-1:-1;;;10118:19:1;;;10111:42;10170:19;;21832:330:0::3;9890:305:1::0;21832:330:0::3;22181:19;::::0;;;:12:::3;:19;::::0;;;;:28:::3;;::::0;::::3;;22173:90;;;::::0;-1:-1:-1;;;22173:90:0;;25017:2:1;22173:90:0::3;::::0;::::3;24999:21:1::0;25056:2;25036:18;;;25029:30;-1:-1:-1;;;;;;;;;;;25075:18:1;;;25068:62;-1:-1:-1;;;25146:18:1;;;25139:48;25204:19;;22173:90:0::3;24989:240:1::0;22173:90:0::3;22326:6;::::0;22309:13:::3;::::0;6251:10;27074:7;27101:16;;;:9;:16;;;;;;;;:33;;;;;;;;-1:-1:-1;;;;;22326:6:0;;::::3;::::0;27101:33;;22282:50:::3;22274:112;;;::::0;-1:-1:-1;;;22274:112:0;;13489:2:1;22274:112:0::3;::::0;::::3;13471:21:1::0;13528:2;13508:18;;;13501:30;-1:-1:-1;;;;;;;;;;;13547:18:1;;;13540:62;-1:-1:-1;;;13618:18:1;;;13611:48;13676:19;;22274:112:0::3;13461:240:1::0;22274:112:0::3;22413:19;::::0;;;:12:::3;:19;::::0;;;;;;:30;22405:54;;-1:-1:-1;;;22405:54:0;;::::3;::::0;::::3;27279:25:1::0;;;22471:4:0::3;::::0;-1:-1:-1;;;;;22413:30:0::3;::::0;22405:47:::3;::::0;27252:18:1;;22405:54:0::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22405:71:0::3;;22397:144;;;::::0;-1:-1:-1;;;22397:144:0;;24587:2:1;22397:144:0::3;::::0;::::3;24569:21:1::0;24626:2;24606:18;;;24599:30;-1:-1:-1;;;;;;;;;;;24645:18:1;;;24638:62;24736:31;24716:18;;;24709:59;24785:19;;22397:144:0::3;24559:251:1::0;22397:144:0::3;6251:10:::0;22562:23:::3;::::0;;;:9:::3;:23;::::0;;;;;;;22595:13:::3;::::0;22562:47;;;;;;;:49;;::::3;;::::0;::::3;::::0;::::3;:::i;:::-;::::0;;::::3;::::0;;::::3;;::::0;;;::::3;::::0;;::::3;::::0;;;::::3;;::::0;;::::3;;::::0;;-1:-1:-1;;22622:19:0;;;:12:::3;:19;::::0;;;;:28:::3;;:36:::0;;-1:-1:-1;;22622:36:0::3;::::0;;22684:45:::3;22635:5:::0;-1:-1:-1;22709:19:0::3;22684:45;;:16;:45::i;:::-;22671:58;;22761:5;22748:9;:18;22740:82;;;::::0;-1:-1:-1;;;22740:82:0;;18614:2:1;22740:82:0::3;::::0;::::3;18596:21:1::0;18653:2;18633:18;;;18626:30;-1:-1:-1;;;;;;;;;;;18672:18:1;;;18665:62;-1:-1:-1;;;18743:18:1;;;18736:50;18803:19;;22740:82:0::3;18586:242:1::0;22740:82:0::3;22835:53;6251:10:::0;22854:5;22861;22874:12:::3;22835:4;:53::i;:::-;-1:-1:-1::0;;12548:1:0::2;13502:22:::0;;21634:1262::o;14826:29::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14826:29:0;;;;-1:-1:-1;;;;14826:29:0;;;;;:::o;17979:848::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;18098:5:::1;:12;18082:5;:12;:28;18074:55;;;::::0;-1:-1:-1;;;18074:55:0;;25868:2:1;18074:55:0::1;::::0;::::1;25850:21:1::0;25907:2;25887:18;;;25880:30;-1:-1:-1;;;25926:18:1;;;25919:44;25980:18;;18074:55:0::1;25840:164:1::0;18074:55:0::1;18146:6;18142:678;18157:5;:12;18155:1;:14;18142:678;;;18209:1;18198:5;18204:1;18198:8;;;;;;-1:-1:-1::0;;;18198:8:0::1;;;;;;;;;;;;;;;:12;18190:71;;;::::0;-1:-1:-1;;;18190:71:0;;22093:2:1;18190:71:0::1;::::0;::::1;22075:21:1::0;22132:2;22112:18;;;22105:30;22171:34;22151:18;;;22144:62;-1:-1:-1;;;22222:18:1;;;22215:45;22277:19;;18190:71:0::1;22065:237:1::0;18190:71:0::1;18285:12;:22;18298:5;18304:1;18298:8;;;;;;-1:-1:-1::0;;;18298:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;18285:22;;;::::1;::::0;;;;;;-1:-1:-1;18285:22:0;:31:::1;;::::0;::::1;;18284:32;18276:92;;;::::0;-1:-1:-1;;;18276:92:0;;26695:2:1;18276:92:0::1;::::0;::::1;26677:21:1::0;26734:2;26714:18;;;26707:30;26773:34;26753:18;;;26746:62;-1:-1:-1;;;26824:18:1;;;26817:46;26880:19;;18276:92:0::1;26667:238:1::0;18276:92:0::1;18410:99;;;;;;;;18440:11;;;;;;;;;-1:-1:-1::0;;;;;18440:11:0::1;-1:-1:-1::0;;;;;18410:99:0::1;;;;;18467:5;18473:1;18467:8;;;;;;-1:-1:-1::0;;;18467:8:0::1;;;;;;;;;;;;;;;18410:99;;;;18490:4;18410:99;;;;::::0;18385:12:::1;:22;18398:5;18404:1;18398:8;;;;;;-1:-1:-1::0;;;18398:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;18385:22;;;;::::1;::::0;;;;;;;;-1:-1:-1;18385:22:0;:124;;;;-1:-1:-1;;;;;18385:124:0;;::::1;-1:-1:-1::0;;;;;;18385:124:0;;::::1;;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;18385:124:0;;::::1;::::0;;;::::1;::::0;;18534:11;;18385:124:::1;18534:11:::0;::::1;;18526:37;18582:7;7350::::0;7377:6;-1:-1:-1;;;;;7377:6:0;;7304:87;18582:7:::1;18616:4;18640:5;18646:1;18640:8;;;;;;-1:-1:-1::0;;;18640:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;18526:137:::1;::::0;-1:-1:-1;;;;;;18526:137:0::1;::::0;;;;;;-1:-1:-1;;;;;6745:15:1;;;18526:137:0::1;::::0;::::1;6727:34:1::0;6797:15;;;;6777:18;;;6770:43;6829:18;;;6822:34;6662:18;;18526:137:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18743:5;18749:1;18743:8;;;;;;-1:-1:-1::0;;;18743:8:0::1;;;;;;;;;;;;;;;18713:11;;;;;;;;;-1:-1:-1::0;;;;;18713:11:0::1;-1:-1:-1::0;;;;;18685:123:0::1;;18777:15;18685:123;;;;;-1:-1:-1::0;;;;;27831:31:1;;;;27813:50;;27801:2;27786:18;;27768:101;18685:123:0::1;;;;;;;;18170:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18142:678;;;;17979:848:::0;;:::o;19503:340::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;19614:1:::1;19600:11;:15;;;19599:44;;;;-1:-1:-1::0;14425:5:0::1;19621:21;::::0;::::1;;19599:44;19591:108;;;;-1:-1:-1::0;;;19591:108:0::1;;;;;;;:::i;:::-;19725:15;19718:4;:22;19710:86;;;;-1:-1:-1::0;;;19710:86:0::1;;;;;;;:::i;:::-;19824:11;19807:28;;:8;19816:4;19807:14;;;;;-1:-1:-1::0;;;19807:14:0::1;;;;;;;;;;:28:::0;-1:-1:-1;;19503:340:0:o;25302:263::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;25393:4:::1;25417:12:::0;::::1;:22:::0;-1:-1:-1;25417:22:0::1;25409:97;;;::::0;-1:-1:-1;;;25409:97:0;;12628:2:1;25409:97:0::1;::::0;::::1;12610:21:1::0;12667:2;12647:18;;;12640:30;12706:34;12686:18;;;12679:62;12777:32;12757:18;;;12750:60;12827:19;;25409:97:0::1;12600:252:1::0;25409:97:0::1;25519:30;25533:7;7350::::0;7377:6;-1:-1:-1;;;;;7377:6:0;;7304:87;25533:7:::1;25542:6;25519:5;:30::i;:::-;7595:1;25302:263:::0;:::o;25739:65::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;25786:10:::1;:8;:10::i;:::-;25739:65::o:0;24209:1005::-;9826:7;;;;10080:9;10072:38;;;;-1:-1:-1;;;10072:38:0;;;;;;;:::i;:::-;12592:1:::1;13190:7;;:19;;13182:63;;;;-1:-1:-1::0;;;13182:63:0::1;;;;;;;:::i;:::-;12592:1;13323:7;:18:::0;24305:25:::2;6251:10:::0;24317:12:::2;6171:98:::0;24305:25:::2;24304:26;24296:113;;;::::0;-1:-1:-1;;;24296:113:0;;26211:2:1;24296:113:0::2;::::0;::::2;26193:21:1::0;26250:2;26230:18;;;26223:30;-1:-1:-1;;;;;;;;;;;26269:18:1;;;26262:62;26360:34;26340:18;;;26333:62;-1:-1:-1;;;26411:19:1;;;26404:42;26463:19;;24296:113:0::2;26183:305:1::0;24296:113:0::2;24443:32:::0;:40;-1:-1:-1;;;24443:40:0;::::2;-1:-1:-1::0;;;;;24443:40:0::2;:44:::0;;;;24442:128:::2;;-1:-1:-1::0;27287:15:0;24506:9:::2;24521:15;24506:32;:40:::0;-1:-1:-1;;;24506:40:0;::::2;-1:-1:-1::0;;;;;24506:40:0::2;:63;;24442:128;24420:237;;;::::0;-1:-1:-1;;;24420:237:0;;15665:2:1;24420:237:0::2;::::0;::::2;15647:21:1::0;15704:2;15684:18;;;15677:30;-1:-1:-1;;;;;;;;;;;15723:18:1;;;15716:62;15814:29;15794:18;;;15787:57;15861:19;;24420:237:0::2;15637:249:1::0;24420:237:0::2;24676:19;::::0;;;:12:::2;:19;::::0;;;;:28:::2;;::::0;::::2;;24668:92;;;::::0;-1:-1:-1;;;24668:92:0;;9079:2:1;24668:92:0::2;::::0;::::2;9061:21:1::0;9118:2;9098:18;;;9091:30;-1:-1:-1;;;;;;;;;;;9137:18:1;;;9130:62;-1:-1:-1;;;9208:18:1;;;9201:50;9268:19;;24668:92:0::2;9051:242:1::0;24668:92:0::2;24787:19;::::0;;;:12:::2;:19;::::0;;;;;;:30;24779:54;;-1:-1:-1;;;24779:54:0;;::::2;::::0;::::2;27279:25:1::0;;;24845:4:0::2;::::0;-1:-1:-1;;;;;24787:30:0::2;::::0;24779:47:::2;::::0;27252:18:1;;24779:54:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24779:71:0::2;;24771:146;;;::::0;-1:-1:-1;;;24771:146:0;;25436:2:1;24771:146:0::2;::::0;::::2;25418:21:1::0;25475:2;25455:18;;;25448:30;-1:-1:-1;;;;;;;;;;;25494:18:1;;;25487:62;25585:33;25565:18;;;25558:61;25636:19;;24771:146:0::2;25408:253:1::0;24771:146:0::2;24938:10;24951:45;24968:5:::0;24980:14:::2;24974:21;::::0;24951:45:::2;24938:58;;25028:5;25015:9;:18;25007:84;;;::::0;-1:-1:-1;;;25007:84:0;;20770:2:1;25007:84:0::2;::::0;::::2;20752:21:1::0;20809:2;20789:18;;;20782:30;-1:-1:-1;;;;;;;;;;;20828:18:1;;;20821:62;-1:-1:-1;;;20899:18:1;;;20892:52;20961:19;;25007:84:0::2;20742:244:1::0;25007:84:0::2;25135:5;25104:19:::0;;;:12:::2;:19;::::0;;;;:28:::2;;:36:::0;;-1:-1:-1;;25104:36:0::2;::::0;;25151:55:::2;6251:10:::0;25170:5;25177;25190:14:::2;22835:4:::3;:53::i;21142:390::-:0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;21239:20;21231:93:::1;;;::::0;-1:-1:-1;;;21231:93:0;;13059:2:1;21231:93:0::1;::::0;::::1;13041:21:1::0;13098:2;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;13208:31;13188:18;;;13181:59;13257:19;;21231:93:0::1;13031:251:1::0;21231:93:0::1;21341:7;21337:188;21352:18;::::0;::::1;::::0;-1:-1:-1;21337:188:0::1;;;21395:9;:23;21405:9;;21415:1;21405:12;;;;;;;-1:-1:-1::0;;;21405:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21395:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21395:23:0;:37:::1;;::::0;::::1;;21392:122;;;21493:5;21453:9;:23;21463:9;;21473:1;21463:12;;;;;;;-1:-1:-1::0;;;21463:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21453:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21453:23:0;:37:::1;;:45:::0;;-1:-1:-1;;21453:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21392:122:::1;21372:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21337:188;;26753:189:::0;26823:18;14425:5;26909:8;26918:4;26909:14;;;;;-1:-1:-1;;;26909:14:0;;;;;;;;;;;26899:24;;14425:5;26899:24;:::i;:::-;26870:19;;;;:12;:19;;;;;:25;;;:54;;;;:::i;:::-;:64;;;;:::i;:::-;26854:80;26753:189;-1:-1:-1;;;26753:189:0:o;7955:103::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;8020:30:::1;8047:1;8020:18;:30::i;19912:723::-:0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;20012:1:::1;19997:5;:12;:16;19989:101;;;::::0;-1:-1:-1;;;19989:101:0;;17364:2:1;19989:101:0::1;::::0;::::1;17346:21:1::0;17403:2;17383:18;;;17376:30;17442:34;17422:18;;;17415:62;17513:34;17493:18;;;17486:62;-1:-1:-1;;;17564:19:1;;;17557:39;17613:19;;19989:101:0::1;17336:302:1::0;19989:101:0::1;20105:6;20101:527;20116:5;:12;20114:1;:14;20101:527;;;20157:12;:22;20170:5;20176:1;20170:8;;;;;;-1:-1:-1::0;;;20170:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;20157:22;;;::::1;::::0;;;;;;-1:-1:-1;20157:22:0;:31:::1;;::::0;::::1;;20149:112;;;::::0;-1:-1:-1;;;20149:112:0;;19510:2:1;20149:112:0::1;::::0;::::1;19492:21:1::0;19549:2;19529:18;;;19522:30;19588:34;19568:18;;;19561:62;19659:34;19639:18;;;19632:62;-1:-1:-1;;;19710:19:1;;;19703:36;19756:19;;20149:112:0::1;19482:299:1::0;20149:112:0::1;20312:5;20278:12;:22;20291:5;20297:1;20291:8;;;;;;-1:-1:-1::0;;;20291:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;20278:22;;;::::1;::::0;;;;;;-1:-1:-1;20278:22:0;:31:::1;::::0;;::::1;:39:::0;;;::::1;;-1:-1:-1::0;;20278:39:0;;::::1;::::0;;;::::1;::::0;;;20340:11;-1:-1:-1;;;;;20278:39:0::1;20340:11:::0;;::::1;;20332:37;20396:4;20420:7;7350::::0;7377:6;-1:-1:-1;;;;;7377:6:0;;7304:87;20420:7:::1;20446:5;20452:1;20446:8;;;;;;-1:-1:-1::0;;;20446:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;20332:137:::1;::::0;-1:-1:-1;;;;;;20332:137:0::1;::::0;;;;;;-1:-1:-1;;;;;6745:15:1;;;20332:137:0::1;::::0;::::1;6727:34:1::0;6797:15;;;;6777:18;;;6770:43;6829:18;;;6822:34;6662:18;;20332:137:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20551:5;20557:1;20551:8;;;;;;-1:-1:-1::0;;;20551:8:0::1;;;;;;;;;;;;;;;20521:11;;;;;;;;;-1:-1:-1::0;;;;;20521:11:0::1;-1:-1:-1::0;;;;;20491:125:0::1;;20585:15;20491:125;;;;;-1:-1:-1::0;;;;;27831:31:1;;;;27813:50;;27801:2;27786:18;;27768:101;20491:125:0::1;;;;;;;;20129:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20101:527;;20697:380:::0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;20789:20;20781:88:::1;;;::::0;-1:-1:-1;;;20781:88:0;;8305:2:1;20781:88:0::1;::::0;::::1;8287:21:1::0;8344:2;8324:18;;;8317:30;8383:34;8363:18;;;8356:62;8454:26;8434:18;;;8427:54;8498:19;;20781:88:0::1;8277:246:1::0;20781:88:0::1;20886:7;20882:188;20897:18;::::0;::::1;::::0;-1:-1:-1;20882:188:0::1;;;20941:9;:23;20951:9;;20961:1;20951:12;;;;;;;-1:-1:-1::0;;;20951:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20941:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20941:23:0;:37:::1;;::::0;::::1;;20937:122;;21039:4;20999:9;:23;21009:9;;21019:1;21009:12;;;;;;;-1:-1:-1::0;;;21009:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20999:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20999:23:0;:37:::1;;:44:::0;;-1:-1:-1;;20999:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20937:122:::1;20917:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20882:188;;25621:61:::0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;25666:8:::1;:6;:8::i;16316:635::-:0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;16418:9:::1;:37:::0;-1:-1:-1;;;16418:37:0;::::1;-1:-1:-1::0;;;;;16418:37:0::1;16410:122;;;::::0;-1:-1:-1;;;16410:122:0;;7828:2:1;16410:122:0::1;::::0;::::1;7810:21:1::0;7867:2;7847:18;;;7840:30;;;7906:34;7886:18;;;7879:62;7977:34;7957:18;;;7950:62;-1:-1:-1;;;8028:19:1;;;8021:35;8073:19;;16410:122:0::1;7800:298:1::0;16410:122:0::1;16575:1;16552:20;;::::0;::::1;:10:::0;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;16552:24:0::1;;16551:92;;;;-1:-1:-1::0;16605:9:0::1;:37:::0;-1:-1:-1;;;16605:37:0;::::1;-1:-1:-1::0;;;;;16605:37:0::1;16582:20;;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;16582:60:0::1;;16551:92;16543:182;;;::::0;-1:-1:-1;;;16543:182:0;;14335:2:1;16543:182:0::1;::::0;::::1;14317:21:1::0;14374:2;14354:18;;;14347:30;14413:34;14393:18;;;14386:62;14484:34;14464:18;;;14457:62;-1:-1:-1;;;14535:19:1;;;14528:44;14589:19;;16543:182:0::1;14307:307:1::0;16543:182:0::1;16765:20;;::::0;::::1;:10:::0;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;16744:41:0::1;:18;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;16744:41:0::1;;16736:123;;;::::0;-1:-1:-1;;;16736:123:0;;23332:2:1;16736:123:0::1;::::0;::::1;23314:21:1::0;23371:2;23351:18;;;23344:30;23410:34;23390:18;;;23383:62;23481:34;23461:18;;;23454:62;-1:-1:-1;;;23532:19:1;;;23525:36;23578:19;;16736:123:0::1;23304:299:1::0;16736:123:0::1;16872:13;:15:::0;;;:13:::1;:15;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;16933:10:0;;-1:-1:-1;16898:9:0::1;16913:15;16908:21;16898:32;;;;;-1:-1:-1::0;;;16898:32:0::1;;;;;;;;;;:45;::::0;:32;:45:::1;:::i;23003:1116::-:0;9826:7;;;;10080:9;10072:38;;;;-1:-1:-1;;;10072:38:0;;;;;;;:::i;:::-;12592:1:::1;13190:7;;:19;;13182:63;;;;-1:-1:-1::0;;;13182:63:0::1;;;;;;;:::i;:::-;12592:1;13323:7;:18:::0;23100:25:::2;6251:10:::0;23112:12:::2;6171:98:::0;23100:25:::2;23099:26;23091:114;;;::::0;-1:-1:-1;;;23091:114:0;;11288:2:1;23091:114:0::2;::::0;::::2;11270:21:1::0;11327:2;11307:18;;;11300:30;-1:-1:-1;;;;;;;;;;;11346:18:1;;;11339:62;11437:34;11417:18;;;11410:62;-1:-1:-1;;;11488:19:1;;;11481:43;11541:19;;23091:114:0::2;11260:306:1::0;23091:114:0::2;23239:32:::0;:42;-1:-1:-1;;;;;23239:42:0::2;:46:::0;;;;23238:132:::2;;-1:-1:-1::0;27287:15:0;23304:9:::2;23319:15;23304:32;:42:::0;-1:-1:-1;;;;;23304:42:0::2;:65;;23238:132;:214;;;;-1:-1:-1::0;27287:15:0;23388:9:::2;23403:15;23388:32;:40:::0;-1:-1:-1;;;23388:40:0;::::2;-1:-1:-1::0;;;;;23388:40:0::2;:63;;23238:214;23216:341;;;::::0;-1:-1:-1;;;23216:341:0;;15179:2:1;23216:341:0::2;::::0;::::2;15161:21:1::0;15218:2;15198:18;;;15191:30;-1:-1:-1;;;;;;;;;;;15237:18:1;;;15230:62;15328:34;15308:18;;;15301:62;-1:-1:-1;;;15379:19:1;;;15372:44;15433:19;;23216:341:0::2;15151:307:1::0;23216:341:0::2;23576:19;::::0;;;:12:::2;:19;::::0;;;;:28:::2;;::::0;::::2;;23568:93;;;::::0;-1:-1:-1;;;23568:93:0;;11773:2:1;23568:93:0::2;::::0;::::2;11755:21:1::0;11812:2;11792:18;;;11785:30;-1:-1:-1;;;;;;;;;;;11831:18:1;;;11824:62;-1:-1:-1;;;11902:18:1;;;11895:51;11963:19;;23568:93:0::2;11745:243:1::0;23568:93:0::2;23688:19;::::0;;;:12:::2;:19;::::0;;;;;;:30;23680:54;;-1:-1:-1;;;23680:54:0;;::::2;::::0;::::2;27279:25:1::0;;;23746:4:0::2;::::0;-1:-1:-1;;;;;23688:30:0::2;::::0;23680:47:::2;::::0;27252:18:1;;23680:54:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23680:71:0::2;;23672:147;;;::::0;;-1:-1:-1;;;23672:147:0;;12195:2:1;23672:147:0::2;::::0;::::2;12177:21:1::0;12214:18;;;12207:30;;;;-1:-1:-1;;;;;;;;;;;12253:18:1;;;12246:62;12344:34;12324:18;;;12317:62;12396:19;;23672:147:0::2;12167:254:1::0;23672:147:0::2;23840:10;23853:46;23870:5:::0;23882:15:::2;23876:22;::::0;23853:46:::2;23840:59;;23931:5;23918:9;:18;23910:85;;;::::0;-1:-1:-1;;;23910:85:0;;18190:2:1;23910:85:0::2;::::0;::::2;18172:21:1::0;18229:2;18209:18;;;18202:30;-1:-1:-1;;;;;;;;;;;18248:18:1;;;18241:62;18339:25;18319:18;;;18312:53;18382:19;;23910:85:0::2;18162:245:1::0;23910:85:0::2;24039:5;24008:19:::0;;;:12:::2;:19;::::0;;;;:28:::2;;:36:::0;;-1:-1:-1;;24008:36:0::2;::::0;;24055:56:::2;6251:10:::0;24074:5;24081;24094:15:::2;22835:4:::3;:53::i;17425:179::-:0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17503:12:0;::::1;17495:74;;;::::0;-1:-1:-1;;;17495:74:0;;21675:2:1;17495:74:0::1;::::0;::::1;21657:21:1::0;21714:2;21694:18;;;21687:30;21753:34;21733:18;;;21726:62;-1:-1:-1;;;21804:18:1;;;21797:47;21861:19;;17495:74:0::1;21647:239:1::0;17495:74:0::1;17580:6;:16:::0;;-1:-1:-1;;;;;;17580:16:0::1;-1:-1:-1::0;;;;;17580:16:0;;;::::1;::::0;;;::::1;::::0;;17425:179::o;17021:310::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;27287:15;17080:9:::1;17095:15;17080:32;:40:::0;-1:-1:-1;;;17080:40:0;::::1;-1:-1:-1::0;;;;;17080:40:0::1;:62;17072:134;;;::::0;-1:-1:-1;;;17072:134:0;;16935:2:1;17072:134:0::1;::::0;::::1;16917:21:1::0;16974:2;16954:18;;;16947:30;17013:34;16993:18;;;16986:62;17084:30;17064:18;;;17057:58;17132:19;;17072:134:0::1;16907:250:1::0;17072:134:0::1;17252:14;::::0;;;;::::1;::::0;;-1:-1:-1;17252:14:0;;;::::1;::::0;;::::1;::::0;;;17217:32;:49;;-1:-1:-1;;;;;;17217:49:0;;;;;;17309:14;;;;::::1;::::0;;;;;;;;;::::1;::::0;17217:9:::1;17277:46:::0;;;;;;;17021:310::o;18910:507::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;19031:5:::1;:12;19015:5;:12;:28;19007:95;;;::::0;-1:-1:-1;;;19007:95:0;;16512:2:1;19007:95:0::1;::::0;::::1;16494:21:1::0;16551:2;16531:18;;;16524:30;-1:-1:-1;;;;;;;;;;;16570:18:1;;;16563:62;-1:-1:-1;;;16641:18:1;;;16634:52;16703:19;;19007:95:0::1;16484:244:1::0;19007:95:0::1;19117:6;19113:297;19128:5;:12;19126:1;:14;19113:297;;;19180:1;19169:5;19175:1;19169:8;;;;;;-1:-1:-1::0;;;19169:8:0::1;;;;;;;;;;;;;;;:12;19161:73;;;::::0;-1:-1:-1;;;19161:73:0;;9500:2:1;19161:73:0::1;::::0;::::1;9482:21:1::0;9539:2;9519:18;;;9512:30;-1:-1:-1;;;;;;;;;;;9558:18:1;;;9551:62;-1:-1:-1;;;9629:18:1;;;9622:47;9686:19;;19161:73:0::1;9472:239:1::0;19161:73:0::1;19257:12;:22;19270:5;19276:1;19270:8;;;;;;-1:-1:-1::0;;;19270:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;19257:22;;;::::1;::::0;;;;;;-1:-1:-1;19257:22:0;:31:::1;;::::0;::::1;;19249:93;;;::::0;-1:-1:-1;;;19249:93:0;;16093:2:1;19249:93:0::1;::::0;::::1;16075:21:1::0;16132:2;16112:18;;;16105:30;-1:-1:-1;;;;;;;;;;;16151:18:1;;;16144:62;-1:-1:-1;;;16222:18:1;;;16215:48;16280:19;;19249:93:0::1;16065:240:1::0;19249:93:0::1;19390:5;19396:1;19390:8;;;;;;-1:-1:-1::0;;;19390:8:0::1;;;;;;;;;;;;;;;19359:12;:22;19372:5;19378:1;19372:8;;;;;;-1:-1:-1::0;;;19372:8:0::1;;;;;;;;;;;;;;;19359:22;;;;;;;;;;;:28;;:39;;;;19141:3;;;;;:::i;:::-;;;;19113:297;;8213:201:::0;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8302:22:0;::::1;8294:73;;;::::0;-1:-1:-1;;;8294:73:0;;10402:2:1;8294:73:0::1;::::0;::::1;10384:21:1::0;10441:2;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;-1:-1:-1;;;10531:18:1;;;10524:36;10577:19;;8294:73:0::1;10374:228:1::0;8294:73:0::1;8378:28;8397:8;8378:18;:28::i;:::-;8213:201:::0;:::o;15663:584::-;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;15762:32;:40;-1:-1:-1;;;15762:40:0;::::1;-1:-1:-1::0;;;;;15762:40:0::1;:45:::0;15754:128:::1;;;::::0;-1:-1:-1;;;15754:128:0;;10809:2:1;15754:128:0::1;::::0;::::1;10791:21:1::0;10848:2;10828:18;;;10821:30;10887:34;10867:18;;;10860:62;10958:34;10938:18;;;10931:62;-1:-1:-1;;;11009:19:1;;;11002:37;11056:19;;15754:128:0::1;10781:300:1::0;15754:128:0::1;15925:1;15902:20;;::::0;::::1;:10:::0;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;15902:24:0::1;;15901:74;;;;-1:-1:-1::0;27287:15:0;15932:20:::1;;::::0;::::1;:10:::0;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;15932:42:0::1;;15901:74;15893:160;;;::::0;-1:-1:-1;;;15893:160:0;;21193:2:1;15893:160:0::1;::::0;::::1;21175:21:1::0;21232:2;21212:18;;;21205:30;21271:34;21251:18;;;21244:62;21342:34;21322:18;;;21315:62;-1:-1:-1;;;21393:19:1;;;21386:40;21443:19;;15893:160:0::1;21165:303:1::0;15893:160:0::1;16093:20;;::::0;::::1;:10:::0;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;16072:41:0::1;:18;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;16072:41:0::1;;16064:120;;;::::0;-1:-1:-1;;;16064:120:0;;19035:2:1;16064:120:0::1;::::0;::::1;19017:21:1::0;19074:2;19054:18;;;19047:30;19113:34;19093:18;;;19086:62;19184:34;19164:18;;;19157:62;-1:-1:-1;;;19235:19:1;;;19228:33;19278:19;;16064:120:0::1;19007:296:1::0;16064:120:0::1;16229:10:::0;16197:9:::1;16212:12;16207:18;::::0;17676:234;7350:7;7377:6;-1:-1:-1;;;;;7377:6:0;6251:10;7524:23;7516:68;;;;-1:-1:-1;;;7516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17764:26:0;::::1;17756:109;;;::::0;-1:-1:-1;;;17756:109:0;;22509:2:1;17756:109:0::1;::::0;::::1;22491:21:1::0;22548:2;22528:18;;;22521:30;22587:34;22567:18;;;22560:62;22658:34;22638:18;;;22631:62;-1:-1:-1;;;22709:19:1;;;22702:38;22757:19;;17756:109:0::1;22481:301:1::0;17756:109:0::1;17876:11;:26:::0;;-1:-1:-1;;;;;17876:26:0;;::::1;;;-1:-1:-1::0;;;;;;17876:26:0;;::::1;::::0;;;::::1;::::0;;17676:234::o;25875:427::-;25964:29;25978:7;7350;7377:6;-1:-1:-1;;;;;7377:6:0;;7304:87;25964:29;26014:19;;;;:12;:19;;;;;;;:30;26006:135;;-1:-1:-1;;;26006:135:0;;26085:4;26006:135;;;6727:34:1;-1:-1:-1;;;;;6797:15:1;;;6777:18;;;6770:43;6829:18;;;6822:34;;;26014:30:0;;;;26006:56;;6662:18:1;;26006:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26159:135:0;;;27511:25:1;;;26244:15:0;-1:-1:-1;;;;;27572:31:1;27567:2;27552:18;;27545:59;27652:4;27640:17;;27620:18;;;27613:45;26159:135:0;;26197:5;;-1:-1:-1;;;;;;26159:135:0;;;-1:-1:-1;26159:135:0;;;;;27499:2:1;26159:135:0;;;25875:427;;;;:::o;26378:312::-;26488:6;26463:21;:31;;26455:73;;;;-1:-1:-1;;;26455:73:0;;14821:2:1;26455:73:0;;;14803:21:1;14860:2;14840:18;;;14833:30;14899:31;14879:18;;;14872:59;14948:18;;26455:73:0;14793:179:1;26455:73:0;26542:12;26560:9;-1:-1:-1;;;;;26560:14:0;26582:6;26560:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26541:52;;;26612:7;26604:78;;;;-1:-1:-1;;;26604:78:0;;13908:2:1;26604:78:0;;;13890:21:1;13947:2;13927:18;;;13920:30;13986:34;13966:18;;;13959:62;14057:28;14037:18;;;14030:56;14103:19;;26604:78:0;13880:248:1;10814:120:0;9826:7;;;;10350:41;;;;-1:-1:-1;;;10350:41:0;;8730:2:1;10350:41:0;;;8712:21:1;8769:2;8749:18;;;8742:30;-1:-1:-1;;;8788:18:1;;;8781:50;8848:18;;10350:41:0;8702:170:1;10350:41:0;10873:7:::1;:15:::0;;-1:-1:-1;;10873:15:0::1;::::0;;10904:22:::1;6251:10:::0;10913:12:::1;10904:22;::::0;-1:-1:-1;;;;;6443:32:1;;;6425:51;;6413:2;6398:18;10904:22:0::1;;;;;;;10814:120::o:0;8574:191::-;8648:16;8667:6;;-1:-1:-1;;;;;8684:17:0;;;-1:-1:-1;;;;;;8684:17:0;;;;;;8717:40;;8667:6;;;;;;;8717:40;;8648:16;8717:40;8574:191;;:::o;10555:118::-;9826:7;;;;10080:9;10072:38;;;;-1:-1:-1;;;10072:38:0;;;;;;;:::i;:::-;10615:7:::1;:14:::0;;-1:-1:-1;;10615:14:0::1;10625:4;10615:14;::::0;;10645:20:::1;10652:12;6251:10:::0;;6171:98;14:743:1;68:5;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;183:6;170:20;209:4;-1:-1:-1;;;;;228:2:1;225:26;222:2;;;254:18;;:::i;:::-;300:2;297:1;293:10;323:28;347:2;343;339:11;323:28;:::i;:::-;385:15;;;416:12;;;;448:15;;;482;;;478:24;;475:33;-1:-1:-1;472:2:1;;;525:5;518;511:20;472:2;551:5;542:14;;565:163;579:2;576:1;573:9;565:163;;;636:17;;624:30;;597:1;590:9;;;;;674:12;;;;706;;565:163;;;-1:-1:-1;746:5:1;78:679;-1:-1:-1;;;;;;;78:679:1:o;762:257::-;821:6;874:2;862:9;853:7;849:23;845:32;842:2;;;895:6;887;880:22;842:2;939:9;926:23;958:31;983:5;958:31;:::i;1024:261::-;1094:6;1147:2;1135:9;1126:7;1122:23;1118:32;1115:2;;;1168:6;1160;1153:22;1115:2;1205:9;1199:16;1224:31;1249:5;1224:31;:::i;1290:1153::-;1385:6;1393;1401;1409;1462:3;1450:9;1441:7;1437:23;1433:33;1430:2;;;1484:6;1476;1469:22;1430:2;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;-1:-1:-1;1621:2:1;1660:18;;;1647:32;1688:33;1647:32;1688:33;:::i;:::-;1740:7;-1:-1:-1;1794:2:1;1779:18;;1766:32;;-1:-1:-1;1849:2:1;1834:18;;1821:32;-1:-1:-1;;;;;1902:14:1;;;1899:2;;;1934:6;1926;1919:22;1899:2;1977:6;1966:9;1962:22;1952:32;;2022:7;2015:4;2011:2;2007:13;2003:27;1993:2;;2049:6;2041;2034:22;1993:2;2090;2077:16;2112:2;2108;2105:10;2102:2;;;2118:18;;:::i;:::-;2160:53;2203:2;2184:13;;-1:-1:-1;;2180:27:1;2176:36;;2160:53;:::i;:::-;2147:66;;2236:2;2229:5;2222:17;2276:7;2271:2;2266;2262;2258:11;2254:20;2251:33;2248:2;;;2302:6;2294;2287:22;2248:2;2362;2357;2353;2349:11;2344:2;2337:5;2333:14;2320:45;2385:14;;2381:23;;;2374:39;;;;1420:1023;;;;-1:-1:-1;1420:1023:1;;-1:-1:-1;;1420:1023:1:o;2448:325::-;2516:6;2524;2577:2;2565:9;2556:7;2552:23;2548:32;2545:2;;;2598:6;2590;2583:22;2545:2;2642:9;2629:23;2661:31;2686:5;2661:31;:::i;:::-;2711:5;2763:2;2748:18;;;;2735:32;;-1:-1:-1;;;2535:238:1:o;2778:665::-;2864:6;2872;2925:2;2913:9;2904:7;2900:23;2896:32;2893:2;;;2946:6;2938;2931:22;2893:2;2991:9;2978:23;-1:-1:-1;;;;;3061:2:1;3053:6;3050:14;3047:2;;;3082:6;3074;3067:22;3047:2;3125:6;3114:9;3110:22;3100:32;;3170:7;3163:4;3159:2;3155:13;3151:27;3141:2;;3197:6;3189;3182:22;3141:2;3242;3229:16;3268:2;3260:6;3257:14;3254:2;;;3289:6;3281;3274:22;3254:2;3347:7;3342:2;3332:6;3329:1;3325:14;3321:2;3317:23;3313:32;3310:45;3307:2;;;3373:6;3365;3358:22;3307:2;3409;3401:11;;;;;3431:6;;-1:-1:-1;2883:560:1;;-1:-1:-1;;;;2883:560:1:o;3448:368::-;3532:6;3585:2;3573:9;3564:7;3560:23;3556:32;3553:2;;;3606:6;3598;3591:22;3553:2;3651:9;3638:23;-1:-1:-1;;;;;3676:6:1;3673:30;3670:2;;;3721:6;3713;3706:22;3670:2;3749:61;3802:7;3793:6;3782:9;3778:22;3749:61;:::i;:::-;3739:71;3543:273;-1:-1:-1;;;;3543:273:1:o;3821:625::-;3939:6;3947;4000:2;3988:9;3979:7;3975:23;3971:32;3968:2;;;4021:6;4013;4006:22;3968:2;4066:9;4053:23;-1:-1:-1;;;;;4136:2:1;4128:6;4125:14;4122:2;;;4157:6;4149;4142:22;4122:2;4185:61;4238:7;4229:6;4218:9;4214:22;4185:61;:::i;:::-;4175:71;;4299:2;4288:9;4284:18;4271:32;4255:48;;4328:2;4318:8;4315:16;4312:2;;;4349:6;4341;4334:22;4312:2;;4377:63;4432:7;4421:8;4410:9;4406:24;4377:63;:::i;:::-;4367:73;;;3958:488;;;;;:::o;4451:204::-;4538:6;4591:2;4579:9;4570:7;4566:23;4562:32;4559:2;;;4612:6;4604;4597:22;4559:2;-1:-1:-1;4640:9:1;4549:106;-1:-1:-1;4549:106:1:o;4660:321::-;4719:6;4772:2;4760:9;4751:7;4747:23;4743:32;4740:2;;;4793:6;4785;4778:22;4740:2;4837:9;4824:23;-1:-1:-1;;;;;4880:5:1;4876:46;4869:5;4866:57;4856:2;;4942:6;4934;4927:22;4986:190;5045:6;5098:2;5086:9;5077:7;5073:23;5069:32;5066:2;;;5119:6;5111;5104:22;5066:2;-1:-1:-1;5147:23:1;;5056:120;-1:-1:-1;5056:120:1:o;5181:360::-;5248:6;5256;5309:2;5297:9;5288:7;5284:23;5280:32;5277:2;;;5330:6;5322;5315:22;5277:2;5371:9;5358:23;5348:33;;5431:2;5420:9;5416:18;5403:32;5475:6;5468:5;5464:18;5457:5;5454:29;5444:2;;5502:6;5494;5487:22;5444:2;5530:5;5520:15;;;5267:274;;;;;:::o;5546:258::-;5614:6;5622;5675:2;5663:9;5654:7;5650:23;5646:32;5643:2;;;5696:6;5688;5681:22;5643:2;-1:-1:-1;;5724:23:1;;;5794:2;5779:18;;;5766:32;;-1:-1:-1;5633:171:1:o;5809:255::-;5867:6;5920:2;5908:9;5899:7;5895:23;5891:32;5888:2;;;5941:6;5933;5926:22;5888:2;5985:9;5972:23;6004:30;6028:5;6004:30;:::i;17643:340::-;17845:2;17827:21;;;17884:2;17864:18;;;17857:30;-1:-1:-1;;;17918:2:1;17903:18;;17896:46;17974:2;17959:18;;17817:166::o;19786:356::-;19988:2;19970:21;;;20007:18;;;20000:30;20066:34;20061:2;20046:18;;20039:62;20133:2;20118:18;;19960:182::o;20147:416::-;20349:2;20331:21;;;20388:2;20368:18;;;20361:30;-1:-1:-1;;;;;;;;;;;20422:2:1;20407:18;;20400:62;-1:-1:-1;;;20493:2:1;20478:18;;20471:50;20553:3;20538:19;;20321:242::o;23608:355::-;23810:2;23792:21;;;23849:2;23829:18;;;23822:30;23888:33;23883:2;23868:18;;23861:61;23954:2;23939:18;;23782:181::o;28178:275::-;28249:2;28243:9;28314:2;28295:13;;-1:-1:-1;;28291:27:1;28279:40;;-1:-1:-1;;;;;28334:34:1;;28370:22;;;28331:62;28328:2;;;28396:18;;:::i;:::-;28432:2;28425:22;28223:230;;-1:-1:-1;28223:230:1:o;28458:217::-;28498:1;28524;28514:2;;-1:-1:-1;;;28549:31:1;;28603:4;28600:1;28593:15;28631:4;28556:1;28621:15;28514:2;-1:-1:-1;28660:9:1;;28504:171::o;28680:168::-;28720:7;28786:1;28782;28778:6;28774:14;28771:1;28768:21;28763:1;28756:9;28749:17;28745:45;28742:2;;;28793:18;;:::i;:::-;-1:-1:-1;28833:9:1;;28732:116::o;28853:125::-;28893:4;28921:1;28918;28915:8;28912:2;;;28926:18;;:::i;:::-;-1:-1:-1;28963:9:1;;28902:76::o;28983:135::-;29022:3;-1:-1:-1;;29043:17:1;;29040:2;;;29063:18;;:::i;:::-;-1:-1:-1;29110:1:1;29099:13;;29030:88::o;29123:175::-;29160:3;29204:4;29197:5;29193:16;29233:4;29224:7;29221:17;29218:2;;;29241:18;;:::i;:::-;29290:1;29277:15;;29168:130;-1:-1:-1;;29168:130:1:o;29303:127::-;29364:10;29359:3;29355:20;29352:1;29345:31;29395:4;29392:1;29385:15;29419:4;29416:1;29409:15;29435:127;29496:10;29491:3;29487:20;29484:1;29477:31;29527:4;29524:1;29517:15;29551:4;29548:1;29541:15;29567:599;29734:5;29721:19;29749:32;29773:7;29749:32;:::i;:::-;-1:-1:-1;;;;;29804:7:1;29800:32;29790:42;;29857:4;29851:11;29921:2;-1:-1:-1;;;;;29895:23:1;29891:2;29887:32;29884:40;29878:4;29871:54;29973:2;29966:5;29962:14;29949:28;29986:32;30010:7;29986:32;:::i;:::-;30123:34;30113:7;30109:2;30105:16;30101:57;30096:2;-1:-1:-1;;;;;30054:39:1;30050:2;30046:48;30043:56;30040:119;30034:4;30027:133;;;;29696:470;;:::o;30171:131::-;-1:-1:-1;;;;;30246:31:1;;30236:42;;30226:2;;30292:1;30289;30282:12;30307:129;-1:-1:-1;;;;;30385:5:1;30381:30;30374:5;30371:41;30361:2;;30426:1;30423;30416:12
Swarm Source
ipfs://fcf68c23bbcd6220bfe3314a383f755243370b74b8b6452fe1671e4421d8d50b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.