abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) 
        public 
        view 
        virtual 
        override 
        returns (bool) 
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}
function supportsInterface(bytes4 interfaceId) 
    public 
    view 
    virtual 
    override 
    returns (bool) 
{
    return interfaceId == type(IERC165).interfaceId;
}

/**
 * @dev See {IERC165-supportsInterface}.
 */