More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 158 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Withdraw ERC20 | 14525234 | 817 days ago | IN | 0 ETH | 0.00205337 | ||||
Pay For Claim | 13628098 | 957 days ago | IN | 0 ETH | 0.0058937 | ||||
Claim By Admin | 13619250 | 958 days ago | IN | 0 ETH | 0.01968416 | ||||
Claim By Admin | 13619247 | 958 days ago | IN | 0 ETH | 0.01979544 | ||||
Pay For Claim | 13606173 | 960 days ago | IN | 0 ETH | 0.00604653 | ||||
Pay For Claim An... | 13602939 | 961 days ago | IN | 0 ETH | 0.00915579 | ||||
Claim By Admin | 13581229 | 964 days ago | IN | 0 ETH | 0.02794811 | ||||
Pay For Claim | 13578889 | 965 days ago | IN | 0 ETH | 0.00694555 | ||||
Claim By Admin | 13576881 | 965 days ago | IN | 0 ETH | 0.03066047 | ||||
Claim By Admin | 13575939 | 965 days ago | IN | 0 ETH | 0.02344192 | ||||
Pay For Claim An... | 13572439 | 966 days ago | IN | 0 ETH | 0.00905533 | ||||
Pay For Claim | 13562796 | 967 days ago | IN | 0 ETH | 0.0040899 | ||||
Claim By Admin | 13544442 | 970 days ago | IN | 0 ETH | 0.02873544 | ||||
Claim By Admin | 13544440 | 970 days ago | IN | 0 ETH | 0.03164212 | ||||
Claim By Admin | 13544212 | 970 days ago | IN | 0 ETH | 0.0367141 | ||||
Pay For Claim | 13544151 | 970 days ago | IN | 0 ETH | 0.01096592 | ||||
Claim By Admin | 13544127 | 970 days ago | IN | 0 ETH | 0.0388644 | ||||
Pay For Claim | 13544097 | 970 days ago | IN | 0 ETH | 0.01217834 | ||||
Pay For Claim | 13544080 | 970 days ago | IN | 0 ETH | 0.01044621 | ||||
Pay For Claim | 13540912 | 971 days ago | IN | 0 ETH | 0.00811765 | ||||
Claim By Admin | 13539747 | 971 days ago | IN | 0 ETH | 0.0310831 | ||||
Pay For Claim | 13539658 | 971 days ago | IN | 0 ETH | 0.00828423 | ||||
Claim By Admin | 13538329 | 971 days ago | IN | 0 ETH | 0.03362471 | ||||
Claim By Admin | 13538293 | 971 days ago | IN | 0 ETH | 0.03087772 | ||||
Claim By Admin | 13538249 | 971 days ago | IN | 0 ETH | 0.03265833 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UniqClaimingByAdmin
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract UniqClaimingByAdmin is Ownable { /// ----- VARIABLES ----- /// /// Settings /// @dev Claiming Price uint256 internal _standardClaimingPrice; /// @dev Owner Changing price uint256 internal _standardOwnerChangingPrice; /// @dev Verification price uint256 internal _standardPriceForVerification; /// @dev address of ERC20 token address internal _ERC20tokenAddress; /// NFT Contracts /// @dev Contract Addresses Accepted By Uniqly mapping(address => bool) internal _acceptedContracts; /// @dev Price for claiming in Native ERC20 token mapping(address => uint256) internal _pricesForClaiming; /// @dev Change Onwer mapping(address => uint256) internal _pricesForOwnerChanging; /// @dev isBurable mapping(address => bool) internal _isBurnable; /// Token /// @dev Returns true if token was claimed mapping(address => mapping(uint256 => bool)) internal _isTokenClaimed; /// @dev Claimed ids of contract mapping(address => uint256[]) internal _claimedIds; /// @dev Owners addresses Array mapping(address => mapping(uint256 => mapping(uint256 => address))) internal _ownersAddresses; /// @dev Owners array count mapping(address => mapping(uint256 => uint256)) internal _ownersCount; /// Name verification /// @dev Nonce for verification mapping(uint256 => bool) internal _isNonceRedeemed; /// @dev Addresses owners mapping(address => string) internal _addressesOwners; /// @dev Is onwer verified mapping(address => bool) internal _isAddressesOwnerVerified; /// ----- EVENTS ----- /// event Claim( address indexed _contractAddress, address indexed _claimer, uint256 indexed _tokenId, bytes _verificationStatus, string _claimersName ); event ChangeOwner( address indexed _contractAddress, uint256 indexed _id, address _newOwner, address indexed _prevOwner, string _newOwnersName ); event PayedForClaim( address indexed _claimer, address indexed _contractAddress, uint256 indexed _tokenId ); event RequestedVerification(address indexed _requester, string _name); /// ----- VIEWS ----- /// /// @notice Returns true if token was claimed function isTokenClaimed(address _address, uint256 _tokenId) external view returns (bool) { return _isTokenClaimed[_address][_tokenId]; } /// @notice Returns true for authorized contract addresses function isContractAuthorized(address _address) external view returns (bool) { return _acceptedContracts[_address]; } /// @notice Returns last owners address, name and verification status function getLastOwnerOf(address _address, uint256 _id) external view returns ( address, string memory, bool ) { uint256 len = _ownersCount[_address][_id] - 1; address ownerAddress = _ownersAddresses[_address][_id][len]; return ( ownerAddress, _addressesOwners[ownerAddress], _isAddressesOwnerVerified[ownerAddress] ); } /// @notice Returns true when nonce was redeemed function isNonceRedeemed(uint256 _nonce) external view returns (bool) { return _isNonceRedeemed[_nonce]; } /// @notice Returns owners count of token function getOwnersCountOfToken(address _address, uint256 _id) external view returns (uint256) { return (_ownersCount[_address][_id]); } /// @notice Returns owners name and verification status function getAddressOwnerInfo(address _address) external view returns (string memory, bool) { bytes memory bts = bytes(_addressesOwners[_address]); require(bts.length != 0, "Address not used yet"); return ( _addressesOwners[_address], _isAddressesOwnerVerified[_address] ); } /// @notice Returns address and name of token owner by position in array function getOwnerOfTokenByPosition( address _address, uint256 _id, uint256 _position ) external view returns (address, string memory) { address ownerAddress = _ownersAddresses[_address][_id][_position]; return (ownerAddress, _addressesOwners[ownerAddress]); } /// @notice Returns all token holders names function getAllTokenHoldersNamesHistory(address _address, uint256 _id) external view returns (string[] memory) { uint256 len = _ownersCount[_address][_id]; if (len == 0) { return new string[](0); } string[] memory res = new string[](len); uint256 index; for (index = 0; index < len; index++) { res[index] = _addressesOwners[ _ownersAddresses[_address][_id][index] ]; } return res; } /// @notice Returns all token holders addresses function getAllTokenHoldersAddressesHistory(address _address, uint256 _id) external view returns (address[] memory) { uint256 len = _ownersCount[_address][_id]; if (len == 0) { return new address[](0); } address[] memory res = new address[](len); uint256 index; for (index = 0; index < len; index++) { res[index] = _ownersAddresses[_address][_id][index]; } return res; } /// @notice Returns all claimed ids of selected collection function getClaimedIdsOfCollection(address _address) external view returns (uint256[] memory) { uint256 len = _claimedIds[_address].length; if (len == 0) { return new uint256[](0); } uint256[] memory res = new uint256[](len); uint256 index; for (index = 0; index < len; index++) { res[index] = _claimedIds[_address][index]; } return res; } /// @notice Returns how many items of collection was claimed function getClaimedCountOf(address _address) external view returns (uint256) { return _claimedIds[_address].length; } /// @notice Returns Claiming Standard price function getStandardClaimingPrice() external view returns (uint256) { return _standardClaimingPrice; } /// @notice Returns Claiming Price For selected contract function getClaimingPriceForContract(address _address) external view returns (uint256) { return _getCorrectPrice( _pricesForClaiming[_address], _standardClaimingPrice ); } /// @notice Returns Holders Change Rate For selected contract function getChangeOwnerPriceForContract(address _address) external view returns (uint256) { return _getCorrectPrice( _pricesForOwnerChanging[_address], _standardOwnerChangingPrice ); } /// @notice Returns Standard Price For Verification function getPriceForVerification() external view returns (uint256) { return _standardPriceForVerification; } /// @notice Returns true for burnable tokens in contract function isBurnable(address _address) external view returns (bool) { return _isBurnable[_address]; } /// @notice Returns sum of prices for verificagtion and claim function getPriceForMintAndVerify(address _contractAddress) external view returns (uint256) { uint256 claimingPrice = _getCorrectPrice( _pricesForClaiming[_contractAddress], _standardClaimingPrice ); uint256 sumPrice = claimingPrice + _standardPriceForVerification; return sumPrice; } /// ----- PUBLIC METHODS ----- /// /// @notice Used for verification function getMessageHashForOwnerChange( address _address, string memory _claimersName, uint256 _nonce ) public pure returns (bytes32) { return keccak256(abi.encodePacked(_address, _claimersName, _nonce)); } /// @notice Pays For Claim function payForClaim(address _contractAddress, uint256 _tokenId) external { require( _acceptedContracts[_contractAddress], "Contract address is not authorized" ); uint256 claimingPrice = _getCorrectPrice( _pricesForClaiming[_contractAddress], _standardClaimingPrice ); if (claimingPrice != 0) { IERC20 nativeToken = IERC20(_ERC20tokenAddress); require( nativeToken.transferFrom( msg.sender, address(this), claimingPrice ) ); } emit PayedForClaim(msg.sender, _contractAddress, _tokenId); } /// @notice Claim Function function claimByAdmin( address _contractAddress, uint256 _tokenId, string memory _claimersName, bool _isVerified, address _claimer, string memory _verifyStatus ) external onlyOwner { require( _acceptedContracts[_contractAddress], "Contract address is not authorized" ); require( !_isTokenClaimed[_contractAddress][_tokenId], "Can't be claimed again" ); IERC721 token = IERC721(_contractAddress); require( token.ownerOf(_tokenId) == _claimer, "Claimer needs to own this token" ); if (_isBurnable[_contractAddress]) { IERC721Burnable(_contractAddress).burn(_tokenId); } else { token.transferFrom(_claimer, address(this), _tokenId); } _isTokenClaimed[_contractAddress][_tokenId] = true; _claimedIds[_contractAddress].push(_tokenId); _ownersAddresses[_contractAddress][_tokenId][0] = _claimer; if (!_isAddressesOwnerVerified[_claimer]) { _addressesOwners[_claimer] = _claimersName; _isAddressesOwnerVerified[_claimer] = _isVerified; } _ownersCount[_contractAddress][_tokenId]++; emit Claim(_contractAddress, _claimer, _tokenId, bytes(_verifyStatus), _claimersName); } /// @notice Change Onwer function changeOwner( address _contractAddress, uint256 _tokenId, string memory _newOwnersName, address _newOwnerAddress ) external { require(_isTokenClaimed[_contractAddress][_tokenId], "Not claimed yet"); uint256 len = _ownersCount[_contractAddress][_tokenId]; address ownerAddress = _ownersAddresses[_contractAddress][_tokenId][ len - 1 ]; require(ownerAddress == msg.sender, "Not owner"); uint256 changingPrice = _getCorrectPrice( _pricesForOwnerChanging[_contractAddress], _standardOwnerChangingPrice ); if (changingPrice != 0) { IERC20 nativeToken = IERC20(_ERC20tokenAddress); require( nativeToken.transferFrom( msg.sender, address(this), changingPrice ) ); } _ownersAddresses[_contractAddress][_tokenId][len] = _newOwnerAddress; if (!_isAddressesOwnerVerified[_newOwnerAddress]) { _addressesOwners[_newOwnerAddress] = _newOwnersName; } _ownersCount[_contractAddress][_tokenId]++; emit ChangeOwner( _contractAddress, _tokenId, _newOwnerAddress, msg.sender, _newOwnersName ); } /// @notice Verify Owner function verifyOwner( string memory _claimersName, uint256 _nonce, bytes memory _signature ) external { require( verifySignForAuthOwner( msg.sender, _claimersName, _nonce, _signature ), "Signature is not valid" ); // require(!_isAddressesOwnerVerified[msg.sender], "Already verified"); require(!_isNonceRedeemed[_nonce], "Nonce redeemed"); _addressesOwners[msg.sender] = _claimersName; _isAddressesOwnerVerified[msg.sender] = true; _isNonceRedeemed[_nonce] = true; } /// @notice Takes a fee for verification function requestVerification(string memory _nameToVerify) external { IERC20 nativeToken = IERC20(_ERC20tokenAddress); require( nativeToken.transferFrom( msg.sender, address(this), _standardPriceForVerification ) ); require( !_isAddressesOwnerVerified[msg.sender], "Address is already verified" ); _addressesOwners[msg.sender] = _nameToVerify; emit RequestedVerification(msg.sender, _nameToVerify); } /// @notice Takes a fee for verification and pays for claim function payForClaimAndVerification( string memory _nameToVerify, address _contractAddress, uint256 _tokenId ) external { require( !_isAddressesOwnerVerified[msg.sender], "Address is already verified" ); require( _acceptedContracts[_contractAddress], "Contract address is not authorized" ); IERC20 nativeToken = IERC20(_ERC20tokenAddress); uint256 claimingPrice = _getCorrectPrice( _pricesForClaiming[_contractAddress], _standardClaimingPrice ); uint256 sumPrice = claimingPrice + _standardPriceForVerification; if (sumPrice > 0) { require( nativeToken.transferFrom(msg.sender, address(this), sumPrice) ); } _addressesOwners[msg.sender] = _nameToVerify; emit PayedForClaim(msg.sender, _contractAddress, _tokenId); emit RequestedVerification(msg.sender, _nameToVerify); } /// ----- OWNER METHODS ----- /// constructor( uint256 _standardPriceForClaiming, uint256 _standardVerificationPrice, uint256 _standardPriceForOwnerChanging, address _nativeTokenAddress ) { _standardClaimingPrice = _standardPriceForClaiming; _standardPriceForVerification = _standardVerificationPrice; _standardOwnerChangingPrice = _standardPriceForOwnerChanging; _ERC20tokenAddress = _nativeTokenAddress; } /// @notice Change verification price function setVerificationPrice(uint256 _newPrice) external onlyOwner { _standardPriceForVerification = _newPrice; } /// @notice Verify owner by admin function verifyByAdmin( address _userAddress, string memory _newName, bool _isVerifyed ) external onlyOwner { _addressesOwners[_userAddress] = _newName; _isAddressesOwnerVerified[_userAddress] = _isVerifyed; } /// @notice Change erc20 token using for payments function setErc20Token(address _contractAddress) external onlyOwner { _ERC20tokenAddress = _contractAddress; } /// @notice Contract settings /// @param _claimingPrice Set to 1 if you want to use Standard Claiming Price /// @param _changeOwnerPrice Set to 1 if you want to use Stanrad Owner Changing Price function setContractAtributes( address _address, bool _enable, uint256 _claimingPrice, uint256 _changeOwnerPrice, bool _isBurnble ) external onlyOwner { _acceptedContracts[_address] = _enable; _pricesForClaiming[_address] = _claimingPrice; _pricesForOwnerChanging[_address] = _changeOwnerPrice; _isBurnable[_address] = _isBurnble; } /// @notice Edit standard price for claiming function editStandardClaimingPrice(uint256 _price) external onlyOwner { _standardClaimingPrice = _price; } /// @notice Edit standard price for claiming function editStandardChangeOwnerPrice(uint256 _price) external onlyOwner { _standardOwnerChangingPrice = _price; } /// @notice Withdraw/rescue erc20 tokens to owners address function withdrawERC20(address _address) external onlyOwner { uint256 val = IERC20(_address).balanceOf(address(this)); Ierc20(_address).transfer(msg.sender, val); } /// @notice Owner change by admin function changeOwnerByAdmin( address _address, uint256 _id, address _newOwnerAddress, string memory _newOwnersName, bool _verificationStatus ) external onlyOwner { require(_isTokenClaimed[_address][_id], "Not claimed yet"); uint256 len = _ownersCount[_address][_id]; _ownersAddresses[_address][_id][len] = _newOwnerAddress; _addressesOwners[_newOwnerAddress] = _newOwnersName; _isAddressesOwnerVerified[_newOwnerAddress] = _verificationStatus; emit ChangeOwner( _address, _id, _newOwnerAddress, address(0), _newOwnersName ); } /// ----- PRIVATE METHODS ----- /// /// @dev Return second argument when first equals 1 function _getCorrectPrice(uint256 _priceForContract, uint256 _standardPrice) internal pure returns (uint256) { if (_priceForContract == 1) { return _standardPrice; } else return _priceForContract; } function getEthSignedMessageHash(bytes32 _messageHash) internal pure returns (bytes32) { return keccak256( abi.encodePacked( "\x19Ethereum Signed Message:\n32", _messageHash ) ); } function verifySignForAuthOwner( address _address, string memory _claimersName, uint256 _nonce, bytes memory _signature ) internal view returns (bool) { bytes32 messageHash = getMessageHashForOwnerChange( _address, _claimersName, _nonce ); bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash); return recoverSigner(ethSignedMessageHash, _signature) == owner(); } function recoverSigner( bytes32 _ethSignedMessageHash, bytes memory _signature ) internal pure returns (address) { require(_signature.length == 65, "invalid signature length"); bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(_signature, 32)) s := mload(add(_signature, 64)) v := byte(0, mload(add(_signature, 96))) } return ecrecover(_ethSignedMessageHash, v, r, s); } } interface Ierc20 { function transfer(address, uint256) external; } interface IERC721Burnable { function burn(uint256) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @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`, 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 Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_standardPriceForClaiming","type":"uint256"},{"internalType":"uint256","name":"_standardVerificationPrice","type":"uint256"},{"internalType":"uint256","name":"_standardPriceForOwnerChanging","type":"uint256"},{"internalType":"address","name":"_nativeTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"_newOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_prevOwner","type":"address"},{"indexed":false,"internalType":"string","name":"_newOwnersName","type":"string"}],"name":"ChangeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_verificationStatus","type":"bytes"},{"indexed":false,"internalType":"string","name":"_claimersName","type":"string"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_claimer","type":"address"},{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"PayedForClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_requester","type":"address"},{"indexed":false,"internalType":"string","name":"_name","type":"string"}],"name":"RequestedVerification","type":"event"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_newOwnersName","type":"string"},{"internalType":"address","name":"_newOwnerAddress","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_newOwnerAddress","type":"address"},{"internalType":"string","name":"_newOwnersName","type":"string"},{"internalType":"bool","name":"_verificationStatus","type":"bool"}],"name":"changeOwnerByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_claimersName","type":"string"},{"internalType":"bool","name":"_isVerified","type":"bool"},{"internalType":"address","name":"_claimer","type":"address"},{"internalType":"string","name":"_verifyStatus","type":"string"}],"name":"claimByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"editStandardChangeOwnerPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"editStandardClaimingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAddressOwnerInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getAllTokenHoldersAddressesHistory","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getAllTokenHoldersNamesHistory","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getChangeOwnerPriceForContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getClaimedCountOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getClaimedIdsOfCollection","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getClaimingPriceForContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getLastOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"string","name":"_claimersName","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getMessageHashForOwnerChange","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_position","type":"uint256"}],"name":"getOwnerOfTokenByPosition","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getOwnersCountOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"getPriceForMintAndVerify","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceForVerification","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStandardClaimingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isBurnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isContractAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"isNonceRedeemed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isTokenClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"payForClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nameToVerify","type":"string"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"payForClaimAndVerification","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nameToVerify","type":"string"}],"name":"requestVerification","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"},{"internalType":"uint256","name":"_claimingPrice","type":"uint256"},{"internalType":"uint256","name":"_changeOwnerPrice","type":"uint256"},{"internalType":"bool","name":"_isBurnble","type":"bool"}],"name":"setContractAtributes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"setErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setVerificationPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"string","name":"_newName","type":"string"},{"internalType":"bool","name":"_isVerifyed","type":"bool"}],"name":"verifyByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_claimersName","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"verifyOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002bf338038062002bf38339810160408190526200003491620000c3565b6200003f3362000073565b600193909355600391909155600255600480546001600160a01b0319166001600160a01b0390921691909117905562000114565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060808587031215620000da57600080fd5b845160208601516040870151606088015192965090945092506001600160a01b03811681146200010957600080fd5b939692955090935050565b612acf80620001246000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063cf348417116100ad578063e843c8701161007c578063e843c87014610525578063ec82c68414610538578063f2fde38b1461054b578063f4f3b2001461055e578063f4f90dea1461057157600080fd5b8063cf348417146104d9578063d77f73be146104ec578063e0c8bf90146104ff578063e4df0e881461051257600080fd5b806393857db1116100f457806393857db1146104475780639903c6bb1461046a578063a2aa574a14610493578063b2796db7146104b3578063bad3afe9146104c657600080fd5b8063715018a61461040957806374ccdc6714610411578063763fe4f1146104245780638da5cb5b1461042c57600080fd5b80633d421ea2116101a85780635361163e116101775780635361163e1461039d578063587765bf146103bd57806361410a6e146103d05780636465165b146103e35780636cbff42a146103f657600080fd5b80633d421ea21461031b5780633e622d8114610347578063423fc0c6146103685780634ed5b8a41461038a57600080fd5b806324464ba3116101e457806324464ba31461029f57806326e5cb69146102b257806336f134ac146102c55780633adf844e146102e557600080fd5b806302950aac14610216578063103aeda71461022b5780631167db631461026c578063183886f31461027e575b600080fd5b610229610224366004612620565b6105aa565b005b610257610239366004612236565b6001600160a01b031660009081526005602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6001545b604051908152602001610263565b61029161028c366004612236565b6106a9565b6040516102639291906128e4565b6102296102ad3660046123b8565b61085c565b6102296102c0366004612236565b6109c8565b6102d86102d336600461238c565b610a14565b6040516102639190612809565b6102706102f336600461238c565b6001600160a01b03919091166000908152600c60209081526040808320938352929052205490565b610257610329366004612236565b6001600160a01b031660009081526008602052604090205460ff1690565b61035a61035536600461253f565b610bcb565b604051610263929190612762565b61037b61037636600461238c565b610ca9565b60405161026393929190612786565b6102296103983660046126a1565b610dcb565b6103b06103ab366004612236565b610dfa565b604051610263919061286b565b6102296103cb3660046125c6565b610eeb565b6102296103de36600461238c565b6110fb565b6102296103f13660046122cf565b611230565b610229610404366004612591565b6112b1565b610229611409565b61022961041f3660046126a1565b61143f565b600354610270565b6000546040516001600160a01b039091168152602001610263565b6102576104553660046126a1565b6000908152600d602052604090205460ff1690565b610270610478366004612236565b6001600160a01b03166000908152600a602052604090205490565b6104a66104a136600461238c565b61146e565b60405161026391906127bc565b6102296104c13660046126a1565b611570565b6102706104d4366004612236565b61159f565b6102706104e7366004612333565b6115c5565b6102296104fa366004612497565b6115fb565b61027061050d366004612236565b6119e9565b610229610520366004612270565b611a2a565b61022961053336600461242b565b611aab565b610270610546366004612236565b611d5e565b610229610559366004612236565b611d84565b61022961056c366004612236565b611e1f565b61025761057f36600461238c565b6001600160a01b03919091166000908152600960209081526040808320938352929052205460ff1690565b6105b633848484611f2a565b6106005760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c99481a5cc81b9bdd081d985b1a5960521b60448201526064015b60405180910390fd5b6000828152600d602052604090205460ff16156106505760405162461bcd60e51b815260206004820152600e60248201526d139bdb98d9481c995919595b595960921b60448201526064016105f7565b336000908152600e60209081526040909120845161067092860190612100565b5050336000908152600f602090815260408083208054600160ff199182168117909255948452600d909252909120805490921617905550565b6001600160a01b0381166000908152600e6020526040812080546060929182916106d2906129de565b80601f01602080910402602001604051908101604052809291908181526020018280546106fe906129de565b801561074b5780601f106107205761010080835404028352916020019161074b565b820191906000526020600020905b81548152906001019060200180831161072e57829003601f168201915b5050505050905080516000141561079b5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d5cd959081e595d60621b60448201526064016105f7565b6001600160a01b0384166000908152600e60209081526040808320600f90925290912054815460ff9091169082906107d2906129de565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe906129de565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b505050505091509250925050915091565b6000546001600160a01b031633146108865760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b038516600090815260096020908152604080832087845290915290205460ff166108eb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818db185a5b5959081e595d608a1b60448201526064016105f7565b6001600160a01b038581166000818152600c60209081526040808320898452825280832054938352600b82528083208984528252808320848452825280832080546001600160a01b0319169589169586179055938252600e8152929020845191926109599290860190612100565b506001600160a01b038481166000908152600f6020526040808220805460ff19168615151790555190918791908916907fe68da012616c07660f96243c3989cf863936f049226f4c3c2ff7b8a1a5f4a3aa906109b89089908990612762565b60405180910390a4505050505050565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016105f79061294a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152600c6020908152604080832084845290915290205460609080610a74576040805160008082526020820190925290610a6b565b6060815260200190600190039081610a565790505b50915050610bc5565b60008167ffffffffffffffff811115610a8f57610a8f612a60565b604051908082528060200260200182016040528015610ac257816020015b6060815260200190600190039081610aad5790505b50905060005b82811015610bc0576001600160a01b038087166000908152600b6020908152604080832089845282528083208584528252808320549093168252600e9052208054610b12906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3e906129de565b8015610b8b5780601f10610b6057610100808354040283529160200191610b8b565b820191906000526020600020905b815481529060010190602001808311610b6e57829003601f168201915b5050505050828281518110610ba257610ba2612a4a565b60200260200101819052508080610bb890612a19565b915050610ac8565b509150505b92915050565b6001600160a01b038084166000908152600b602090815260408083208684528252808320858452825280832054909316808352600e90915291812080549192606092909182918190610c1c906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610c48906129de565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b505050505090509250925050935093915050565b6001600160a01b0382166000908152600c6020908152604080832084845290915281205460609082908190610ce090600190612997565b6001600160a01b038088166000908152600b602090815260408083208a84528252808320858452825280832054909316808352600e8252838320600f909252929091205481549394509192839260ff16908290610d3c906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906129de565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050915094509450945050509250925092565b6000546001600160a01b03163314610df55760405162461bcd60e51b81526004016105f79061294a565b600355565b6001600160a01b0381166000908152600a602052604090205460609080610e355760408051600080825260208201909252905b509392505050565b60008167ffffffffffffffff811115610e5057610e50612a60565b604051908082528060200260200182016040528015610e79578160200160208202803683370190505b50905060005b82811015610e2d576001600160a01b0385166000908152600a60205260409020805482908110610eb157610eb1612a4a565b9060005260206000200154828281518110610ece57610ece612a4a565b602090810291909101015280610ee381612a19565b915050610e7f565b336000908152600f602052604090205460ff1615610f4b5760405162461bcd60e51b815260206004820152601b60248201527f4164647265737320697320616c7265616479207665726966696564000000000060448201526064016105f7565b6001600160a01b03821660009081526005602052604090205460ff16610f835760405162461bcd60e51b81526004016105f790612908565b6004546001600160a01b0383811660009081526006602052604081205460015492909316929091610fb49190611fcf565b9050600060035482610fc6919061297f565b90508015611059576040516323b872dd60e01b81526001600160a01b038416906323b872dd90610ffe9033903090869060040161273e565b602060405180830381600087803b15801561101857600080fd5b505af115801561102c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110509190612574565b61105957600080fd5b336000908152600e60209081526040909120875161107992890190612100565b5060405184906001600160a01b0387169033907f01b732fcb8e4a23c1c36ab9a2566bea474eaa9843d0cf7c611350a766a4bd1f590600090a4336001600160a01b03167f44ca0a554223e3fc116cd86d25545232033394c15f85517ab5dbf572c00f9338876040516110eb91906128d1565b60405180910390a2505050505050565b6001600160a01b03821660009081526005602052604090205460ff166111335760405162461bcd60e51b81526004016105f790612908565b6001600160a01b0382166000908152600660205260408120546001546111599190611fcf565b905080156111f357600480546040516323b872dd60e01b81526001600160a01b039091169182916323b872dd91611196913391309188910161273e565b602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190612574565b6111f157600080fd5b505b60405182906001600160a01b0385169033907f01b732fcb8e4a23c1c36ab9a2566bea474eaa9843d0cf7c611350a766a4bd1f590600090a4505050565b6000546001600160a01b0316331461125a5760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b0383166000908152600e60209081526040909120835161128392850190612100565b506001600160a01b03929092166000908152600f60205260409020805460ff19169215159290921790915550565b600480546003546040516323b872dd60e01b81526001600160a01b039092169283926323b872dd926112e89233923092910161273e565b602060405180830381600087803b15801561130257600080fd5b505af1158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190612574565b61134357600080fd5b336000908152600f602052604090205460ff16156113a35760405162461bcd60e51b815260206004820152601b60248201527f4164647265737320697320616c7265616479207665726966696564000000000060448201526064016105f7565b336000908152600e6020908152604090912083516113c392850190612100565b50336001600160a01b03167f44ca0a554223e3fc116cd86d25545232033394c15f85517ab5dbf572c00f9338836040516113fd91906128d1565b60405180910390a25050565b6000546001600160a01b031633146114335760405162461bcd60e51b81526004016105f79061294a565b61143d6000611fe8565b565b6000546001600160a01b031633146114695760405162461bcd60e51b81526004016105f79061294a565b600255565b6001600160a01b0382166000908152600c60209081526040808320848452909152902054606090806114b0576040805160008082526020820190925290610a6b565b60008167ffffffffffffffff8111156114cb576114cb612a60565b6040519080825280602002602001820160405280156114f4578160200160208202803683370190505b50905060005b82811015610bc0576001600160a01b038087166000908152600b602090815260408083208984528252808320858452909152902054835191169083908390811061154657611546612a4a565b6001600160a01b03909216602092830291909101909101528061156881612a19565b9150506114fa565b6000546001600160a01b0316331461159a5760405162461bcd60e51b81526004016105f79061294a565b600155565b6001600160a01b038116600090815260076020526040812054600254610bc59190611fcf565b60008383836040516020016115dc939291906126ff565b6040516020818303038152906040528051906020012090509392505050565b6000546001600160a01b031633146116255760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b03861660009081526005602052604090205460ff1661165d5760405162461bcd60e51b81526004016105f790612908565b6001600160a01b038616600090815260096020908152604080832088845290915290205460ff16156116ca5760405162461bcd60e51b815260206004820152601660248201527521b0b713ba1031329031b630b4b6b2b21030b3b0b4b760511b60448201526064016105f7565b6040516331a9108f60e11b81526004810186905286906001600160a01b038481169190831690636352211e9060240160206040518083038186803b15801561171157600080fd5b505afa158015611725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117499190612253565b6001600160a01b03161461179f5760405162461bcd60e51b815260206004820152601f60248201527f436c61696d6572206e6565647320746f206f776e207468697320746f6b656e0060448201526064016105f7565b6001600160a01b03871660009081526008602052604090205460ff161561181f57604051630852cd8d60e31b8152600481018790526001600160a01b038816906342966c6890602401600060405180830381600087803b15801561180257600080fd5b505af1158015611816573d6000803e3d6000fd5b50505050611882565b6040516323b872dd60e01b81526001600160a01b038216906323b872dd9061184f90869030908b9060040161273e565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050505b6001600160a01b0380881660008181526009602090815260408083208b84528252808320805460ff19166001908117909155848452600a8352818420805491820181558452828420018b9055928252600b81528282208a83528152828220828052815282822080549488166001600160a01b031990951685179055928152600f90925290205460ff1661195e576001600160a01b0383166000908152600e60209081526040909120865161193892880190612100565b506001600160a01b0383166000908152600f60205260409020805460ff19168515151790555b6001600160a01b0387166000908152600c60209081526040808320898452909152812080549161198d83612a19565b919050555085836001600160a01b0316886001600160a01b03167f9c1cd11058ea649a0578569a5d5368be9d885437b39ad9866188d7c2c26153a185896040516119d89291906128a3565b60405180910390a450505050505050565b6001600160a01b0381166000908152600660205260408120546001548291611a1091611fcf565b9050600060035482611a22919061297f565b949350505050565b6000546001600160a01b03163314611a545760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b039094166000908152600560209081526040808320805496151560ff1997881617905560068252808320949094556007815283822092909255600890915220805492151592909116919091179055565b6001600160a01b038416600090815260096020908152604080832086845290915290205460ff16611b105760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818db185a5b5959081e595d608a1b60448201526064016105f7565b6001600160a01b0384166000818152600c60209081526040808320878452825280832054938352600b8252808320878452909152812081611b52600185612997565b81526020810191909152604001600020546001600160a01b03169050338114611ba95760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105f7565b6001600160a01b038616600090815260076020526040812054600254611bcf9190611fcf565b90508015611c6957600480546040516323b872dd60e01b81526001600160a01b039091169182916323b872dd91611c0c913391309188910161273e565b602060405180830381600087803b158015611c2657600080fd5b505af1158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190612574565b611c6757600080fd5b505b6001600160a01b038781166000908152600b602090815260408083208a84528252808320878452825280832080546001600160a01b0319169489169485179055928252600f9052205460ff16611ce4576001600160a01b0384166000908152600e602090815260409091208651611ce292880190612100565b505b6001600160a01b0387166000908152600c602090815260408083208984529091528120805491611d1383612a19565b9190505550336001600160a01b031686886001600160a01b03167fe68da012616c07660f96243c3989cf863936f049226f4c3c2ff7b8a1a5f4a3aa87896040516119d8929190612762565b6001600160a01b038116600090815260066020526040812054600154610bc59190611fcf565b6000546001600160a01b03163314611dae5760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b038116611e135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f7565b611e1c81611fe8565b50565b6000546001600160a01b03163314611e495760405162461bcd60e51b81526004016105f79061294a565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015611e8b57600080fd5b505afa158015611e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec391906126ba565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb90604401600060405180830381600087803b158015611f0e57600080fd5b505af1158015611f22573d6000803e3d6000fd5b505050505050565b600080611f388686866115c5565b90506000611f93826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050611fa76000546001600160a01b031690565b6001600160a01b0316611fba8286612038565b6001600160a01b031614979650505050505050565b60008260011415611fe1575080610bc5565b5081610bc5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000815160411461208b5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e677468000000000000000060448201526064016105f7565b602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa1580156120eb573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b82805461210c906129de565b90600052602060002090601f01602090048101928261212e5760008555612174565b82601f1061214757805160ff1916838001178555612174565b82800160010185558215612174579182015b82811115612174578251825591602001919060010190612159565b50612180929150612184565b5090565b5b808211156121805760008155600101612185565b600067ffffffffffffffff808411156121b4576121b4612a60565b604051601f8501601f19908116603f011681019082821181831017156121dc576121dc612a60565b816040528093508581528686860111156121f557600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261222057600080fd5b61222f83833560208501612199565b9392505050565b60006020828403121561224857600080fd5b813561222f81612a76565b60006020828403121561226557600080fd5b815161222f81612a76565b600080600080600060a0868803121561228857600080fd5b853561229381612a76565b945060208601356122a381612a8b565b9350604086013592506060860135915060808601356122c181612a8b565b809150509295509295909350565b6000806000606084860312156122e457600080fd5b83356122ef81612a76565b9250602084013567ffffffffffffffff81111561230b57600080fd5b6123178682870161220f565b925050604084013561232881612a8b565b809150509250925092565b60008060006060848603121561234857600080fd5b833561235381612a76565b9250602084013567ffffffffffffffff81111561236f57600080fd5b61237b8682870161220f565b925050604084013590509250925092565b6000806040838503121561239f57600080fd5b82356123aa81612a76565b946020939093013593505050565b600080600080600060a086880312156123d057600080fd5b85356123db81612a76565b94506020860135935060408601356123f281612a76565b9250606086013567ffffffffffffffff81111561240e57600080fd5b61241a8882890161220f565b92505060808601356122c181612a8b565b6000806000806080858703121561244157600080fd5b843561244c81612a76565b935060208501359250604085013567ffffffffffffffff81111561246f57600080fd5b61247b8782880161220f565b925050606085013561248c81612a76565b939692955090935050565b60008060008060008060c087890312156124b057600080fd5b86356124bb81612a76565b955060208701359450604087013567ffffffffffffffff808211156124df57600080fd5b6124eb8a838b0161220f565b9550606089013591506124fd82612a8b565b90935060808801359061250f82612a76565b90925060a0880135908082111561252557600080fd5b5061253289828a0161220f565b9150509295509295509295565b60008060006060848603121561255457600080fd5b833561255f81612a76565b95602085013595506040909401359392505050565b60006020828403121561258657600080fd5b815161222f81612a8b565b6000602082840312156125a357600080fd5b813567ffffffffffffffff8111156125ba57600080fd5b611a228482850161220f565b6000806000606084860312156125db57600080fd5b833567ffffffffffffffff8111156125f257600080fd5b6125fe8682870161220f565b935050602084013561260f81612a76565b929592945050506040919091013590565b60008060006060848603121561263557600080fd5b833567ffffffffffffffff8082111561264d57600080fd5b6126598783880161220f565b945060208601359350604086013591508082111561267657600080fd5b508401601f8101861361268857600080fd5b61269786823560208401612199565b9150509250925092565b6000602082840312156126b357600080fd5b5035919050565b6000602082840312156126cc57600080fd5b5051919050565b600081518084526126eb8160208601602086016129ae565b601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff198460601b168152600083516127298160148501602088016129ae565b60149201918201929092526034019392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0383168152604060208201819052600090611a22908301846126d3565b6001600160a01b03841681526060602082018190526000906127aa908301856126d3565b90508215156040830152949350505050565b6020808252825182820181905260009190848201906040850190845b818110156127fd5783516001600160a01b0316835292840192918401916001016127d8565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561285e57603f1988860301845261284c8583516126d3565b94509285019290850190600101612830565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156127fd57835183529284019291840191600101612887565b6040815260006128b660408301856126d3565b82810360208401526128c881856126d3565b95945050505050565b60208152600061222f60208301846126d3565b6040815260006128f760408301856126d3565b905082151560208301529392505050565b60208082526022908201527f436f6e74726163742061646472657373206973206e6f7420617574686f72697a604082015261195960f21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561299257612992612a34565b500190565b6000828210156129a9576129a9612a34565b500390565b60005b838110156129c95781810151838201526020016129b1565b838111156129d8576000848401525b50505050565b600181811c908216806129f257607f821691505b60208210811415612a1357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612a2d57612a2d612a34565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611e1c57600080fd5b8015158114611e1c57600080fdfea2646970667358221220f13b37e5f392a9c413ae809df7ce5e6c27f6bc0c327c97713003b39a4e24dd3a64736f6c63430008060033000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003cb71f51fc558000000000000000000000000000000000000000000000000021e19e0c9bab24000000000000000000000000000003758e00b100876c854636ef8db61988931bb8025
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063cf348417116100ad578063e843c8701161007c578063e843c87014610525578063ec82c68414610538578063f2fde38b1461054b578063f4f3b2001461055e578063f4f90dea1461057157600080fd5b8063cf348417146104d9578063d77f73be146104ec578063e0c8bf90146104ff578063e4df0e881461051257600080fd5b806393857db1116100f457806393857db1146104475780639903c6bb1461046a578063a2aa574a14610493578063b2796db7146104b3578063bad3afe9146104c657600080fd5b8063715018a61461040957806374ccdc6714610411578063763fe4f1146104245780638da5cb5b1461042c57600080fd5b80633d421ea2116101a85780635361163e116101775780635361163e1461039d578063587765bf146103bd57806361410a6e146103d05780636465165b146103e35780636cbff42a146103f657600080fd5b80633d421ea21461031b5780633e622d8114610347578063423fc0c6146103685780634ed5b8a41461038a57600080fd5b806324464ba3116101e457806324464ba31461029f57806326e5cb69146102b257806336f134ac146102c55780633adf844e146102e557600080fd5b806302950aac14610216578063103aeda71461022b5780631167db631461026c578063183886f31461027e575b600080fd5b610229610224366004612620565b6105aa565b005b610257610239366004612236565b6001600160a01b031660009081526005602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6001545b604051908152602001610263565b61029161028c366004612236565b6106a9565b6040516102639291906128e4565b6102296102ad3660046123b8565b61085c565b6102296102c0366004612236565b6109c8565b6102d86102d336600461238c565b610a14565b6040516102639190612809565b6102706102f336600461238c565b6001600160a01b03919091166000908152600c60209081526040808320938352929052205490565b610257610329366004612236565b6001600160a01b031660009081526008602052604090205460ff1690565b61035a61035536600461253f565b610bcb565b604051610263929190612762565b61037b61037636600461238c565b610ca9565b60405161026393929190612786565b6102296103983660046126a1565b610dcb565b6103b06103ab366004612236565b610dfa565b604051610263919061286b565b6102296103cb3660046125c6565b610eeb565b6102296103de36600461238c565b6110fb565b6102296103f13660046122cf565b611230565b610229610404366004612591565b6112b1565b610229611409565b61022961041f3660046126a1565b61143f565b600354610270565b6000546040516001600160a01b039091168152602001610263565b6102576104553660046126a1565b6000908152600d602052604090205460ff1690565b610270610478366004612236565b6001600160a01b03166000908152600a602052604090205490565b6104a66104a136600461238c565b61146e565b60405161026391906127bc565b6102296104c13660046126a1565b611570565b6102706104d4366004612236565b61159f565b6102706104e7366004612333565b6115c5565b6102296104fa366004612497565b6115fb565b61027061050d366004612236565b6119e9565b610229610520366004612270565b611a2a565b61022961053336600461242b565b611aab565b610270610546366004612236565b611d5e565b610229610559366004612236565b611d84565b61022961056c366004612236565b611e1f565b61025761057f36600461238c565b6001600160a01b03919091166000908152600960209081526040808320938352929052205460ff1690565b6105b633848484611f2a565b6106005760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c99481a5cc81b9bdd081d985b1a5960521b60448201526064015b60405180910390fd5b6000828152600d602052604090205460ff16156106505760405162461bcd60e51b815260206004820152600e60248201526d139bdb98d9481c995919595b595960921b60448201526064016105f7565b336000908152600e60209081526040909120845161067092860190612100565b5050336000908152600f602090815260408083208054600160ff199182168117909255948452600d909252909120805490921617905550565b6001600160a01b0381166000908152600e6020526040812080546060929182916106d2906129de565b80601f01602080910402602001604051908101604052809291908181526020018280546106fe906129de565b801561074b5780601f106107205761010080835404028352916020019161074b565b820191906000526020600020905b81548152906001019060200180831161072e57829003601f168201915b5050505050905080516000141561079b5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d5cd959081e595d60621b60448201526064016105f7565b6001600160a01b0384166000908152600e60209081526040808320600f90925290912054815460ff9091169082906107d2906129de565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe906129de565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b505050505091509250925050915091565b6000546001600160a01b031633146108865760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b038516600090815260096020908152604080832087845290915290205460ff166108eb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818db185a5b5959081e595d608a1b60448201526064016105f7565b6001600160a01b038581166000818152600c60209081526040808320898452825280832054938352600b82528083208984528252808320848452825280832080546001600160a01b0319169589169586179055938252600e8152929020845191926109599290860190612100565b506001600160a01b038481166000908152600f6020526040808220805460ff19168615151790555190918791908916907fe68da012616c07660f96243c3989cf863936f049226f4c3c2ff7b8a1a5f4a3aa906109b89089908990612762565b60405180910390a4505050505050565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016105f79061294a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152600c6020908152604080832084845290915290205460609080610a74576040805160008082526020820190925290610a6b565b6060815260200190600190039081610a565790505b50915050610bc5565b60008167ffffffffffffffff811115610a8f57610a8f612a60565b604051908082528060200260200182016040528015610ac257816020015b6060815260200190600190039081610aad5790505b50905060005b82811015610bc0576001600160a01b038087166000908152600b6020908152604080832089845282528083208584528252808320549093168252600e9052208054610b12906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3e906129de565b8015610b8b5780601f10610b6057610100808354040283529160200191610b8b565b820191906000526020600020905b815481529060010190602001808311610b6e57829003601f168201915b5050505050828281518110610ba257610ba2612a4a565b60200260200101819052508080610bb890612a19565b915050610ac8565b509150505b92915050565b6001600160a01b038084166000908152600b602090815260408083208684528252808320858452825280832054909316808352600e90915291812080549192606092909182918190610c1c906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610c48906129de565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b505050505090509250925050935093915050565b6001600160a01b0382166000908152600c6020908152604080832084845290915281205460609082908190610ce090600190612997565b6001600160a01b038088166000908152600b602090815260408083208a84528252808320858452825280832054909316808352600e8252838320600f909252929091205481549394509192839260ff16908290610d3c906129de565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906129de565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050915094509450945050509250925092565b6000546001600160a01b03163314610df55760405162461bcd60e51b81526004016105f79061294a565b600355565b6001600160a01b0381166000908152600a602052604090205460609080610e355760408051600080825260208201909252905b509392505050565b60008167ffffffffffffffff811115610e5057610e50612a60565b604051908082528060200260200182016040528015610e79578160200160208202803683370190505b50905060005b82811015610e2d576001600160a01b0385166000908152600a60205260409020805482908110610eb157610eb1612a4a565b9060005260206000200154828281518110610ece57610ece612a4a565b602090810291909101015280610ee381612a19565b915050610e7f565b336000908152600f602052604090205460ff1615610f4b5760405162461bcd60e51b815260206004820152601b60248201527f4164647265737320697320616c7265616479207665726966696564000000000060448201526064016105f7565b6001600160a01b03821660009081526005602052604090205460ff16610f835760405162461bcd60e51b81526004016105f790612908565b6004546001600160a01b0383811660009081526006602052604081205460015492909316929091610fb49190611fcf565b9050600060035482610fc6919061297f565b90508015611059576040516323b872dd60e01b81526001600160a01b038416906323b872dd90610ffe9033903090869060040161273e565b602060405180830381600087803b15801561101857600080fd5b505af115801561102c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110509190612574565b61105957600080fd5b336000908152600e60209081526040909120875161107992890190612100565b5060405184906001600160a01b0387169033907f01b732fcb8e4a23c1c36ab9a2566bea474eaa9843d0cf7c611350a766a4bd1f590600090a4336001600160a01b03167f44ca0a554223e3fc116cd86d25545232033394c15f85517ab5dbf572c00f9338876040516110eb91906128d1565b60405180910390a2505050505050565b6001600160a01b03821660009081526005602052604090205460ff166111335760405162461bcd60e51b81526004016105f790612908565b6001600160a01b0382166000908152600660205260408120546001546111599190611fcf565b905080156111f357600480546040516323b872dd60e01b81526001600160a01b039091169182916323b872dd91611196913391309188910161273e565b602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190612574565b6111f157600080fd5b505b60405182906001600160a01b0385169033907f01b732fcb8e4a23c1c36ab9a2566bea474eaa9843d0cf7c611350a766a4bd1f590600090a4505050565b6000546001600160a01b0316331461125a5760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b0383166000908152600e60209081526040909120835161128392850190612100565b506001600160a01b03929092166000908152600f60205260409020805460ff19169215159290921790915550565b600480546003546040516323b872dd60e01b81526001600160a01b039092169283926323b872dd926112e89233923092910161273e565b602060405180830381600087803b15801561130257600080fd5b505af1158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190612574565b61134357600080fd5b336000908152600f602052604090205460ff16156113a35760405162461bcd60e51b815260206004820152601b60248201527f4164647265737320697320616c7265616479207665726966696564000000000060448201526064016105f7565b336000908152600e6020908152604090912083516113c392850190612100565b50336001600160a01b03167f44ca0a554223e3fc116cd86d25545232033394c15f85517ab5dbf572c00f9338836040516113fd91906128d1565b60405180910390a25050565b6000546001600160a01b031633146114335760405162461bcd60e51b81526004016105f79061294a565b61143d6000611fe8565b565b6000546001600160a01b031633146114695760405162461bcd60e51b81526004016105f79061294a565b600255565b6001600160a01b0382166000908152600c60209081526040808320848452909152902054606090806114b0576040805160008082526020820190925290610a6b565b60008167ffffffffffffffff8111156114cb576114cb612a60565b6040519080825280602002602001820160405280156114f4578160200160208202803683370190505b50905060005b82811015610bc0576001600160a01b038087166000908152600b602090815260408083208984528252808320858452909152902054835191169083908390811061154657611546612a4a565b6001600160a01b03909216602092830291909101909101528061156881612a19565b9150506114fa565b6000546001600160a01b0316331461159a5760405162461bcd60e51b81526004016105f79061294a565b600155565b6001600160a01b038116600090815260076020526040812054600254610bc59190611fcf565b60008383836040516020016115dc939291906126ff565b6040516020818303038152906040528051906020012090509392505050565b6000546001600160a01b031633146116255760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b03861660009081526005602052604090205460ff1661165d5760405162461bcd60e51b81526004016105f790612908565b6001600160a01b038616600090815260096020908152604080832088845290915290205460ff16156116ca5760405162461bcd60e51b815260206004820152601660248201527521b0b713ba1031329031b630b4b6b2b21030b3b0b4b760511b60448201526064016105f7565b6040516331a9108f60e11b81526004810186905286906001600160a01b038481169190831690636352211e9060240160206040518083038186803b15801561171157600080fd5b505afa158015611725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117499190612253565b6001600160a01b03161461179f5760405162461bcd60e51b815260206004820152601f60248201527f436c61696d6572206e6565647320746f206f776e207468697320746f6b656e0060448201526064016105f7565b6001600160a01b03871660009081526008602052604090205460ff161561181f57604051630852cd8d60e31b8152600481018790526001600160a01b038816906342966c6890602401600060405180830381600087803b15801561180257600080fd5b505af1158015611816573d6000803e3d6000fd5b50505050611882565b6040516323b872dd60e01b81526001600160a01b038216906323b872dd9061184f90869030908b9060040161273e565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050505b6001600160a01b0380881660008181526009602090815260408083208b84528252808320805460ff19166001908117909155848452600a8352818420805491820181558452828420018b9055928252600b81528282208a83528152828220828052815282822080549488166001600160a01b031990951685179055928152600f90925290205460ff1661195e576001600160a01b0383166000908152600e60209081526040909120865161193892880190612100565b506001600160a01b0383166000908152600f60205260409020805460ff19168515151790555b6001600160a01b0387166000908152600c60209081526040808320898452909152812080549161198d83612a19565b919050555085836001600160a01b0316886001600160a01b03167f9c1cd11058ea649a0578569a5d5368be9d885437b39ad9866188d7c2c26153a185896040516119d89291906128a3565b60405180910390a450505050505050565b6001600160a01b0381166000908152600660205260408120546001548291611a1091611fcf565b9050600060035482611a22919061297f565b949350505050565b6000546001600160a01b03163314611a545760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b039094166000908152600560209081526040808320805496151560ff1997881617905560068252808320949094556007815283822092909255600890915220805492151592909116919091179055565b6001600160a01b038416600090815260096020908152604080832086845290915290205460ff16611b105760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818db185a5b5959081e595d608a1b60448201526064016105f7565b6001600160a01b0384166000818152600c60209081526040808320878452825280832054938352600b8252808320878452909152812081611b52600185612997565b81526020810191909152604001600020546001600160a01b03169050338114611ba95760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105f7565b6001600160a01b038616600090815260076020526040812054600254611bcf9190611fcf565b90508015611c6957600480546040516323b872dd60e01b81526001600160a01b039091169182916323b872dd91611c0c913391309188910161273e565b602060405180830381600087803b158015611c2657600080fd5b505af1158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190612574565b611c6757600080fd5b505b6001600160a01b038781166000908152600b602090815260408083208a84528252808320878452825280832080546001600160a01b0319169489169485179055928252600f9052205460ff16611ce4576001600160a01b0384166000908152600e602090815260409091208651611ce292880190612100565b505b6001600160a01b0387166000908152600c602090815260408083208984529091528120805491611d1383612a19565b9190505550336001600160a01b031686886001600160a01b03167fe68da012616c07660f96243c3989cf863936f049226f4c3c2ff7b8a1a5f4a3aa87896040516119d8929190612762565b6001600160a01b038116600090815260066020526040812054600154610bc59190611fcf565b6000546001600160a01b03163314611dae5760405162461bcd60e51b81526004016105f79061294a565b6001600160a01b038116611e135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f7565b611e1c81611fe8565b50565b6000546001600160a01b03163314611e495760405162461bcd60e51b81526004016105f79061294a565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015611e8b57600080fd5b505afa158015611e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec391906126ba565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb90604401600060405180830381600087803b158015611f0e57600080fd5b505af1158015611f22573d6000803e3d6000fd5b505050505050565b600080611f388686866115c5565b90506000611f93826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050611fa76000546001600160a01b031690565b6001600160a01b0316611fba8286612038565b6001600160a01b031614979650505050505050565b60008260011415611fe1575080610bc5565b5081610bc5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000815160411461208b5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e677468000000000000000060448201526064016105f7565b602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa1580156120eb573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b82805461210c906129de565b90600052602060002090601f01602090048101928261212e5760008555612174565b82601f1061214757805160ff1916838001178555612174565b82800160010185558215612174579182015b82811115612174578251825591602001919060010190612159565b50612180929150612184565b5090565b5b808211156121805760008155600101612185565b600067ffffffffffffffff808411156121b4576121b4612a60565b604051601f8501601f19908116603f011681019082821181831017156121dc576121dc612a60565b816040528093508581528686860111156121f557600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261222057600080fd5b61222f83833560208501612199565b9392505050565b60006020828403121561224857600080fd5b813561222f81612a76565b60006020828403121561226557600080fd5b815161222f81612a76565b600080600080600060a0868803121561228857600080fd5b853561229381612a76565b945060208601356122a381612a8b565b9350604086013592506060860135915060808601356122c181612a8b565b809150509295509295909350565b6000806000606084860312156122e457600080fd5b83356122ef81612a76565b9250602084013567ffffffffffffffff81111561230b57600080fd5b6123178682870161220f565b925050604084013561232881612a8b565b809150509250925092565b60008060006060848603121561234857600080fd5b833561235381612a76565b9250602084013567ffffffffffffffff81111561236f57600080fd5b61237b8682870161220f565b925050604084013590509250925092565b6000806040838503121561239f57600080fd5b82356123aa81612a76565b946020939093013593505050565b600080600080600060a086880312156123d057600080fd5b85356123db81612a76565b94506020860135935060408601356123f281612a76565b9250606086013567ffffffffffffffff81111561240e57600080fd5b61241a8882890161220f565b92505060808601356122c181612a8b565b6000806000806080858703121561244157600080fd5b843561244c81612a76565b935060208501359250604085013567ffffffffffffffff81111561246f57600080fd5b61247b8782880161220f565b925050606085013561248c81612a76565b939692955090935050565b60008060008060008060c087890312156124b057600080fd5b86356124bb81612a76565b955060208701359450604087013567ffffffffffffffff808211156124df57600080fd5b6124eb8a838b0161220f565b9550606089013591506124fd82612a8b565b90935060808801359061250f82612a76565b90925060a0880135908082111561252557600080fd5b5061253289828a0161220f565b9150509295509295509295565b60008060006060848603121561255457600080fd5b833561255f81612a76565b95602085013595506040909401359392505050565b60006020828403121561258657600080fd5b815161222f81612a8b565b6000602082840312156125a357600080fd5b813567ffffffffffffffff8111156125ba57600080fd5b611a228482850161220f565b6000806000606084860312156125db57600080fd5b833567ffffffffffffffff8111156125f257600080fd5b6125fe8682870161220f565b935050602084013561260f81612a76565b929592945050506040919091013590565b60008060006060848603121561263557600080fd5b833567ffffffffffffffff8082111561264d57600080fd5b6126598783880161220f565b945060208601359350604086013591508082111561267657600080fd5b508401601f8101861361268857600080fd5b61269786823560208401612199565b9150509250925092565b6000602082840312156126b357600080fd5b5035919050565b6000602082840312156126cc57600080fd5b5051919050565b600081518084526126eb8160208601602086016129ae565b601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff198460601b168152600083516127298160148501602088016129ae565b60149201918201929092526034019392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0383168152604060208201819052600090611a22908301846126d3565b6001600160a01b03841681526060602082018190526000906127aa908301856126d3565b90508215156040830152949350505050565b6020808252825182820181905260009190848201906040850190845b818110156127fd5783516001600160a01b0316835292840192918401916001016127d8565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561285e57603f1988860301845261284c8583516126d3565b94509285019290850190600101612830565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156127fd57835183529284019291840191600101612887565b6040815260006128b660408301856126d3565b82810360208401526128c881856126d3565b95945050505050565b60208152600061222f60208301846126d3565b6040815260006128f760408301856126d3565b905082151560208301529392505050565b60208082526022908201527f436f6e74726163742061646472657373206973206e6f7420617574686f72697a604082015261195960f21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561299257612992612a34565b500190565b6000828210156129a9576129a9612a34565b500390565b60005b838110156129c95781810151838201526020016129b1565b838111156129d8576000848401525b50505050565b600181811c908216806129f257607f821691505b60208210811415612a1357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612a2d57612a2d612a34565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611e1c57600080fd5b8015158114611e1c57600080fdfea2646970667358221220f13b37e5f392a9c413ae809df7ce5e6c27f6bc0c327c97713003b39a4e24dd3a64736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003cb71f51fc558000000000000000000000000000000000000000000000000021e19e0c9bab24000000000000000000000000000003758e00b100876c854636ef8db61988931bb8025
-----Decoded View---------------
Arg [0] : _standardPriceForClaiming (uint256): 50000000000000000000
Arg [1] : _standardVerificationPrice (uint256): 70000000000000000000
Arg [2] : _standardPriceForOwnerChanging (uint256): 10000000000000000000000
Arg [3] : _nativeTokenAddress (address): 0x3758e00b100876C854636eF8Db61988931BB8025
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000002b5e3af16b1880000
Arg [1] : 000000000000000000000000000000000000000000000003cb71f51fc5580000
Arg [2] : 00000000000000000000000000000000000000000000021e19e0c9bab2400000
Arg [3] : 0000000000000000000000003758e00b100876c854636ef8db61988931bb8025
Deployed Bytecode Sourcemap
228:19166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12256:654;;;;;;:::i;:::-;;:::i;:::-;;2826:157;;;;;;:::i;:::-;-1:-1:-1;;;;;2948:28:0;2921:4;2948:28;;;:18;:28;;;;;;;;;2826:157;;;;13609:14:6;;13602:22;13584:41;;13572:2;13557:18;2826:157:0;;;;;;;;6690:114;6775:22;;6690:114;;;13782:25:6;;;13770:2;13755:18;6690:114:0;13737:76:6;3996:362:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17029:690::-;;;;;;:::i;:::-;;:::i;15632:122::-;;;;;;:::i;:::-;;:::i;4802:530::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3755:175::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3895:22:0;;;;3864:7;3895:22;;;:12;:22;;;;;;;;:27;;;;;;;;;3755:175;7739:112;;;;;;:::i;:::-;-1:-1:-1;;;;;7823:21:0;7800:4;7823:21;;;:11;:21;;;;;;;;;7739:112;4441:307;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3063:463::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15145:126::-;;;;;;:::i;:::-;;:::i;5949:459::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13586:1022::-;;;;;;:::i;:::-;;:::i;8661:724::-;;;;;;:::i;:::-;;:::i;15315:257::-;;;;;;:::i;:::-;;:::i;12961:555::-;;;;;;:::i;:::-;;:::i;1605:92:1:-;;;:::i;16606:126:0:-;;;;;;:::i;:::-;;:::i;7552:120::-;7636:29;;7552:120;;973:85:1;1019:7;1045:6;973:85;;-1:-1:-1;;;;;1045:6:1;;;9893:51:6;;9881:2;9866:18;973:85:1;9848:102:6;3585:118:0;;;;;;:::i;:::-;3649:4;3672:24;;;:16;:24;;;;;;;;;3585:118;6479:157;;;;;;:::i;:::-;-1:-1:-1;;;;;6601:21:0;6571:7;6601:21;;;:11;:21;;;;;:28;;6479:157;5390:490;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16433:118::-;;;;;;:::i;:::-;;:::i;7210:280::-;;;;;;:::i;:::-;;:::i;8379:245::-;;;;;;:::i;:::-;;:::i;9422:1380::-;;;;;;:::i;:::-;;:::i;7923:372::-;;;;;;:::i;:::-;;:::i;15966:412::-;;;;;;:::i;:::-;;:::i;10837:1384::-;;;;;;:::i;:::-;;:::i;6871:267::-;;;;;;:::i;:::-;;:::i;1846:189:1:-;;;;;;:::i;:::-;;:::i;16801:184:0:-;;;;;;:::i;:::-;;:::i;2581:176::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2715:25:0;;;;2688:4;2715:25;;;:15;:25;;;;;;;;:35;;;;;;;;;;;2581:176;12256:654;12417:147;12457:10;12485:13;12516:6;12540:10;12417:22;:147::i;:::-;12396:216;;;;-1:-1:-1;;;12396:216:0;;17206:2:6;12396:216:0;;;17188:21:6;17245:2;17225:18;;;17218:30;-1:-1:-1;;;17264:18:6;;;17257:52;17326:18;;12396:216:0;;;;;;;;;12711:24;;;;:16;:24;;;;;;;;12710:25;12702:52;;;;-1:-1:-1;;;12702:52:0;;17557:2:6;12702:52:0;;;17539:21:6;17596:2;17576:18;;;17569:30;-1:-1:-1;;;17615:18:6;;;17608:44;17669:18;;12702:52:0;17529:164:6;12702:52:0;12781:10;12764:28;;;;:16;:28;;;;;;;;:44;;;;;;;;:::i;:::-;-1:-1:-1;;12844:10:0;12818:37;;;;:25;:37;;;;;;;;:44;;12858:4;-1:-1:-1;;12818:44:0;;;;;;;;12872:24;;;:16;:24;;;;;;:31;;;;;;;;-1:-1:-1;12256:654:0:o;3996:362::-;-1:-1:-1;;;;;4150:26:0;;4105:4;4150:26;;;:16;:26;;;;;4125:52;;4090:13;;4105:4;;;4125:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4195:3;:10;4209:1;4195:15;;4187:48;;;;-1:-1:-1;;;4187:48:0;;16094:2:6;4187:48:0;;;16076:21:6;16133:2;16113:18;;;16106:30;-1:-1:-1;;;16152:18:6;;;16145:50;16212:18;;4187:48:0;16066:170:6;4187:48:0;-1:-1:-1;;;;;4266:26:0;;;;;;:16;:26;;;;;;;;4306:25;:35;;;;;;;4245:106;;4306:35;;;;;4266:26;;4245:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3996:362;;;:::o;17029:690::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;17253:25:0;::::1;;::::0;;;:15:::1;:25;::::0;;;;;;;:30;;;;;;;;;::::1;;17245:58;;;::::0;-1:-1:-1;;;17245:58:0;;18951:2:6;17245:58:0::1;::::0;::::1;18933:21:6::0;18990:2;18970:18;;;18963:30;-1:-1:-1;;;19009:18:6;;;19002:45;19064:18;;17245:58:0::1;18923:165:6::0;17245:58:0::1;-1:-1:-1::0;;;;;17327:22:0;;::::1;17313:11;17327:22:::0;;;:12:::1;:22;::::0;;;;;;;:27;;;;;;;;;17364:26;;;:16:::1;:26:::0;;;;;:31;;;;;;;;:36;;;;;;;;:55;;-1:-1:-1;;;;;;17364:55:0::1;::::0;;::::1;::::0;;::::1;::::0;;17429:34;;;:16:::1;:34:::0;;;;;:51;;17327:27;;17429:51:::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;;17490:43:0;;::::1;;::::0;;;:25:::1;:43;::::0;;;;;:65;;-1:-1:-1;;17490:65:0::1;::::0;::::1;;;::::0;;17570:142;17490:43;;17617:3;;17570:142;;::::1;::::0;::::1;::::0;::::1;::::0;17490:43;;17688:14;;17570:142:::1;:::i;:::-;;;;;;;;17235:484;17029:690:::0;;;;;:::o;15632:122::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;15710:18:0::1;:37:::0;;-1:-1:-1;;;;;;15710:37:0::1;-1:-1:-1::0;;;;;15710:37:0;;;::::1;::::0;;;::::1;::::0;;15632:122::o;4802:530::-;-1:-1:-1;;;;;4965:22:0;;4951:11;4965:22;;;:12;:22;;;;;;;;:27;;;;;;;;;4920:15;;5006:8;5002:61;;5037:15;;;5050:1;5037:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5030:22;;;;;5002:61;5072:19;5107:3;5094:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:39;;5121:13;5144:162;5168:3;5160:5;:11;5144:162;;;-1:-1:-1;;;;;5243:26:0;;;5209:86;5243:26;;;:16;:26;;;;;;;;:31;;;;;;;;:38;;;;;;;;;;;;5209:86;;:16;:86;;;5196:99;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:3;5200:5;5196:10;;;;;;;;:::i;:::-;;;;;;:99;;;;5173:7;;;;;:::i;:::-;;;;5144:162;;;-1:-1:-1;5322:3:0;-1:-1:-1;;4802:530:0;;;;;:::o;4441:307::-;-1:-1:-1;;;;;4636:26:0;;;4579:7;4636:26;;;:16;:26;;;;;;;;:31;;;;;;;;:42;;;;;;;;;;;;4710:30;;;:16;:30;;;;;;4688:53;;4579:7;;4588:13;;4636:42;;;;4710:30;;4688:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4441:307;;;;;;:::o;3063:463::-;-1:-1:-1;;;;;3269:22:0;;3178:7;3269:22;;;:12;:22;;;;;;;;:27;;;;;;;;;3199:13;;3178:7;;;;3269:31;;3299:1;;3269:31;:::i;:::-;-1:-1:-1;;;;;3333:26:0;;;3310:20;3333:26;;;:16;:26;;;;;;;;:31;;;;;;;;:36;;;;;;;;;;;;3426:30;;;:16;:30;;;;;3470:25;:39;;;;;;;;3379:140;;3255:45;;-1:-1:-1;3333:36:0;;;;3470:39;;;3426:30;;3379:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3063:463;;;;;:::o;15145:126::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;15223:29:0::1;:41:::0;15145:126::o;5949:459::-;-1:-1:-1;;;;;6095:21:0;;6081:11;6095:21;;;:11;:21;;;;;:28;6049:16;;6137:8;6133:62;;6168:16;;;6182:1;6168:16;;;;;;;;;;;-1:-1:-1;6161:23:0;5949:459;-1:-1:-1;;;5949:459:0:o;6133:62::-;6204:20;6241:3;6227:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6227:18:0;;6204:41;;6255:13;6278:104;6302:3;6294:5;:11;6278:104;;;-1:-1:-1;;;;;6343:21:0;;;;;;:11;:21;;;;;:28;;6365:5;;6343:28;;;;;;:::i;:::-;;;;;;;;;6330:3;6334:5;6330:10;;;;;;;;:::i;:::-;;;;;;;;;;:41;6307:7;;;;:::i;:::-;;;;6278:104;;13586:1022;13792:10;13766:37;;;;:25;:37;;;;;;;;13765:38;13744:112;;;;-1:-1:-1;;;13744:112:0;;19295:2:6;13744:112:0;;;19277:21:6;19334:2;19314:18;;;19307:30;19373:29;19353:18;;;19346:57;19420:18;;13744:112:0;19267:177:6;13744:112:0;-1:-1:-1;;;;;13887:36:0;;;;;;:18;:36;;;;;;;;13866:117;;;;-1:-1:-1;;;13866:117:0;;;;;;;:::i;:::-;14021:18;;-1:-1:-1;;;;;14105:36:0;;;13993:18;14105:36;;;:18;:36;;;;;;14021:18;14155:22;14021:18;;;;;13993;;14075:112;;14105:36;14075:16;:112::i;:::-;14051:136;;14197:16;14232:29;;14216:13;:45;;;;:::i;:::-;14197:64;-1:-1:-1;14276:12:0;;14272:143;;14329:61;;-1:-1:-1;;;14329:61:0;;-1:-1:-1;;;;;14329:24:0;;;;;:61;;14354:10;;14374:4;;14381:8;;14329:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14304:100;;;;;;14442:10;14425:28;;;;:16;:28;;;;;;;;:44;;;;;;;;:::i;:::-;-1:-1:-1;14485:53:0;;14529:8;;-1:-1:-1;;;;;14485:53:0;;;14499:10;;14485:53;;;;;14575:10;-1:-1:-1;;;;;14553:48:0;;14587:13;14553:48;;;;;;:::i;:::-;;;;;;;;13734:874;;;13586:1022;;;:::o;8661:724::-;-1:-1:-1;;;;;8766:36:0;;;;;;:18;:36;;;;;;;;8745:117;;;;-1:-1:-1;;;8745:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8926:36:0;;8872:21;8926:36;;;:18;:36;;;;;;8976:22;;8896:112;;8926:36;8896:16;:112::i;:::-;8872:136;-1:-1:-1;9022:18:0;;9018:293;;9084:18;;;9142:144;;-1:-1:-1;;;9142:144:0;;-1:-1:-1;;;;;9084:18:0;;;;;;9142:24;;:144;;9188:10;;9228:4;;9255:13;;9142:144;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9117:183;;;;;;9042:269;9018:293;9325:53;;9369:8;;-1:-1:-1;;;;;9325:53:0;;;9339:10;;9325:53;;;;;8735:650;8661:724;;:::o;15315:257::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;15461:30:0;::::1;;::::0;;;:16:::1;:30;::::0;;;;;;;:41;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;;15512:39:0;;;::::1;;::::0;;;:25:::1;:39;::::0;;;;:53;;-1:-1:-1;;15512:53:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;-1:-1:-1;15315:257:0:o;12961:555::-;13066:18;;;13217:29;;13116:144;;-1:-1:-1;;;13116:144:0;;-1:-1:-1;;;;;13066:18:0;;;;;;13116:24;;:144;;13158:10;;13194:4;;13217:29;13116:144;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13095:175;;;;;;13328:10;13302:37;;;;:25;:37;;;;;;;;13301:38;13280:112;;;;-1:-1:-1;;;13280:112:0;;19295:2:6;13280:112:0;;;19277:21:6;19334:2;19314:18;;;19307:30;19373:29;19353:18;;;19346:57;19420:18;;13280:112:0;19267:177:6;13280:112:0;13419:10;13402:28;;;;:16;:28;;;;;;;;:44;;;;;;;;:::i;:::-;;13483:10;-1:-1:-1;;;;;13461:48:0;;13495:13;13461:48;;;;;;:::i;:::-;;;;;;;;13028:488;12961:555;:::o;1605:92:1:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;16606:126:0:-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;16689:27:0::1;:36:::0;16606:126::o;5390:490::-;-1:-1:-1;;;;;5558:22:0;;5544:11;5558:22;;;:12;:22;;;;;;;;:27;;;;;;;;;5512:16;;5599:8;5595:62;;5630:16;;;5644:1;5630:16;;;;;;;;;;;;5595:62;5666:20;5703:3;5689:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5689:18:0;;5666:41;;5717:13;5740:114;5764:3;5756:5;:11;5740:114;;;-1:-1:-1;;;;;5805:26:0;;;;;;;:16;:26;;;;;;;;:31;;;;;;;;:38;;;;;;;;;5792:10;;5805:38;;;5792:3;;5837:5;;5792:10;;;;;;:::i;:::-;-1:-1:-1;;;;;5792:51:0;;;:10;;;;;;;;;;;:51;5769:7;;;;:::i;:::-;;;;5740:114;;16433:118;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;16513:22:0::1;:31:::0;16433:118::o;7210:280::-;-1:-1:-1;;;;;7391:33:0;;7315:7;7391:33;;;:23;:33;;;;;;7442:27;;7357:126;;7391:33;7357:16;:126::i;8379:245::-;8531:7;8584:8;8594:13;8609:6;8567:49;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8557:60;;;;;;8550:67;;8379:245;;;;;:::o;9422:1380::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;9686:36:0;::::1;;::::0;;;:18:::1;:36;::::0;;;;;::::1;;9665:117;;;;-1:-1:-1::0;;;9665:117:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9814:33:0;::::1;;::::0;;;:15:::1;:33;::::0;;;;;;;:43;;;;;;;;;::::1;;9813:44;9792:113;;;::::0;-1:-1:-1;;;9792:113:0;;15336:2:6;9792:113:0::1;::::0;::::1;15318:21:6::0;15375:2;15355:18;;;15348:30;-1:-1:-1;;;15394:18:6;;;15387:52;15456:18;;9792:113:0::1;15308:172:6::0;9792:113:0::1;9987:23;::::0;-1:-1:-1;;;9987:23:0;;::::1;::::0;::::1;13782:25:6::0;;;9939:16:0;;-1:-1:-1;;;;;9987:35:0;;::::1;::::0;:13;;::::1;::::0;::::1;::::0;13755:18:6;;9987:23:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9987:35:0::1;;9966:113;;;::::0;-1:-1:-1;;;9966:113:0;;16443:2:6;9966:113:0::1;::::0;::::1;16425:21:6::0;16482:2;16462:18;;;16455:30;16521:33;16501:18;;;16494:61;16572:18;;9966:113:0::1;16415:181:6::0;9966:113:0::1;-1:-1:-1::0;;;;;10094:29:0;::::1;;::::0;;;:11:::1;:29;::::0;;;;;::::1;;10090:192;;;10139:48;::::0;-1:-1:-1;;;10139:48:0;;::::1;::::0;::::1;13782:25:6::0;;;-1:-1:-1;;;;;10139:38:0;::::1;::::0;::::1;::::0;13755:18:6;;10139:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10090:192;;;10218:53;::::0;-1:-1:-1;;;10218:53:0;;-1:-1:-1;;;;;10218:18:0;::::1;::::0;::::1;::::0;:53:::1;::::0;10237:8;;10255:4:::1;::::0;10262:8;;10218:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10090:192;-1:-1:-1::0;;;;;10292:33:0;;::::1;;::::0;;;:15:::1;:33;::::0;;;;;;;:43;;;;;;;;:50;;-1:-1:-1;;10292:50:0::1;10338:4;10292:50:::0;;::::1;::::0;;;10352:29;;;:11:::1;:29:::0;;;;;:44;;;;::::1;::::0;;;;;;;::::1;::::0;;;10406:34;;;:16:::1;:34:::0;;;;;:44;;;;;;;;:47;;;;;;;;:58;;;;::::1;-1:-1:-1::0;;;;;;10406:58:0;;::::1;::::0;::::1;::::0;;10480:35;;;:25:::1;:35:::0;;;;;;10292:50:::1;10480:35;10475:172;;-1:-1:-1::0;;;;;10531:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;:42;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;;10587:35:0;::::1;;::::0;;;:25:::1;:35;::::0;;;;:49;;-1:-1:-1;;10587:49:0::1;::::0;::::1;;;::::0;;10475:172:::1;-1:-1:-1::0;;;;;10658:30:0;::::1;;::::0;;;:12:::1;:30;::::0;;;;;;;:40;;;;;;;;:42;;;::::1;::::0;::::1;:::i;:::-;;;;;;10749:8;10739;-1:-1:-1::0;;;;;10715:80:0::1;10721:16;-1:-1:-1::0;;;;;10715:80:0::1;;10765:13;10781;10715:80;;;;;;;:::i;:::-;;;;;;;;9655:1147;9422:1380:::0;;;;;;:::o;7923:372::-;-1:-1:-1;;;;;8107:36:0;;8030:7;8107:36;;;:18;:36;;;;;;8157:22;;8030:7;;8077:112;;:16;:112::i;:::-;8053:136;;8199:16;8234:29;;8218:13;:45;;;;:::i;:::-;8199:64;7923:372;-1:-1:-1;;;;7923:372:0:o;15966:412::-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;16171:28:0;;::::1;;::::0;;;:18:::1;:28;::::0;;;;;;;:38;;;::::1;;-1:-1:-1::0;;16171:38:0;;::::1;;::::0;;16219:18:::1;:28:::0;;;;;:45;;;;16274:23:::1;:33:::0;;;;;:53;;;;16337:11:::1;:21:::0;;;;:34;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;15966:412::o;10837:1384::-;-1:-1:-1;;;;;11023:33:0;;;;;;:15;:33;;;;;;;;:43;;;;;;;;;;;11015:71;;;;-1:-1:-1;;;11015:71:0;;18951:2:6;11015:71:0;;;18933:21:6;18990:2;18970:18;;;18963:30;-1:-1:-1;;;19009:18:6;;;19002:45;19064:18;;11015:71:0;18923:165:6;11015:71:0;-1:-1:-1;;;;;11111:30:0;;11097:11;11111:30;;;:12;:30;;;;;;;;:40;;;;;;;;;11184:34;;;:16;:34;;;;;:44;;;;;;;;11097:11;11242:7;11248:1;11111:40;11242:7;:::i;:::-;11184:75;;;;;;;;;;;-1:-1:-1;11184:75:0;;-1:-1:-1;;;;;11184:75:0;;-1:-1:-1;11294:10:0;11278:26;;11270:48;;;;-1:-1:-1;;;11270:48:0;;18261:2:6;11270:48:0;;;18243:21:6;18300:1;18280:18;;;18273:29;-1:-1:-1;;;18318:18:6;;;18311:39;18367:18;;11270:48:0;18233:158:6;11270:48:0;-1:-1:-1;;;;;11383:41:0;;11329:21;11383:41;;;:23;:41;;;;;;11438:27;;11353:122;;11383:41;11353:16;:122::i;:::-;11329:146;-1:-1:-1;11489:18:0;;11485:293;;11551:18;;;11609:144;;-1:-1:-1;;;11609:144:0;;-1:-1:-1;;;;;11551:18:0;;;;;;11609:24;;:144;;11655:10;;11695:4;;11722:13;;11609:144;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11584:183;;;;;;11509:269;11485:293;-1:-1:-1;;;;;11787:34:0;;;;;;;:16;:34;;;;;;;;:44;;;;;;;;:49;;;;;;;;:68;;-1:-1:-1;;;;;;11787:68:0;;;;;;;;;11871:43;;;:25;:43;;;;;;11866:126;;-1:-1:-1;;;;;11930:34:0;;;;;;:16;:34;;;;;;;;:51;;;;;;;;:::i;:::-;;11866:126;-1:-1:-1;;;;;12002:30:0;;;;;;:12;:30;;;;;;;;:40;;;;;;;;:42;;;;;;:::i;:::-;;;;;;12166:10;-1:-1:-1;;;;;12059:155:0;12114:8;12084:16;-1:-1:-1;;;;;12059:155:0;;12136:16;12190:14;12059:155;;;;;;;:::i;6871:267::-;-1:-1:-1;;;;;7049:28:0;;6973:7;7049:28;;;:18;:28;;;;;;7095:22;;7015:116;;7049:28;7015:16;:116::i;1846:189:1:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:1;::::1;1926:73;;;::::0;-1:-1:-1;;;1926:73:1;;15687:2:6;1926:73:1::1;::::0;::::1;15669:21:6::0;15726:2;15706:18;;;15699:30;15765:34;15745:18;;;15738:62;-1:-1:-1;;;15816:18:6;;;15809:36;15862:19;;1926:73:1::1;15659:228:6::0;1926:73:1::1;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;16801:184:0:-;1019:7:1;1045:6;-1:-1:-1;;;;;1045:6:1;665:10:4;1185:23:1;1177:68;;;;-1:-1:-1;;;1177:68:1;;;;;;;:::i;:::-;16885:41:0::1;::::0;-1:-1:-1;;;16885:41:0;;16920:4:::1;16885:41;::::0;::::1;9893:51:6::0;16871:11:0::1;::::0;-1:-1:-1;;;;;16885:26:0;::::1;::::0;::::1;::::0;9866:18:6;;16885:41:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16936:42;::::0;-1:-1:-1;;;16936:42:0;;16962:10:::1;16936:42;::::0;::::1;11232:51:6::0;11299:18;;;11292:34;;;16871:55:0;;-1:-1:-1;;;;;;16936:25:0;::::1;::::0;::::1;::::0;11205:18:6;;16936:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16861:124;16801:184:::0;:::o;18408:485::-;18589:4;18605:19;18627:107;18669:8;18691:13;18718:6;18627:28;:107::i;:::-;18605:129;;18744:28;18775:36;18799:11;18257:124;;9604:66:6;18257:124:0;;;9592:79:6;9687:12;;;9680:28;;;18188:7:0;;9724:12:6;;18257:124:0;;;;;;;;;;;;18230:165;;;;;;18211:184;;18086:316;;;;18775:36;18744:67;;18879:7;1019::1;1045:6;-1:-1:-1;;;;;1045:6:1;;973:85;18879:7:0;-1:-1:-1;;;;;18828:58:0;:47;18842:20;18864:10;18828:13;:47::i;:::-;-1:-1:-1;;;;;18828:58:0;;;18408:485;-1:-1:-1;;;;;;;18408:485:0:o;17822:258::-;17946:7;17973:17;17994:1;17973:22;17969:104;;;-1:-1:-1;18018:14:0;18011:21;;17969:104;-1:-1:-1;18056:17:0;18049:24;;2041:169:1;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:1;;;-1:-1:-1;;;;;;2131:17:1;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2086:124;2041:169;:::o;18899:493:0:-;19023:7;19050:10;:17;19071:2;19050:23;19042:60;;;;-1:-1:-1;;;19042:60:0;;18598:2:6;19042:60:0;;;18580:21:6;18637:2;18617:18;;;18610:30;18676:26;18656:18;;;18649:54;18720:18;;19042:60:0;18570:174:6;19042:60:0;19217:2;19201:19;;;19195:26;19261:2;19245:19;;;19239:26;19313:2;19297:19;;;19291:26;19344:41;;19112:9;19344:41;;;;;;;;;14045:25:6;;;19283:35:0;;14086:18:6;;;14079:45;;;14140:18;;14133:34;;;14183:18;;;14176:34;;;19195:26:0;;19344:41;;14017:19:6;;19344:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19344:41:0;;-1:-1:-1;;19344:41:0;;;18899:493;-1:-1:-1;;;;;;;18899:493:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:6;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:6;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:221::-;693:5;746:3;739:4;731:6;727:17;723:27;713:2;;764:1;761;754:12;713:2;786:79;861:3;852:6;839:20;832:4;824:6;820:17;786:79;:::i;:::-;777:88;703:168;-1:-1:-1;;;703:168:6:o;876:247::-;935:6;988:2;976:9;967:7;963:23;959:32;956:2;;;1004:1;1001;994:12;956:2;1043:9;1030:23;1062:31;1087:5;1062:31;:::i;1128:251::-;1198:6;1251:2;1239:9;1230:7;1226:23;1222:32;1219:2;;;1267:1;1264;1257:12;1219:2;1299:9;1293:16;1318:31;1343:5;1318:31;:::i;1384:655::-;1473:6;1481;1489;1497;1505;1558:3;1546:9;1537:7;1533:23;1529:33;1526:2;;;1575:1;1572;1565:12;1526:2;1614:9;1601:23;1633:31;1658:5;1633:31;:::i;:::-;1683:5;-1:-1:-1;1740:2:6;1725:18;;1712:32;1753:30;1712:32;1753:30;:::i;:::-;1802:7;-1:-1:-1;1856:2:6;1841:18;;1828:32;;-1:-1:-1;1907:2:6;1892:18;;1879:32;;-1:-1:-1;1963:3:6;1948:19;;1935:33;1977:30;1935:33;1977:30;:::i;:::-;2026:7;2016:17;;;1516:523;;;;;;;;:::o;2044:592::-;2128:6;2136;2144;2197:2;2185:9;2176:7;2172:23;2168:32;2165:2;;;2213:1;2210;2203:12;2165:2;2252:9;2239:23;2271:31;2296:5;2271:31;:::i;:::-;2321:5;-1:-1:-1;2377:2:6;2362:18;;2349:32;2404:18;2393:30;;2390:2;;;2436:1;2433;2426:12;2390:2;2459:50;2501:7;2492:6;2481:9;2477:22;2459:50;:::i;:::-;2449:60;;;2561:2;2550:9;2546:18;2533:32;2574:30;2596:7;2574:30;:::i;:::-;2623:7;2613:17;;;2155:481;;;;;:::o;2641:525::-;2728:6;2736;2744;2797:2;2785:9;2776:7;2772:23;2768:32;2765:2;;;2813:1;2810;2803:12;2765:2;2852:9;2839:23;2871:31;2896:5;2871:31;:::i;:::-;2921:5;-1:-1:-1;2977:2:6;2962:18;;2949:32;3004:18;2993:30;;2990:2;;;3036:1;3033;3026:12;2990:2;3059:50;3101:7;3092:6;3081:9;3077:22;3059:50;:::i;:::-;3049:60;;;3156:2;3145:9;3141:18;3128:32;3118:42;;2755:411;;;;;:::o;3171:315::-;3239:6;3247;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3355:9;3342:23;3374:31;3399:5;3374:31;:::i;:::-;3424:5;3476:2;3461:18;;;;3448:32;;-1:-1:-1;;;3258:228:6:o;3491:803::-;3593:6;3601;3609;3617;3625;3678:3;3666:9;3657:7;3653:23;3649:33;3646:2;;;3695:1;3692;3685:12;3646:2;3734:9;3721:23;3753:31;3778:5;3753:31;:::i;:::-;3803:5;-1:-1:-1;3855:2:6;3840:18;;3827:32;;-1:-1:-1;3911:2:6;3896:18;;3883:32;3924:33;3883:32;3924:33;:::i;:::-;3976:7;-1:-1:-1;4034:2:6;4019:18;;4006:32;4061:18;4050:30;;4047:2;;;4093:1;4090;4083:12;4047:2;4116:50;4158:7;4149:6;4138:9;4134:22;4116:50;:::i;:::-;4106:60;;;4218:3;4207:9;4203:19;4190:33;4232:30;4254:7;4232:30;:::i;4299:667::-;4395:6;4403;4411;4419;4472:3;4460:9;4451:7;4447:23;4443:33;4440:2;;;4489:1;4486;4479:12;4440:2;4528:9;4515:23;4547:31;4572:5;4547:31;:::i;:::-;4597:5;-1:-1:-1;4649:2:6;4634:18;;4621:32;;-1:-1:-1;4704:2:6;4689:18;;4676:32;4731:18;4720:30;;4717:2;;;4763:1;4760;4753:12;4717:2;4786:50;4828:7;4819:6;4808:9;4804:22;4786:50;:::i;:::-;4776:60;;;4888:2;4877:9;4873:18;4860:32;4901:33;4926:7;4901:33;:::i;:::-;4430:536;;;;-1:-1:-1;4430:536:6;;-1:-1:-1;;4430:536:6:o;4971:1025::-;5092:6;5100;5108;5116;5124;5132;5185:3;5173:9;5164:7;5160:23;5156:33;5153:2;;;5202:1;5199;5192:12;5153:2;5241:9;5228:23;5260:31;5285:5;5260:31;:::i;:::-;5310:5;-1:-1:-1;5362:2:6;5347:18;;5334:32;;-1:-1:-1;5417:2:6;5402:18;;5389:32;5440:18;5470:14;;;5467:2;;;5497:1;5494;5487:12;5467:2;5520:50;5562:7;5553:6;5542:9;5538:22;5520:50;:::i;:::-;5510:60;;5622:2;5611:9;5607:18;5594:32;5579:47;;5635:30;5657:7;5635:30;:::i;:::-;5684:7;;-1:-1:-1;5743:3:6;5728:19;;5715:33;;5757;5715;5757;:::i;:::-;5809:7;;-1:-1:-1;5869:3:6;5854:19;;5841:33;;5886:16;;;5883:2;;;5915:1;5912;5905:12;5883:2;;5938:52;5982:7;5971:8;5960:9;5956:24;5938:52;:::i;:::-;5928:62;;;5143:853;;;;;;;;:::o;6001:383::-;6078:6;6086;6094;6147:2;6135:9;6126:7;6122:23;6118:32;6115:2;;;6163:1;6160;6153:12;6115:2;6202:9;6189:23;6221:31;6246:5;6221:31;:::i;:::-;6271:5;6323:2;6308:18;;6295:32;;-1:-1:-1;6374:2:6;6359:18;;;6346:32;;6105:279;-1:-1:-1;;;6105:279:6:o;6389:245::-;6456:6;6509:2;6497:9;6488:7;6484:23;6480:32;6477:2;;;6525:1;6522;6515:12;6477:2;6557:9;6551:16;6576:28;6598:5;6576:28;:::i;6639:322::-;6708:6;6761:2;6749:9;6740:7;6736:23;6732:32;6729:2;;;6777:1;6774;6767:12;6729:2;6817:9;6804:23;6850:18;6842:6;6839:30;6836:2;;;6882:1;6879;6872:12;6836:2;6905:50;6947:7;6938:6;6927:9;6923:22;6905:50;:::i;6966:525::-;7053:6;7061;7069;7122:2;7110:9;7101:7;7097:23;7093:32;7090:2;;;7138:1;7135;7128:12;7090:2;7178:9;7165:23;7211:18;7203:6;7200:30;7197:2;;;7243:1;7240;7233:12;7197:2;7266:50;7308:7;7299:6;7288:9;7284:22;7266:50;:::i;:::-;7256:60;;;7366:2;7355:9;7351:18;7338:32;7379:31;7404:5;7379:31;:::i;:::-;7080:411;;7429:5;;-1:-1:-1;;;7481:2:6;7466:18;;;;7453:32;;7080:411::o;7496:738::-;7592:6;7600;7608;7661:2;7649:9;7640:7;7636:23;7632:32;7629:2;;;7677:1;7674;7667:12;7629:2;7717:9;7704:23;7746:18;7787:2;7779:6;7776:14;7773:2;;;7803:1;7800;7793:12;7773:2;7826:50;7868:7;7859:6;7848:9;7844:22;7826:50;:::i;:::-;7816:60;;7923:2;7912:9;7908:18;7895:32;7885:42;;7980:2;7969:9;7965:18;7952:32;7936:48;;8009:2;7999:8;7996:16;7993:2;;;8025:1;8022;8015:12;7993:2;-1:-1:-1;8048:24:6;;8103:4;8095:13;;8091:27;-1:-1:-1;8081:2:6;;8132:1;8129;8122:12;8081:2;8155:73;8220:7;8215:2;8202:16;8197:2;8193;8189:11;8155:73;:::i;:::-;8145:83;;;7619:615;;;;;:::o;8239:180::-;8298:6;8351:2;8339:9;8330:7;8326:23;8322:32;8319:2;;;8367:1;8364;8357:12;8319:2;-1:-1:-1;8390:23:6;;8309:110;-1:-1:-1;8309:110:6:o;8424:184::-;8494:6;8547:2;8535:9;8526:7;8522:23;8518:32;8515:2;;;8563:1;8560;8553:12;8515:2;-1:-1:-1;8586:16:6;;8505:103;-1:-1:-1;8505:103:6:o;8613:257::-;8654:3;8692:5;8686:12;8719:6;8714:3;8707:19;8735:63;8791:6;8784:4;8779:3;8775:14;8768:4;8761:5;8757:16;8735:63;:::i;:::-;8852:2;8831:15;-1:-1:-1;;8827:29:6;8818:39;;;;8859:4;8814:50;;8662:208;-1:-1:-1;;8662:208:6:o;8875:482::-;9117:26;9113:31;9104:6;9100:2;9096:15;9092:53;9087:3;9080:66;9062:3;9175:6;9169:13;9191:62;9246:6;9241:2;9236:3;9232:12;9225:4;9217:6;9213:17;9191:62;:::i;:::-;9312:2;9272:16;;9304:11;;;9297:27;;;;9348:2;9340:11;;9070:287;-1:-1:-1;;;9070:287:6:o;9955:375::-;-1:-1:-1;;;;;10213:15:6;;;10195:34;;10265:15;;;;10260:2;10245:18;;10238:43;10312:2;10297:18;;10290:34;;;;10145:2;10130:18;;10112:218::o;10335:316::-;-1:-1:-1;;;;;10512:32:6;;10494:51;;10581:2;10576;10561:18;;10554:30;;;-1:-1:-1;;10601:44:6;;10626:18;;10618:6;10601:44;:::i;10656:397::-;-1:-1:-1;;;;;10855:32:6;;10837:51;;10924:2;10919;10904:18;;10897:30;;;-1:-1:-1;;10944:44:6;;10969:18;;10961:6;10944:44;:::i;:::-;10936:52;;11038:6;11031:14;11024:22;11019:2;11008:9;11004:18;10997:50;10827:226;;;;;;:::o;11337:658::-;11508:2;11560:21;;;11630:13;;11533:18;;;11652:22;;;11479:4;;11508:2;11731:15;;;;11705:2;11690:18;;;11479:4;11774:195;11788:6;11785:1;11782:13;11774:195;;;11853:13;;-1:-1:-1;;;;;11849:39:6;11837:52;;11944:15;;;;11909:12;;;;11885:1;11803:9;11774:195;;;-1:-1:-1;11986:3:6;;11488:507;-1:-1:-1;;;;;;11488:507:6:o;12000:802::-;12162:4;12191:2;12231;12220:9;12216:18;12261:2;12250:9;12243:21;12284:6;12319;12313:13;12350:6;12342;12335:22;12388:2;12377:9;12373:18;12366:25;;12450:2;12440:6;12437:1;12433:14;12422:9;12418:30;12414:39;12400:53;;12488:2;12480:6;12476:15;12509:1;12519:254;12533:6;12530:1;12527:13;12519:254;;;12626:2;12622:7;12610:9;12602:6;12598:22;12594:36;12589:3;12582:49;12654:39;12686:6;12677;12671:13;12654:39;:::i;:::-;12644:49;-1:-1:-1;12751:12:6;;;;12716:15;;;;12555:1;12548:9;12519:254;;;-1:-1:-1;12790:6:6;;12171:631;-1:-1:-1;;;;;;;12171:631:6:o;12807:632::-;12978:2;13030:21;;;13100:13;;13003:18;;;13122:22;;;12949:4;;12978:2;13201:15;;;;13175:2;13160:18;;;12949:4;13244:169;13258:6;13255:1;13252:13;13244:169;;;13319:13;;13307:26;;13388:15;;;;13353:12;;;;13280:1;13273:9;13244:169;;14221:379;14416:2;14405:9;14398:21;14379:4;14442:44;14482:2;14471:9;14467:18;14459:6;14442:44;:::i;:::-;14534:9;14526:6;14522:22;14517:2;14506:9;14502:18;14495:50;14562:32;14587:6;14579;14562:32;:::i;:::-;14554:40;14388:212;-1:-1:-1;;;;;14388:212:6:o;14605:219::-;14754:2;14743:9;14736:21;14717:4;14774:44;14814:2;14803:9;14799:18;14791:6;14774:44;:::i;14829:300::-;15000:2;14989:9;14982:21;14963:4;15020:44;15060:2;15049:9;15045:18;15037:6;15020:44;:::i;:::-;15012:52;;15114:6;15107:14;15100:22;15095:2;15084:9;15080:18;15073:50;14972:157;;;;;:::o;16601:398::-;16803:2;16785:21;;;16842:2;16822:18;;;16815:30;16881:34;16876:2;16861:18;;16854:62;-1:-1:-1;;;16947:2:6;16932:18;;16925:32;16989:3;16974:19;;16775:224::o;17698:356::-;17900:2;17882:21;;;17919:18;;;17912:30;17978:34;17973:2;17958:18;;17951:62;18045:2;18030:18;;17872:182::o;19631:128::-;19671:3;19702:1;19698:6;19695:1;19692:13;19689:2;;;19708:18;;:::i;:::-;-1:-1:-1;19744:9:6;;19679:80::o;19764:125::-;19804:4;19832:1;19829;19826:8;19823:2;;;19837:18;;:::i;:::-;-1:-1:-1;19874:9:6;;19813:76::o;19894:258::-;19966:1;19976:113;19990:6;19987:1;19984:13;19976:113;;;20066:11;;;20060:18;20047:11;;;20040:39;20012:2;20005:10;19976:113;;;20107:6;20104:1;20101:13;20098:2;;;20142:1;20133:6;20128:3;20124:16;20117:27;20098:2;;19947:205;;;:::o;20157:380::-;20236:1;20232:12;;;;20279;;;20300:2;;20354:4;20346:6;20342:17;20332:27;;20300:2;20407;20399:6;20396:14;20376:18;20373:38;20370:2;;;20453:10;20448:3;20444:20;20441:1;20434:31;20488:4;20485:1;20478:15;20516:4;20513:1;20506:15;20370:2;;20212:325;;;:::o;20542:135::-;20581:3;-1:-1:-1;;20602:17:6;;20599:2;;;20622:18;;:::i;:::-;-1:-1:-1;20669:1:6;20658:13;;20589:88::o;20682:127::-;20743:10;20738:3;20734:20;20731:1;20724:31;20774:4;20771:1;20764:15;20798:4;20795:1;20788:15;20814:127;20875:10;20870:3;20866:20;20863:1;20856:31;20906:4;20903:1;20896:15;20930:4;20927:1;20920:15;20946:127;21007:10;21002:3;20998:20;20995:1;20988:31;21038:4;21035:1;21028:15;21062:4;21059:1;21052:15;21078:131;-1:-1:-1;;;;;21153:31:6;;21143:42;;21133:2;;21199:1;21196;21189:12;21214:118;21300:5;21293:13;21286:21;21279:5;21276:32;21266:2;;21322:1;21319;21312:12
Swarm Source
ipfs://f13b37e5f392a9c413ae809df7ce5e6c27f6bc0c327c97713003b39a4e24dd3a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.